请在python 2.7中找到以下代码块。
for i in range(len(p_routes)):
if len(p_routes[i]) > 2 :
if p_routes[i][2] == 'No Backup':
K = K + 1
for z in range(len(p_routes[i])):
nbup.write(K + 1 , z , p_routes[i][z])
elif p_routes[i][0][0] == 'E' :
L = L + 1
for z in range(len(p_routes[i])):
ex.write(L, z , (p_routes[i][z])
elif p_routes[i][0][0] == 'G':
M = M + 1
for z in range(len(p_routes[i]))
gh.write(M ,z, p_routes[i][z])
else len(p_routes[i]) < 2:
pass
print "\nFor some reason. "
好吧,我收到语法错误elif p_routes[i][0][0] == 'G':
。我无法弄清楚为什么会出现此错误,因为我认为此行中没有语法错误。
ex
和gh
是在此代码块之前创建的两个Excel工作表变量。 p_routes
是2度列表的列表。格式类似于p_routes = [['prov1' , 'address1' , 'No Backup'] , ['prov2', 'address2', 'Back1', 'Back2' ]]
您可能已经理解,内部列表长度是可变大小。任何建议将不胜感激。抱歉这个愚蠢的问题,但我做了很多搜索,并以多种方式重新格式化我的if..else
块。但每次我收到此错误。
顺便说一下,语法错误是L = L + 1
。滑稽!然后我用L = int(L)
改变了L的类型。现在,这个错误消失了。
答案 0 :(得分:1)
备注:强>
永远不要忘记使用(
)
否则将执行if none of the above case condition was right
,因此您不应对else语句
请勿忘记:
if else for.....
您的代码更改:
for i in range(len(p_routes)):
if len(p_routes[i]) > 2 :
if p_routes[i][2] == 'No Backup':
K = K + 1
for z in range(len(p_routes[i])):
nbup.write(K + 1 , z , p_routes[i][z])
elif p_routes[i][0][0] == 'E' :
L = L + 1
for z in range(len(p_routes[i])):
ex.write(L, z , (p_routes[i][z]))
elif p_routes[i][0][0] == 'G':
M = M + 1
for z in range(len(p_routes[i])):
gh.write(M ,z, p_routes[i][z])
else :
pass
print "\nFor some reason. "
答案 1 :(得分:1)
Vignesh首先指出,当你忘记关闭括号时,你的错误实际上在前一行( )
其次,if,elif,else结构的else子句不需要检查。 这是我前一段时间制作的视频,介绍了如何在python linked to relevant time
中进行选择(可能不相关)
还要记住当前的逻辑,如果:len(p_routes[i])
是2,会发生什么?您目前只检查它是否小于2或大于2.
答案 2 :(得分:0)
如果出现语法错误,请务必查看上一行以确保其正确无误。当你错过了结束)
时,Python一直在下一行寻找它。
有许多方面可以使代码更清晰。例如,当您可以遍历列表本身时,没有必要继续使用range(len(x))
。
希望您能找到以下有用的建议:
for route in p_routes:
length = len(route)
if length > 2 :
if route[2] == 'No Backup':
K += 1
for z in range(length):
nbup.write(K + 1, z, p_routes[i][z])
elif route[0][0] == 'E':
L += 1
for z in range(length):
ex.write(L, z, (p_routes[i][z]))
elif route[0][0] == 'G':
M += 1
for z in range(length):
gh.write(M ,z, p_routes[i][z])
elif length == 2:
print "It is equal to 2"
else:
print "It must be less than 2"
注意,if x > 2
后跟else
,其他意味着价值为<= 2
。
还可以按如下方式向变量添加一个:L += 1
,这是L = L + 1
的简写。