2017-02-27 42 views
2

我正在研究一個函數,該函數檢查二進制文件的右邊第四位是否處於活動狀態。Python:將raw_input()轉換爲二進制,然後在函數中使用它

這是我的代碼:

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) 

如果定義自己條目爲二進制(:條目= 0b1001示例)的值將其工作的罰款。

但是我決定讓它更加用戶友好,並要求用戶輸入raw_input()

然後我得到這個錯誤信息:

Traceback (most recent call last): File "python", line 11, in
File "python", line 6, in verifier_bit4 TypeError:
unsupported operand type(s) for &: 'str' and 'int'

我檢查變量「條目」,它的確是一個二進制的,所以我不明白爲什麼我的代碼不能正常工作。

有人幫忙嗎? :)

+1

「我檢查了變量'entry',它確實是一個二進制文件」。但是Python沒有「二進制」類型。我很確定'bin'返回一個字符串。 – Kevin

+0

@Kevin Python的二進制類型可以說是'bool';) – wim

回答

3

其實bin返回數字的字符串表示,在二進制:

>>> bin(123) 
'0b1111011' 

您只需刪除該bin通話,因爲你可能想使用這裏的int反正。

+0

謝謝@wim!我不知道bin()返回一個字符串 –

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) 
-1

,你必須告訴int()一下:

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

然後,像0b0010輸入possibl即

相關問題