如何限制Python输入只允许0或1?
我在用Python写一个二进制转换器,想知道怎么限制输入只能是特定的数字。在这个例子中,就是只能输入1和0。所以像101010001是有效的,但44就不行。谢谢。
5 个回答
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的字符都会自动引发一个错误。
0
没有使用正则表达式:
if all(ch in "01" for ch in input_str):
raise ValueError("'{}' is not valid binary".format(input_str))
0
你无法阻止字符串的输入,但你可以在输入后用正则表达式来检查它,并采取相应的措施。抛出一个异常就是一种可能的做法。
import re
if not re.match("^[01]*$", input_value):
raise ValueError("Not a binary number")
1
你需要使用正则表达式。你要让它能够在任何位置匹配到0或者1。这里的正则表达式是[01]*
。
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"