我正在努力理解下面代码块中的以下错误:
if o == None or t == None:
try:
elif o == 1 and t == 1:
c1 = c1 + 1
elif o == -1 and t == -1:
c2 = c2 + 1
elif o == -1 and t == 1:
i1 = i1 + 1
elif o == 1 and t == -1:
i2 = i2 + 1
return (c1, i1, c2, i2)
错误:
elif o == 1 and t == 1:
^
Syntax error : invalid syntax
任何人都可以指出我做错了什么吗?我在程序中遵循了正确的缩进。
答案 0 :(得分:5)
您的代码中似乎有一个裸try
,这非常会影响您程序的布局。
您在try
语句的代码块中肯定可以if
,但是您需要提供整个内容,例如:
if somethingOrOther():
try:
xyzzy = 42
except:
pass
elif ...
答案 1 :(得分:4)
这是你的代码正确缩进的结构,所以也许现在很明显问题是什么?
if o == None or t == None:
try:
elif o == 1 and t == 1:
c1 = c1 + 1
elif o == -1 and t == -1:
c2 = c2 + 1 elif o == -1 and t == 1:
i1 = i1 + 1
elif o == 1 and t == -1:
i2 = i2 + 1
return (c1, i1, c2, i2)
答案 2 :(得分:3)
修复缩进后
if o == None or t == None:
try:
elif o == 1 and t == 1:
c1 = c1 + 1
elif o == -1 and t == -1:
......
您的代码仍然无效。请注意elif与if。
的缩进方式您无法将尝试拼接到if语句的中间。所有elif语句必须处于相同的嵌套/缩进级别。因此,如果你在if或elif中打开一个try块,你必须在完成if if或elif之前完成它。
你需要这样:
try:
if o is None or t is None:
pass
elif o == 1 and t == 1:
c1 = c1 + 1
elif o == -1 and t == -1:
......
要做的另一点是不要使用相等运算符与None进行比较。你应该使用is来比较单身人士无:
if o is None or t is None:
答案 3 :(得分:0)
您的代码正确,格式错误。
没什么可认真的,但格式在python中是非常有效的,错误的空格数量和它可能会破坏整个代码。用分号组织和标点符号也是关键。
这是正确的格式。
if o == None or t == None:
try:
elif o == 1 and t == 1:
c1 = c1 + 1
elif o == -1 and t == -1:
c2 = c2 + 1
elif o == -1 and t == 1:
i1 = i1 + 1
elif o == 1 and t == -1:
i2 = i2 + 1
except:
...
return (c1, i1, c2, i2)
好问题!这将在整个堆栈溢出周围使用。坚持下去!