我正在用Python构建一个简单的猜谜游戏,当用户输入非整数时,需要显示“Invalid entry”消息。我遇到了一个语法错误,不确定验证整数输入的正确方法。
下面是我的代码中与处理输入相关的部分:
import random
while True:
hidden = random.randrange(1, 5)
try:
guess = int(input("Guess a number between 1 and 5: "))
except ValueError:
print("Invalid Entry. Please enter an integer between 1 and 5.")
continue
# Rest of the guessing logic...
字符串
我尝试使用if语句来检查输入是否为整数,但遇到了语法错误。下面是我得到的错误:
SyntaxError: invalid syntax
型
如何正确检查用户的输入是否为整数,并对非整数输入提示“Invalid entry”消息?
Python中有没有处理这种类型的输入验证的最佳实践?
4条答案
按热度按时间wnavrhmk1#
如果你真的想验证用户输入是一个int,你想保持输入的字符串形式。然后写一个小函数来测试输入。在这里,我将使用一个列表解析和字符串连接和isdigit方法,以确保用户只输入了字符串中的数字0-9,即这个函数返回True(else False)(* 根据下面的Jack Taylor注解修改,也适用于s =“”情况):
字符串
如果你想完全沙箱化用户,可以将其 Package 在一个循环中,如下所示:
型
如果你想要一个没有函数调用的更简单的版本(参见Jack Taylor的评论),这也可以工作:
型
现在你已经知道了一个int类型的变量,不用担心了。这种验证用户输入的方法如果能持续实现的话,可以省去很多麻烦。
zour9fqk2#
我总是使用这个方法来检查是否有东西不是整数:
Python 3
字符串
Python 2
型
b1zrtrql3#
你需要这样做:
字符串
当你第一次使用
input()
时,你会得到一个字符串。如果你试图通过执行int(input())
将该字符串直接转换为整数,并且如果播放器输入像“abcd”这样的字符串,那么Python将引发异常。型
为了避免这种情况,您必须在try/except block中执行
int(guess)
来处理异常。continue语句跳回到while循环的开始,因此如果使用它,您只需请求一次输入即可。
q7solyqu4#
将用户输入解析为字符串以避免
ValueError
。字符串
上面的代码确保用户输入是1到5之间的正整数。接下来,将用户输入转换为整数以供进一步使用。
另外,如果你想检查python对象/变量的数据类型,那么可以使用
isinstance
方法。示例:型