在另一个If语句中使用If、Elif和Else语句时出现语法错误



我一直在处理一段代码,该代码要求变量数不等于0,否则代码必须以不同的方式运行。当我尝试以下格式时,它返回elif y3!=0:^^^^用音符指向elif,";SyntaxError:无效语法"。

if x2*x1 != 0:
if y2 != 0 and z2 != 0:
#Code
elif y2 != 0:
#Code
elif z2 != 0:
#Code
else:
#Code
elif x3*x2 != 0:
if y3 != 0 and z3 != 0:
#Code
elif y3 != 0:
#Code
elif z3 != 0:
#Code
else:
#Code
elif x4*x3 != 0:
if y4 != 0 and z4 != 0:
#Code
elif y4 != 0:
#Code
elif z4 != 0:
#Code
else:
#Code
elif x5*x4 != 0:
if y5 != 0 and z5 != 0:
#Code
elif y5 != 0:
#Code
elif z4 != 0:
#Code
else:
#Code
else:
#Code

有人知道我如何修复这个代码吗?如果需要,我可以使用";以及";运算符,但这种格式不仅更短,而且更容易理解。谢谢你抽出时间。

您写道:

if y3 != 0 and z3 != 0:
# code1
elif y3 != 0:
# code2

您似乎报告第二次y3测试因语法错误而失败。

以下是观察到这种症状的至少一种可能的解释。

假设code1应该是:

if y3 != 0 and z3 != 0:
z7 = f(g(y3))

但我们写的作业是这样的

z7 = f(g(y3

缺少右括号。

然后会标记语法错误,并可能报告在接下来的一行中,因为解析器正在勇敢地寻找对于闭合圆括号而没有找到它们,然后最终放弃。


这里的对象课程是避免if/elif/elif的长复数条款,因为它们可能会产生不幸的维护负担。几种抽象技术是可用的,包括表查找。


如前所述,原始问题未提供足够的细节来充分回答问题。

最新更新