0

p & ~(p & (p - 1))私のコードは、2 の指数をテストしない理由を突き止めるために私がやろうとしているテストです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"
4

2 に答える 2

5

いくつかの問題:

  1. inは Python の予約キーワードであるため、変数名として使用することはできません。
  2. while inp is not -1する必要がありますwhile inp != -1。(inpの代わりに使用しましたin)
  3. getnumber関数は次のように縮小できます。

コード:

def getnumber(strs):
    num = int(strs)
    return -1 if num < 0 else num
于 2013-08-04T14:12:10.093 に答える
3

という変数を宣言することはできません。これは言語in予約語(またはキーワード) であり、メンバーシップをテストする演算子です。コード内で別の名前に変更するだけです。

txt = raw_input("> ")
txt = getnumber(txt)
于 2013-08-04T14:07:29.203 に答える