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

时间:2013-12-17 22:24:31

标签: python python-3.x

我是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()

提前感谢:)

2 个答案:

答案 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