我是Python的新手,我正在尝试创建一个程序,要求用户执行计算并输入结果。 如果用户是对的,程序会祝贺,如果用户错了,程序只会显示正确的答案
我已经完成了所有工作并且(可能不是最好的代码),我的问题是: 当用户键入任何字母而不是整数时,它会崩溃
import random
def app():
numero1 = random.randint(100000, 1000000)
numero2 = random.randint(100000, 1000000)
if numero1 > numero2:
print('Quanto fa ' + str(numero1) + ' - ' + str(numero2) + '?')
answer = input()
if int(answer) == numero1 - numero2:
print("Esatto")
app()
else:
print ("Sbagliato, fa " + str(numero1 - numero2))
app()
elif numero1 < numero2:
print ('Quanto fa ' + str(numero2) + ' - ' + str(numero1) + '?')
answer = input()
if int(answer) == numero2 - numero1:
print("Esatto")
app()
else:
print ("Sbagliato, fa " + str(numero2 - numero1))
app()
elif numero1 == numero2:
print ('Quanto fa ' + str(numero1) + ' - ' + str(numero2) + '?')
answer = input()
if int(answer) == numero1 - numero2:
print("Esatto")
app()
else:
print ("Sbagliato, fa " + str(numero1 - numero2))
app()
app()
提前感谢:)
答案 0 :(得分:2)
def get_user_int(prompt=""):
while True:
try:
return int(input(prompt))
except ValueError:
pass
然后使用
answer = get_user_int()
你的节目也可能更短
if numero2 > numero1:
numero2, numero1 = numero1, numero2
if get_user_int("{0} - {1} = ?".format(numero1,numero2)) == numero1 - numero2 :
print ("Essato!")
else:
print ("Answer:{0}".format(numero1-numero2)
或者不是检查if int(user_answer) == num1 - num2
,而是可以安全地比较字符串if user_anser == str(num1 - num2)
答案 1 :(得分:0)
您 很可能想要使用input()
函数:
输入([提示])等效于eval(raw_input(prompt))。
此功能不会捕获用户错误。如果输入不是 语法有效,将引发SyntaxError。其他例外 如果评估过程中出现错误,可能会被提出。
如果加载了readline模块,则input()将使用它来提供 详细的线编辑和历史功能。
考虑将raw_input()函数用于用户的常规输入。
input()
允许用户将错误代码输入您的应用程序。
考虑使用raw_input()
有几种方法可以做到这一点(这可以说是更简单的方法之一):
def get_int(prompt=""):
input = -1
while input < 0:
try:
input = int(raw_input("Enter a number:"))
except ValueError as err:
input = -1
# Handle the error?
return input