为什么我的代码返回我的else:语句?

时间:2015-08-22 07:36:16

标签: python

当我浏览计算器时,它会得到以下结果;

Select operation.
1.Add
2.Subtract
3.Multiply
4.Divide
Enter choice(1/2/3/4):3
Enter first number: 1
Enter second number: 5
Invalid! Input

任何人都可以向我解释为什么它会响应我的其他if语句,我会多次检查代码,加上我已经复制粘贴代码,因为它经过很多挫折后却产生了相同的结果?

# A simple calculator that can add, subtract, multiply and divide.

# define functions
def add(x, y):
 """This function adds two numbers"""
 return x + y

def subtract(x, y):
 """This function subtracts two numbers"""
 return x - y

def multiply(x, y):
 """This function multiplies two numbers"""
 return x * y 

def divide(x, y):
 """This function divides two numbers"""
 return x / y 


# Take input from the user
print ("Select operation.")
print ("1.Add")
print ("2.Subtract")
print ("3.Multiply")
print ("4.Divide")

choice = input("Enter choice(1/2/3/4):")

num1 = int(input("Enter first number: "))
num2 = int(input("Enter second number: "))

if choice == '1':
    print(num,"+",num2,"=", add(num1,num2))

elif choice == '2':
    print(num1,"-",num2,"=", subtract(num1,num2))

elif choice == '3':
    print(num1,"*",num2,"=", multiply(num1,num2))

elif choice == '4':
    print(num1,"/",num2,"=", divide(num1,num2))

else:
    print("Invalid! Input")

1 个答案:

答案 0 :(得分:2)

您正在使用Python 2,其中<xpath expr="//script[@src='/pos_restaurant/static/src/js/notes.js']" position="after"> 评估输入的内容;因此,当您输入input()时,2包含choice int。尝试在当前代码(包括引号)中输入2。它会像你期望的那样行动'2'来行动。

你应该在Python 2上使用2,在Python 3上使用raw_input()。如果你希望你的代码与两者兼容,你可以使用以下代码,之后你可以随时使用{ {1}}:

input()

您还可以使用six包来执行此操作以及许多其他Python 2/3兼容性操作。

在Python 3 input()中,try: input = raw_input # Python 2 except NameError: # We're on Python 3 pass # Do nothing 执行Python 2中的操作,而Python 2的input()则不行。