我正在尝试使用python创建一个用于命令的文本,目前已编码:
L=open('lp0.dat','w')
L.write('Maximize')
for i in range(ndof):
L.write(' '+str(-grad_f[i]))
L.write('\n')
for i in range(ndof):
if i==fix_index[i]:
L.write('s.t 0 =')
for j in range(ndof):
if j==i:
L.write(' 1')
else:
L.write(' 0')
L.write('\n')
elif i%2==0:
L.write('s.t 0.1 >=')
for j in range(ndof):
if j==i:
L.write(' 1')
else:
L.write(' 0')
L.write('\n')
L.write('s.t -0.1 <=')
for j in range(ndof):
if j==i:
L.write(' 1')
else:
L.write(' 0')
L.write('\n')
else:
L.write('s.t 0.15 >=')
for j in range(ndof):
if j==i:
L.write(' 1')
else:
L.write(' 0')
L.write('\n')
L.write('s.t -0.15 <=')
for j in range(ndof):
if j==1:
L.write(' 1')
else:
L.write(' 0')
L.write('\n')
L.close()
应该在每次迭代中写入带有不等号的2行,但如果索引i与数组的元素(fix_index)相同,则它应该只写一行具有相等符号。是的,我知道我犯了这个错误:
if i==fix_index[i]:
因为它自然地显示了Indexerror。数组(fix_index)的形状如下:
fix_index=[0, 1, 2, 3, 4, 5, 28, 29, 30, 31]
所以我想要的是,在迭代中,当索引i与其中一个数字相同时,它应该只写一行=,否则用&gt; =和&lt; =写两行。我尝试在迭代中使用另一个小的for命令进行检查,但代码变得太乱,甚至没有意义。所以我需要一种方法来检查数字是否与数组元素相同。
答案 0 :(得分:0)
您可以使用in
运算符
fix_index=[0, 1, 2, 3, 4, 5, 28, 29, 30, 31]
if 28 in fix_index:
print("28 is in fix_index")