Python:将raw_input()转换为二进制,然后在函数中使用它

时间:2017-02-27 15:58:47

标签: python

我正在研究一个函数,它检查二进制文件中右边第四位是否有效。

这是我的代码:

bit2= 0b1000
entry = bin(int(raw_input("Type a number : ")))


def verifier_bit4(entry):
    if entry & bit2 > 0 :
        return "on"
    else:
        return "off"

print verifier_bit4(entry)

如果将条目的值定义为二进制(例如:entry = 0b1001),它工作正常。

但是我决定让用户更友好,并要求用户输入raw_input()的号码。

然后我收到此错误消息:

  

回溯(最近一次调用最后一次):文件“python”,第11行,在中      文件“python”,第6行,在verifier_bit4中TypeError:
  &:'str'和'int'

的不受支持的操作数类型

我检查了变量'entry',它确实是一个二进制文件,所以我不明白为什么我的代码不起作用。

有人帮忙吗? :)

3 个答案:

答案 0 :(得分:3)

实际上bin以二进制形式返回数字的字符串表示形式:

>>> bin(123)
'0b1111011'

您可以删除该bin来电,因为您可能还想在此处使用int

答案 1 :(得分:1)

对于按位操作数,您不需要二进制文件:

>>> 32 & 8
0
>>> 12 & 8
8

它们是在整数上定义的:

bit2 = 0b1000
entry = int(raw_input("Type a number : "))


def verifier_bit4(entry):
    if entry & bit2 > 0 :
        return "on"
    else:
        return "off"

print verifier_bit4(entry)

答案 2 :(得分:-1)

如果您想让用户在二进制表示中输入数字,您必须告诉int()

entry = int(raw_input("Type a number : "), 2)

然后输入就像0b0010一样。