繁体   English   中英

如何限制python中的输入,使其仅允许0或1?

[英]How do I limit an input in python so it will only allow 0 or 1's?

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

您也可以尝试将其转换为二进制形式的整数,如果失败则打印消息。

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"

您将需要使用正则表达式 您需要使其在任何位置匹配0或1。 在这种情况下,正则表达式为[01]*

您不能阻止输入字符串,但是可以在事实发生后将其与正则表达式进行匹配并采取适当的措施。 引发异常是一种可能性。

import re

if not re.match("^[01]*$", input_value):
    raise ValueError("Not a binary number")

没有正则表达式:

if all(ch in "01" for ch in input_str):
    raise ValueError("'{}' is not valid binary".format(input_str))

正则表达式可以工作,但是简单的迭代也可以:

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。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM