import math
while True:
try:
user_bin = int(input('\nPlease enter binary number: '), 2)
except ValueError:
print('Please make sure your number contains digits 0-1 only.')
else:
print(user_bin)
我一直在浏览此站点,以查找有关如何完成作业的提示,该作业的基础是让用户输入8位二进制数并将其转换为十进制。或者在不符合要求的情况下弹出无效的输入错误。上面的代码似乎很有趣,因此我对其进行了测试,但我真的不明白代码的哪一部分将二进制转换为十进制。任何关于作业的提示以及解释将不胜感激。
答案 0 :(得分:4)
转换二进制文件的部分是int
。来自the documentation:
如果给出了 base ,则x必须是字符串,
bytes
或bytearray
实例,表示基数 base 中的整数文字。
这意味着int
接受代表整数的字符串,您可以将其告诉其底数。例如。在这里,我们给它"11"
,并告诉它它以基数2
为基础,因此它以十进制返回整数3
。
>>> int("11", 2)
3
请注意,在提供base
参数时,您必须提供一个字符串:
>>> int(11, 2)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: int() can't convert non-string with explicit base
并且您不能使用在给定基数中无效的数字:
>>> int("21", 2)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: invalid literal for int() with base 2: '21'