Python 将输入限制为计算器程序中的整数

Python 将输入限制为计算器程序中的整数,python,python-3.x,Python,Python 3.x,我是Python的新手,我正在尝试制作一个程序,要求用户执行计算并输入结果。 如果用户是对的,程序会祝贺,如果用户是错的,程序只会显示正确的答案 我已经完成了所有的工作(可能不是最好的代码),但我的问题是: 当用户键入任何字母而不是整数时,系统崩溃 import random def app(): numero1 = random.randint(100000, 1000000) numero2 = random.randint(100000, 1000000)

我是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()
随机导入
def app():
numero1=random.randint(100000,1000000)
numero2=random.randint(100000,1000000)
如果numero1>numero2:
打印('Quanto fa'+str(numero1)+'-'+str(numero2)+'?'))
答案=输入()
如果int(答案)=numero1-numero2:
印刷品(“埃萨托”)
app()
其他:
打印(“Sbagliato,fa”+str(数字1-数字2))
app()
elif numero1
提前感谢:)

然后使用

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)

或者,如果int(user\u answer)==num1-num2
您可以安全地比较字符串,而不是检查
如果user\u anser==str(num1-num2)

您很可能不想使用
输入()
函数:

输入([prompt])相当于eval(原始输入(prompt))

此函数不捕获用户错误。如果输入不正确 如果语法有效,将引发语法错误。其他例外情况 如果评估过程中出现错误,可能会引发

如果已加载readline模块,则input()将使用它提供 详细的线条编辑和历史特征

考虑使用raw\u input()函数进行用户的常规输入。

input()
允许用户在应用程序中输入错误代码

考虑使用
raw\u input()

有几种方法可以做到这一点(这可以说是一种更简单的方法):

def get_int(prompt=”“):
输入=-1
当输入<0时:
尝试:
输入=int(原始输入(“输入一个数字”))
除ValueError作为错误外:
输入=-1
#处理错误?
返回输入

如果我尝试在提示下输入整数
-1
,会发生什么情况?它会工作,但不会接受它,您需要一个大于等于0的数字来打破循环。如果需要负数,可以在输入<0时省略,然后在为真时省略
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)
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