我必须将8位二进制数转换为十进制数。我相信我的转换是正确的,并验证用户是否输入了一个8位二进制数(不多也不少),但我只是在验证用户的输入只有0和1。
任何帮助都会很棒。我觉得我在思考这个问题,但我尝试了一切。
这是我的代码:
while True:
binary = input("Please enter a 8-bit binary number: ")
if len(binary) < 8 or len(binary) > 8:
print("Must be an 8 bit binary!")
else:
print(int(binary, 2))
break
答案 0 :(得分:0)
您正在检查长度,但未验证用户输入。例如,
s ='12345678'是您代码的有效输入。
如果你真的想要验证,你可以做一些简单的事情,比如
s1 = '11010101111'
if s1.count('1') + s1.count('0') == len(s1):
print(int(s1,2))
答案 1 :(得分:0)
如果你是正则表达的粉丝:
import re
s1='10010011'
print(re.match(r'[10]{8}', s1) is None)
这将与10010011
匹配,但不会与110010100
或12345689
或12345678
匹配。
答案 2 :(得分:0)
好的,首先,你要使用这一行:
if len(binary) < 8 or len(binary) > 8:
只是说:
更具可读性if len(binary) != 8
现在我将如何实现您的代码:
while True:
binary = input("Please enter a 8-bit binary number: ")
for item in binary:
if item not in {'0','1'}:
print("Must only contains 0's and 1's !")
break
if len(binary) != 8:
print("Must be an 8 bit binary!")
else:
print(int(binary, 2))
break
请注意,这会检查您所期望的两种验证,同时根据用户的具体错误向用户提供相关信息。