用python制作计算器,这种方法明智吗?

时间:2018-07-02 19:11:43

标签: python python-3.x

我试图学习用Python编写代码,并试图制作一个计算器。为此,我使用输入来选择哪种计算类型,然后输入要计算的数字。

print ("1. add ; 2. subtract ; 3. multiply ; 4. divide " )
print ("wat is your choise")

choise = input()


if choise    == 1  :
    num_1_1 = input()
    num_2_1 = input()
    anwsr_add = (num_1_1 + num_2_1)
print (anwsr_add) 

并重复其余选项。

这将返回anwsr_add,因为未定义,因此无法打印。这使我相信第二个输入无效,没有给出等于anwsr_add的值。

是否在if流中为这些输入函数添加了额外的代码,或者我是否完全掌握这种方法?

3 个答案:

答案 0 :(得分:1)

这取决于您所使用的python版本。

如果您使用的是python 3,则input()返回的类型为'str',这会导致您的错误。要测试此理论,请尝试使用print(type(choice))看看它返回什么类型。如果返回str,则是您的罪魁祸首。如果没有,请与我们联系,以便我们继续进行调试。我在下面的python 3中发布了解决您的问题的方法,以防万一我无法答复。如果您想自己编写所有内容,请随时忽略它。

choice = int(input('Enter 1 to add, 2 to subtract, 3 to multiply, 4 to divide\n'))
    if 1 <= choice <= 4:
        num1 = int(input('What is the first number? '))
        num2 = int(input('What is the second number? '))
        if choice == 1:
            answer = num1 + num2
        elif choice == 2:
            answer = num1 - num2
        elif choice == 3:
            answer = num1 * num2
        elif choice == 4:
            # In python 3, the answer here would be a float. 
            # In python2, it would be a truncated integer.
            answer = num1 / num2
    else:
        print('This is not a valid operation, goodbye')
    print('Your answer is: ', answer)

答案 1 :(得分:0)

我发现的主要问题是您正在将char数据类型与int数据类型进行比较。当您要求用户输入时,默认情况下,它将存储为字符串。字符串不能与整数进行比较,这就是您要使用if块进行的操作。如果将输入包装在int()调用中,它将把char转换为int数据类型,然后可以与== 1语句进行正确比较。此外,在您的if语句中,您两次调用input(),它还会为您提供一个字符串。这意味着,如果您输入11,您将得到11(如a + b = ab)。要解决此问题,还可以用input()调用包装这些int()语句。我在以下代码中解决了这些问题:

choice = int(input())

if choice == 1:
    num_1_1 = int(input())
    num_2_1 = int(input())
    anwsr_add = (num_1_1 + num_2_1)
print(anwsr_add) 

答案 2 :(得分:-1)

嘿,达莱克,我已经复制了您的代码并获得了以下结果:

1. add ; 2. subtract ; 3. multiply ; 4. divide 
What's your choise?
1
Traceback (most recent call last):
File "C:\Users\timur\AppData\Local\Programs\Python\Python36-32\Game.py", line 10, in <module>
print (anwsr_add)
NameError: name 'anwsr_add' is not defined

发生NameError是因为程序在执行anwsr_add下面的代码时尝试调用if choise == ... 您可以使用此代码。有用。您的代码无法正常工作的原因是您没有在anwr_add方法中调用if choise == ...

choise = input("1. add ; 2. subtract ; 3. multiply ; 4. divide. What's your choise?")
if str(choise) == '1':
    print('First_num:')
    num_1_1 = input()
    print('Second_num:')
    num_2_1 = input()
    anwsr_add = (int(num_1_1) + int(num_2_1))
    print (anwsr_add)