如何解决这个for loop 循环里的bug?
希望在不大动代码的情况下解决,实在不知道怎么改了🙁
下面是源代码:
def rotate_model(fname_in, fname_out):
import os
if os.path.exists(fname_in)==True:
fp=open(fname_in)
line=fp.read()
fp_f=line.find('f')
line1=line[:fp_f]
line1_list=line1.split(' ')
x=1
for x in line1_list:
line1_list[x]= line1_list[x+1]
line1_list[x+1]=('-'+line1_list[x])
x+=3
return line1_list
fname_out.close()
else:
return -1
try:
with open(r"","r") as f:
ls = f.readlines()
for i in range(len(ls)):
ls[i] = ls[i].split()
for j in range(1,len(ls[i])):
ls[i][j] = eval(ls[i][j])
ls[i][1],ls[i][2] = ls[i][2],-1*ls[i][1]
except:
print("no such file")
你的问题其实只是因为下图中框起来的 '-'+line1_list[x] 报错
line1_list[x]是数值类型,'-'是字符串类型,在python中是不允许数值类型与字符串类型的相加操作的,所以把 '-'+line1_list[x] 改成 -line1_list[x] 就可以了
交换值 3部曲:
t=a
a=b
b=t
def rotate_model(fname_in, fname_out):
# if os.path.exists(fname_in) == True:
# fp = open(fname_in)
# line = fp.read()
# fp_f = line.find('f')
# line1 = line[:fp_f]
# line1_list = line1.split(' ')
line1_list = ['v', '-2.0', '0.0', '0.0\nv', 'v', '0.0', '0.0', '0.0\nv', 'v', '-1.0', '0.0', '0.0\nv', 'v', '0.0',
'0.0', '0.0\nv',
'v', '2.0', '0.0', '0.0\nv', 'v', '1.0', '0.0', '0.0\nv', 'v', '-1.0', '0.0', '0.0\nv', 'v', '1.0',
'0.0', '0.0\nv',
'v', '0.0', '0.0', '0.0\nv']
print(line1_list)
x = 1
for i in enumerate(range(0, len(line1_list), 4)):
t1 = line1_list[x] # 先保留值,避免下边交换被覆盖
line1_list[x] = line1_list[x + 1]
line1_list[x + 1] = -eval(t1) # 数值才能进行计算
x += 4
return line1_list
print('origin:')
print('after:\n', rotate_model('', ''))
你先整理好需求,就是你最终要实现的效果,而不要诉说你不成熟的方案
什么交换后在前面加个负号,万一数据本来就已经有负号了,不变成俩负号了?