2014-12-08 46 views
-1

我无法让我的Python 3创建的程序停止运行我的循环。我究竟做错了什么?输出每个功能后,我需要能够返回到主菜单。无法计算Python 3程序

帮助!

# 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 
    loop = 1 

    while loop ==1: 
     print ("Hi Prof. Shah! Welcome to my Project 3 calculator!") 
     print("Please select an operation.") 
     print("1.Add") 
     print("2.Subtract") 
     print("3.Multiply") 
     print("4.Divide") 
     print("5.Remainder") 
     print("6.Exit") 

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

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

     if choice == '1': 
     print(num1,"+",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)) 

     elif choice == '5': 
     print(num1,"%",num2,"=", remainder(num1,num2)) 

     elif choice == '6':  
     print("Goodbye, Prof. Shah!") 

在此先感谢您的帮助。

+2

请妥善缩进代码,否则我们无法知道其实际作用,因为它是Python的方式。 – Amber 2014-12-08 01:16:20

+0

[Python 3程序中无效的Elif语法错误]的可能重复(http://stackoverflow.com/questions/27347442/invalid-elif-syntax-error-in-python-3-program) – kay 2014-12-08 01:17:45

+0

我试图切割和粘贴我的代码直接来自Python 3,但我一直在Stackoverflow上收到错误消息。有另一种方法吗? – CherylR 2014-12-08 01:19:46

回答

1

您只能将loop的值设置为loop = 1。在稍后的某个时间点,您需要将其更改为1以外的值以退出循环,因为条件为loop == 1

在循环中的适当位置将值loop设置为1以外的值。

+0

这是对问题的正确诊断。请注意,像这样循环的更多Pythonic方法通常是使循环故意无限,使用'while True',然后使用'break'退出循环。虽然有些程序员不喜欢这种风格(他们不喜欢'break',因为它是'goto'的一种形式),所以请谨慎使用它。 – Blckknght 2014-12-08 01:21:27

+0

正确。我的教授不希望我们为这个项目使用休息。 – CherylR 2014-12-08 01:22:50

+0

我试图添加这个,但我不断收到缩进错误。 :elif choice =='6': loop = 0 print(“再见,Shah教授!”) – CherylR 2014-12-08 01:25:06

0

您需要在每次“打印”后添加“break”,以便在打印信息后while循环可以中断。例如:

if choice == '1': 
    print(num1,"+",num2,"=", add(num1,num2)) 
    break 
elif choice == '2': 
    print(num1,"-",num2,"=", subtract(num1,num2)) 
    break 
+0

这是否会在每次打印后将我返回到主菜单? – CherylR 2014-12-08 01:24:31

0

你不改变的loop的价值,它是造成无限循环。

这里有一个建议:

flag = True 
while flag: 
    print ("Hi Prof. Shah! Welcome to my Project 3 calculator!") 
    print("Please select an operation.") 
    print("1.Add") 
    print("2.Subtract") 
    print("3.Multiply") 
    print("4.Divide") 
    print("5.Remainder") 
    print("6.Exit") 
    choice = int(input("Enter choice(1/2/3/4/5/6):")) #dangeeer!! 
    if choice >= 1 and choice < 6: #here you keep inside the loop. 
     x = float(input("First value:")) #dangeeer!! 
     y = float(input("Second value:")) #dangeeer!! 
     if choice == 1 : print(add(x, y)) 
     elif choice == 2: print(subtract(x, y)) 
     elif choice == 3: print(multiply(x, y)) 
     elif choice == 4: print(divide(x, y)) 
     elif choice == 5: print(remainder(x, y)) 
    elif choice == 6: #here you get out of the loop 
     print("Goodbye, Prof. Shah!") 
     flag = False 
    else: 
     print("Choose a number between 1 and 6") 
+0

当我在您的建议后添加了以下代码时,我收到了无效的语法消息:elif == 6:print(Goodbye,Shah!教授) – CherylR 2014-12-08 01:40:50

+0

put'elif choice == 6:flag = False' – 2014-12-08 01:41:49

+0

正确... I添加了这个: 其他:标志=假 ELIF选择== 6:打印(再见,沙阿教授!) – CherylR 2014-12-08 01:47:40