检查python中的输入

时间:2015-01-25 19:45:32

标签: python input

基本上,我要求输入,但是,如果此人没有正确输入,例如他们意外输入split(',')或者不输入5,包括一个逗号,它会出现一个错误,即某些内容未定义。

有没有人知道如何检查输入是否采用正确的格式?

编辑:这是有问题的代码......它与坐标

有关
def EnterCoords():
    coordinates = input("Enter coordinates in the following format x,y").split(',')
    x, y = Coordinates[0], Coordinates[1]

然后我在其他地方的计算中使用x和y值,这会导致错误IndexError: list index out of range因此,如果用户输入错误,是否有办法再次调用该函数,让他们再次尝试

2 个答案:

答案 0 :(得分:2)

鉴于您的更新问题,最好的方法是使用try / except

def enter_coords():
    while True:
        try:
            # Use `raw_input` for Python 2.x
            x, y = input('Enter coordinates ...: ').split(',')
            return int(x), int(y) # maybe use `float` here?
        except ValueError as e:
            pass

继续循环直到成功返回。使用x, y = - 您要求只解压缩两个值(少或多会引发ValueError),如果成功,则尝试返回int等效值那些值,再次,如果它们不适合int s,那么你得到一个ValueError ...然后你忽略该错误并重复循环直到成功返回。

更优秀的方法和使用此方法的原则详见:Asking the user for input until they give a valid response

答案 1 :(得分:-1)

编辑:刚刚意识到你并不是在寻找只有alpha的字符串。


检查逗号,请使用以下任意一项: 有多种方法可以解决这个问题:

使用in运算符

使用in运算符检查字符串中的逗号:

if "," in str:
 <code on true condition>

示例:

In [8]: if "," in "Hello World!":
   ...:     print "Contains Comma"
   ...:     

In [9]: if "," in "Hello,World":
   ...:     print "Contains Comma"
   ...:     
Contains Comma

-OR -

异常处理

您可以使用try ... except块来检查错误,&#39;,&#39;如詹姆斯泰勒所暗示的那样不存在于字符串中。 请参阅处理异常的文档: https://docs.python.org/2/tutorial/errors.html#handling-exceptions

-OR -

<强>正则表达式

正如Malik Brahimi在评论中所建议的那样 - &#34;不是检查特定格式,而是尝试搜索特定值&#34;:

data = raw_input('Enter a few values: ') # let's say 1, 3, 4.5, 5,
nums = []

for entry in re.findall('[0-9.]+', data):
    nums.append(float(entry))

print nums # now just numbers regardless of commas