2016-12-06 16 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)行,则您会看到这不是您所期望的值。