我在python中有一个二进制转换器,我想知道如何将输入限制为仅限于某些数字,在这种情况下。只有1或0。因此101010001有效,但44不是例如。感谢。
答案 0 :(得分:7)
您也可以尝试将其转换为整数作为二进制,并在失败时打印消息。
query = raw_input("enter binary number ")
try:
is_bin = int(query,2)
is_bin = True
print "correct number"
except ValueError:
is_bin = False
print "not a binary number"
答案 1 :(得分:1)
您需要使用Regular Expressions。您需要使其在任何位置匹配0或1。在这种情况下,正则表达式是[01]*
答案 2 :(得分:0)
您无法阻止输入字符串,但您可以在事后对正则表达式进行匹配并采取适当的操作。提出异常是一种可能性。
import re
if not re.match("^[01]*$", input_value):
raise ValueError("Not a binary number")
答案 3 :(得分:0)
没有正则表达式:
if all(ch in "01" for ch in input_str):
raise ValueError("'{}' is not valid binary".format(input_str))
答案 4 :(得分:0)
正则表达式有效,但简单迭代也是如此:
def binaryConverter(input_value):
for c in input_value:
if c not in '01':
# do something here, for example:
raise ValueError("Not a binary number")
return int(input_value, 2)
如果您只想进行简单的二进制转换,则可以使用int(input_value, 2)
这会自动为任何不是0或1的字符引发ValueError。