是否为二进制数的条件
Condition for Binary number or not
我正在尝试编写一个简单的程序来将二进制数转换为十进制数。我想先写一个条件是否检查给定的数字是否为二进制。
我该怎么做?
除此之外,程序正常运行没有任何错误,但恐怕当给出一个非二进制数时,它仍然可以完成工作。
Input
print("Binary to Decimal")
bin = input("Give a binary number : ")
bin = [int(i) for i in bin]
powers = [i for i in range(len(bin)-1,-1,-1)]
for i in range(len(bin)):
bin[i] = bin[i] * 2**(powers[i])
decimal = sum(bin)
print("The corresponding Decimal digit is : %d"%(decimal))
输出
Binary to Decimal
Give a binary number : 101
The correspnding Decimal digit is : 5
此外,如果您发现任何更正或想提出任何建议,请随时在下面给我建议。
您可以检查该字符串是否包含任何其他数字而不是 0 和 1,那么它不是二进制数。
尝试 pythonic 方式不是测试,而是尝试转换并在输入错误时捕获异常。这是 Easier to ask for forgiveness than permission prinicple:
b = input("Give a binary number : ")
try:
print(int(b, 2))
except ValueError:
print("not binary")
如果您仍然想检查一个简单的测试是使用 all()
:
if all(n in ('1','0') for n in b):
# it's all 1's and 0's
你可以用正则表达式检查
import re
if re.match("^[01]+$", '011001'):
//then proceed
else:
//do something for non-binary
我正在尝试编写一个简单的程序来将二进制数转换为十进制数。我想先写一个条件是否检查给定的数字是否为二进制。
我该怎么做?
除此之外,程序正常运行没有任何错误,但恐怕当给出一个非二进制数时,它仍然可以完成工作。
Input
print("Binary to Decimal")
bin = input("Give a binary number : ")
bin = [int(i) for i in bin]
powers = [i for i in range(len(bin)-1,-1,-1)]
for i in range(len(bin)):
bin[i] = bin[i] * 2**(powers[i])
decimal = sum(bin)
print("The corresponding Decimal digit is : %d"%(decimal))
输出
Binary to Decimal
Give a binary number : 101
The correspnding Decimal digit is : 5
此外,如果您发现任何更正或想提出任何建议,请随时在下面给我建议。
您可以检查该字符串是否包含任何其他数字而不是 0 和 1,那么它不是二进制数。
尝试 pythonic 方式不是测试,而是尝试转换并在输入错误时捕获异常。这是 Easier to ask for forgiveness than permission prinicple:
b = input("Give a binary number : ")
try:
print(int(b, 2))
except ValueError:
print("not binary")
如果您仍然想检查一个简单的测试是使用 all()
:
if all(n in ('1','0') for n in b):
# it's all 1's and 0's
你可以用正则表达式检查
import re
if re.match("^[01]+$", '011001'):
//then proceed
else:
//do something for non-binary