如何限制python中的输入,以便它只允许0或1?

时间:2014-03-21 12:51:45

标签: python

我在python中有一个二进制转换器,我想知道如何将输入限制为仅限于某些数字,在这种情况下。只有1或0。因此101010001有效,但44不是例如。感谢。

5 个答案:

答案 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。