如何限制python中的输入,使其只允许0或1';s

如何限制python中的输入,使其只允许0或1';s,python,Python,我有一个python中的二进制转换器,我想知道如何将输入限制为某些数字,在这种情况下。只有1或0。所以101010001是有效的,但44不是例如。谢谢。您不能阻止字符串被输入,但您可以在输入后将其与正则表达式进行匹配,并采取适当的操作。提出例外是一种可能性 import re if not re.match("^[01]*$", input_value): raise ValueError("Not a binary number") 不能阻止字符串被输入,但可以在输入后将其与正则表

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

您不能阻止字符串被输入,但您可以在输入后将其与正则表达式进行匹配,并采取适当的操作。提出例外是一种可能性

import re

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

不能阻止字符串被输入,但可以在输入后将其与正则表达式匹配,并采取适当的操作。提出例外是一种可能性

import re

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

您将需要使用。您需要使其在任何位置与0或1匹配。本例中的正则表达式是您需要使用的
[01]*
。您需要使其在任何位置与0或1匹配。本例中的正则表达式是
[01]*
,不带正则表达式:

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

没有正则表达式:

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

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

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"

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

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"

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

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\u value,2)
这将自动为任何非0或1的字符引发ValueError。

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

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。

您可以显示您尝试了什么吗?如果用户尝试输入无效数字,您希望发生什么?程序将转换并给出一个非二进制的完全随机数`你能展示一下你的尝试吗?如果用户试图输入一个无效的数字,你希望发生什么?程序转换并给出一个非二进制的完全随机数`匹配0、1和
|
s字符串的。是元字符,用作OR操作。不在
[
内。单个字符已隐式或加在括号表达式中。匹配0、1和
|
s字符串的。是元字符,用作OR操作。不在
[
。单个字符已经隐式地或在一个括号表达式中。到目前为止,最具python风格的答案是,你击败了我。到目前为止,最具python风格的答案是,你击败了我。为什么要迭代字符串,而不是仅仅捕获由
int
引发的异常,或者干脆让该异常传播?通过相同的日志ic,为什么要使用正则表达式?当我们发布我们的答案时,我们不知道他想要的行为/输出是什么,这只是一个替代方案,对我来说,它比正则表达式更清晰、更简单。我的观点是你在复制
int
已经完成的工作,而不是说迭代不如正则表达式。如果你要调用
int
,如果输入无效,它已经引发了一个异常。我完全同意,但是如果他想返回或修改有问题的字符怎么办?re和iteration允许您这样做,而不仅仅是
int
为什么要迭代字符串,而不仅仅是捕获由
int
引发的异常,或者简单地让异常传播?按照同样的逻辑,为什么要使用正则表达式?当我们发布答案时,我们不知道他想要的行为/输出是什么,这只是一个备选方案tive,对我来说,它比正则表达式更清晰、更简单。我的观点是,你在复制
int
已经完成的工作,并不是说迭代不如正则表达式。如果你要调用
int
,如果输入无效,它就会引发异常。我完全同意,但如果他想返回或修改,该怎么办fy有问题的字符?re和iteration允许您这样做,而不仅仅是
int