python:我该如何做简单的变量声明?

时间:2013-08-04 14:06:06

标签: python

我的代码是测试我试图找出为什么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"

2 个答案:

答案 0 :(得分:5)

几个问题:

  1. in是python中的保留关键字,因此您不能将其用作变量名。
  2. while inp is not -1应为while inp != -1。 (我使用inp代替in
  3. getnumber功能可以简化为:
  4. <强>代码:

    def getnumber(strs):
        num = int(strs)
        return -1 if num < 0 else num
    

答案 1 :(得分:3)

您无法声明名为in的变量,即该语言的reserved word(或关键字),它是测试成员资格的运算符。只需将其重命名为代码中的其他内容:

txt = raw_input("> ")
txt = getnumber(txt)