我被这个巨大的代码段困住了,必须对其进行优化。问题是,我不能让它工作。
if condition1 == 0:
A_value1 = (1/6)
A_value2 = (1/8)
if condition1 == 1:
A_value1 = (1/2)
A_value2 = (1/8)
if condition1 == 2:
A_value1 = (5/6)
A_value2 = (1/8)
if condition1 == 3:
A_value1 = (1/6)
A_value2 = (3/8)
if condition1 == 4:
A_value1 = (1/2)
A_value2 = (3/8)
if condition1 == 5:
A_value1 = (5/6)
A_value2 = (3/8)
if condition1 == 6:
A_value1 = (1/6)
A_value2 = (5/8)
if condition1 == 7:
A_value1 = (1/2)
A_value2 = (5/8)
if condition1 == 8:
A_value1 = (5/6)
A_value2 = (5/8)
if condition2 == 0:
B_value1 = (1/6)
B_value2 = (1/8)
if condition2 == 1:
B_value1 = (1/2)
B_value2 = (1/8)
if condition2 == 2:
B_value1 = (5/6)
B_value2 = (1/8)
if condition2 == 3:
B_value1 = (1/6)
B_value2 = (3/8)
if condition2 == 4:
B_value1 = (1/2)
B_value2 = (3/8)
if condition2 == 5:
B_value1 = (5/6)
B_value2 = (3/8)
if condition2 == 6:
B_value1 = (1/6)
B_value2 = (5/8)
if condition2 == 7:
B_value1 = (1/2)
B_value2 = (5/8)
if condition2 == 8:
B_value1 = (5/6)
B_value2 = (5/8)
if condition3 == 0:
C_value1 = (1/6)
C_value2 = (1/8)
if condition3 == 1:
C_value1 = (1/2)
C_value2 = (1/8)
if condition3 == 2:
C_value1 = (5/6)
C_value2 = (1/8)
if condition3 == 3:
C_value1 = (1/6)
C_value2 = (3/8)
if condition3 == 4:
C_value1 = (1/2)
C_value2 = (3/8)
if condition3 == 5:
C_value1 = (5/6)
C_value2 = (3/8)
if condition3 == 6:
C_value1 = (1/6)
C_value2 = (5/8)
if condition3 == 7:
C_value1 = (1/2)
C_value2 = (5/8)
if condition3 == 8:
C_value1 = (5/6)
C_value2 = (5/8)A_value1、B_value1和C_value1在1/6、3/6和5/6之间交替。
A_value2、B_value2和C_value2在1/8、3/8和5/8之间交替。
我尝试过循环,范围等等,但是我的努力都是徒劳的。它可以在单个循环/范围(?)-segment中完成,还是必须拆分为condition1、condition2和condition3。有什么想法吗?
发布于 2015-11-22 22:07:41
这些条件看起来像是任意的菜单选项,众所周知,它们很难清理。但是,您可以做一些事情。由于这些值在所有条件中都是统一的,因此您可以将它们存储在字典中,并根据需要进行查找。将条件存储在list中,然后构建一个值的list。
c = [condition1, condition2, condition3]
vals = []
lookup = {0:(1/6, 1/8), 1:(1/2, 1/8), 2:(5/6, 1/8), 3:(1/6, 3/8), 4:(1/2, 3/8),
5:(5/6, 3/8), 6:(1/6, 5/8), 7:(1/2, 5/8), 8:(5/6, 5/8)
for i in range(3):
vals.append(lookup[condition[i]])然后将A_value1称为vals[0][0],将C_value2称为vals[2][1],依此类推。
发布于 2015-11-22 22:12:58
您可以引入可能值的列表,并根据条件除以3的余数从值列表中获得A_value1等,并根据条件除以3的整数结果获得A_value2:
values1 = [1/6, 3/6, 5/6]
values2 = [1/8, 3/8, 5/8]
A_value1 = values1[condition1 % 3]
A_value2 = values2[condition1 // 3]
B_value1 = values1[condition2 % 3]
B_value2 = values2[condition2 // 3]
C_value1 = values1[condition3 % 3]
C_value2 = values2[condition3 // 3]发布于 2015-11-22 22:09:49
哇。是的那太可怕了。对于一个简单的解决方案,你可以用你的赋值创建一个硬编码的数组。它们在每个部分中似乎都是相同的。
values = [[(1/6), (1/8)], [(1/2), (1/8)], [(5/6), (5/8)] ....]那么c_value1将是values[condition3][0],c_value2将是values[condition3][1],依此类推。
您可以使用condition value攻击array,例如index。
这只是个想法。
https://stackoverflow.com/questions/33855524
复制相似问题