我的代码是测试我试图找出为什么p & ~(p & (p - 1))
不会测试2的指数。无论如何,解释器在while循环之前不喜欢in = 1
原因。
代码:
def getnumber(str):
num=0
for i in str:
zz = ord(i)-48
if zz<0 or zz>9:
num=-1
break
else:
num=(num*10)+zz
return num
def testexp2(p):
table = {1:1,2:2,4:3,8:4,16:5,32:6,64:7,128:8,256:9}
if p & ~(p & (p - 1)):
print "yes"
else:
print "no"
in = 1
while in is not -1:
in = raw_input("> ")
in = getnumber(in)
if in>-1:
testexp2(in)
else:
print "\nDone\n\n"
答案 0 :(得分:5)
几个问题:
in
是python中的保留关键字,因此您不能将其用作变量名。while inp is not -1
应为while inp != -1
。 (我使用inp
代替in
)getnumber
功能可以简化为:<强>代码:强>
def getnumber(strs):
num = int(strs)
return -1 if num < 0 else num
答案 1 :(得分:3)
您无法声明名为in
的变量,即该语言的reserved word(或关键字),它是测试成员资格的运算符。只需将其重命名为代码中的其他内容:
txt = raw_input("> ")
txt = getnumber(txt)