每当我输入此代码时,我都会收到错误(我是一个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
答案 0 :(得分:3)
您在前一行缺少右括号:
buffer = str(expadd(1000, 1000)
您的代码也缩进不正确(expadd
函数的主体应缩进),但由于错误的位置,我认为这只是因为在此复制/粘贴它。
答案 1 :(得分:2)
除语法错误外,还有一个逻辑错误:
while ((num and exp) != (1001)):
始终为True
,因为0
和1
都与1001
不同。 (num and exp)
num
检查exp
和True
0
是否为1
ish(对于数字,如果它们不是True
则是这种情况)。结果可能是0
(False
)或1001
(if
),而且它们都与while
不同。
然后,@ interjay正确地指出您应该使用if (num != 1001) and (exp != 1001):
,而不是^
。
你可能意味着
xor
(括号不是必需的,为了清楚起见,我只是添加了它们)
此外,**
是二进制>>> 2^4
6
>>> 2**4
16
,而不是取幂。那是{{1}}运算符:
{{1}}