2015-04-23 44 views
-4
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() 

阅读书籍,观看视频和自学一直是一个挑战。Python - 这个循环是否正确?

请让我知道,如果这是循环此程序的正确方法,我敢肯定有其他选择。

+0

是否有程序的任何可观察到的错误? – logic

+0

该程序看起来是一个简单的方法,如果它的工作没有错误,然后看起来不错 – kyrenia

+0

@logic我认为它的作品,但Pycool0是好奇的正确的方法来循环这样的程序? – zfb

回答

1

如果你指的是重新运行循环下底部,大概就是下面的清洁:

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

应当指出的是,它默认为,如果用户输入了一些不希望重新运行。

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 

我相信这是更readeable,更容易扩大(添加新的运营商)

+0

大家好,程序执行完美,没有错误。我研究了各种编程语言,仍然认为我是一个noob,并寻求其他方法。感谢那些提供建议的人。 – Pycool0