这个python代码有什么问题 - SyntaxError?

时间:2011-11-13 16:54:34

标签: python

每当我输入此代码时,我都会收到错误(我是一个python noob,所以我可能会遗漏一些明显的东西)

def expadd(num, exp):
    while ((num and exp) != (1001)):
        return (num ^ exp) + expadd((num + 1), (exp + 1))
    return 0
buffer = str(expadd(1000, 1000)
total = 0 #error here "syntax error"
for i in range(1,10):
    total = total +  int(buffer[-i])
print total

2 个答案:

答案 0 :(得分:3)

您在前一行缺少右括号:

buffer = str(expadd(1000, 1000)

您的代码也缩进不正确(expadd函数的主体应缩进),但由于错误的位置,我认为这只是因为在此复制/粘贴它。

答案 1 :(得分:2)

除语法错误外,还有一个逻辑错误:

while ((num and exp) != (1001)):

始终为True,因为01都与1001不同。 (num and exp) num检查expTrue 0是否为1 ish(对于数字,如果它们不是True则是这种情况)。结果可能是0False)或1001if),而且它们都与while不同。

然后,@ interjay正确地指出您应该使用if (num != 1001) and (exp != 1001): ,而不是^

你可能意味着

xor

(括号不是必需的,为了清楚起见,我只是添加了它们)

此外,**是二进制>>> 2^4 6 >>> 2**4 16 ,而不是取幂。那是{{1}}运算符:

{{1}}