2016-12-06 41 views
-4

我有一個項目,我必須將二進制文件翻譯爲十六進制。和小數如何在Python中使用if/else語句(請勿關閉)

這裏是代碼,它可能不是那麼漂亮的任何幫助,非常感謝: 事情是,當我把1或0它仍然給我︰有一個錯誤,請重新鍵入你的二進制數。從我的代碼

binary = raw_input("What Binary up to 8-bits would you like to use?") 

if len(binary) <= 8: 

    for b in range(1,len(binary)+1): 

     if b ==2 or b==3 or b==4 or b==5 or b==6 or b==7 or b==8 or b==9: 

      print "**There is an error please re-type your binary number. (one's and zero's)**" 
     else: 
      print "Your code is too long! it needs to be 8 or less characters to 
proccess!" 
+2

python已經具有這種內建 - 你可以使用任何你想要的基礎將字符串轉換爲整數。例如,二進制的int(user_input,2)。看看這裏:https://docs.python.org/3/library/functions.html#int – user2839978

+0

@MooingRawr不,OP不會比較二進制。 –

+0

如果'if'語句可以更簡單地寫爲'if 2 <= b <= 9:'' – Barmar

回答

2
for b in range(1, len(binary)+1): 

(一個人的和爲零的)你不是遍歷字符的二進制字符串,你從1迭代到字符串的長度。另外,我認爲你的else塊是過度縮進的。用這個代替:

for b in binary: 

雖然這不會解決所有問題。首先,b將是一個字符的字符串,因此b==2將始終爲假。我建議將b更改爲int,然後查看它是否大於1 - int(b) > 1

但是,真正應該做的是測試每個步驟,但您並不完全確定要確保實際獲得您所期望的。如果您在for循環中插入了print(b)(或用於Python 2的print b)行,則您會看到這不是您所期望的值。