Python - 这个循环是否正确?

时间:2015-04-23 02:17:41

标签: python loops

def add(num1, num2):
    return num1 + num2

def sub(num1, num2):
    return num1 - num2

def multi(num1, num2):
    return num1 * num2

def div(num1, num2):
    return num1 / num2

print("\t\t\tCalculator App")

def main():
    operation = input("\nWhat do you want to do: (+, -, *, /)? ")
    if(operation != "+" and operation != "-" and operation != "*" and operation != "/"):
       #invalid operation
       print("You have entered an invalid key")
    else:
       var1 = int(input("Please number : "))
       var2 = int(input("Please enter another number : "))
       if(operation == "+"):
           print("Answer is: ", add(var1, var2))
       elif(operation == "-"):
           print("Answer is: ", sub(var1, var2))
       elif(operation == "*"):
           print("Answer is: ", multi(var1, var2))
       else:
           print("Answer is: ", div(var1,var2))

main()

rerun = input("ReRun? (y/n)") 
while(rerun == "y"):
    main()
    rerun = input("ReRun? (y/n) ") 
else:
    exit()

阅读书籍,观看视频和自学一直充满挑战。

如果这是循环此程序的正确方法,请告诉我,我确定有其他选择。

2 个答案:

答案 0 :(得分:1)

如果您的意思是在底部重新运行循环,则以下内容可能更清晰:

while True:
    main()
    if input("ReRun? (y/n) ") == 'n':
        break

应该注意的是,如果用户输入了不期望的内容,则默认重新运行。

答案 1 :(得分:0)

我会做类似

的事情
operators = dict()  
operators['+'] = lambda x,y: x+y
operators['-'] = lambda x,y: x-y
operators['*'] = lambda x,y: x*y
operators['/'] = lambda x,y: x/y

def main():
    operation = input("\nWhat do you want to do: (+, -, *, /)? ")

    if operation in operators:
        var1 = int(input("Please number : "))
        var2 = int(input("Please enter another number : "))
        print("Answer is: ", operators[operation](var1, var2))
    else:
        print("You have entered an invalid key")

while True:
    main()
    if input("ReRun? (y/n) ") == 'n':
        break

我相信它更易于扩展,更容易扩展(添加新操作符)