基本上,我要求输入,但是,如果此人没有正确输入,例如他们意外输入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
因此,如果用户输入错误,是否有办法再次调用该函数,让他们再次尝试
答案 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