Use a set https://docs.python.org/3/library/stdtypes.html#set:
a1 = input("Enter an 8 bit binary number to convert: ")
if set(a1) <= set('01'):
print("Number is binary!")
这仅在以下情况下成立:set(a1)
是一个子集set('01')
:
>>> set('10011') <= set('01')
True
>>> set('10011abc') <= set('01')
False
您也可以只使用异常(并且int() https://docs.python.org/3/library/functions.html#int进行二进制 -> 整数转换):
try:
n1 = int(a1, 2)
except ValueError:
print("Not binary")
else:
print("Number is binary")
print("Denary number is: {}".format(n1))
这样做的另一个优点是可以一步将二进制输入转换为整数。
如果您不想或可以使用int()
,用循环转换回来并使用<<左移 https://docs.python.org/3/reference/expressions.html#shifting-operations对于每个二进制数字,以及|二进制按位或 https://docs.python.org/3/reference/expressions.html#binary-bitwise-operations添加新数字:
n1 = 0
for digit in a1:
n1 = (n1 << 1) | (1 if digit == '1' else 0)
这是一种获取数字的迂回方式,但至少您现在正在使用二进制逻辑。