【问题标题】:Python - is this loop correct?Python - 这个循环正确吗?
【发布时间】:2015-04-23 02:17:40
【问题描述】:
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()

看书、看视频和自学一直很有挑战性。

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

【问题讨论】:

  • 您的程序中是否有任何可观察到的错误?
  • 这个程序看起来很简单,如果它运行没有错误,那么我觉得很好
  • @logic 我认为它有效,但 Pycool0 对循环这样的程序的正确方法感到好奇?
  • 这个问题不应该发到codereview.stackexchange.com吗?
  • 如果您使用的是 Python 3,看起来还不错。不过缩进有点过时...

标签: python loops


【解决方案1】:

如果你的意思是在底部重新运行循环,那么下面的内容可能更清晰:

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

需要注意的是,如果用户输入了不期望的内容,它会默认重新运行。

【讨论】:

    【解决方案2】:

    我会做类似的事情

    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
    

    我认为它更易读且更易于扩展(添加新运算符)

    【讨论】:

    • 大家好,程序执行完美,没有错误。我研究了各种编程语言,仍然认为我是菜鸟,并寻求替代方法。感谢提供建议的人。
    猜你喜欢
    • 2016-07-30
    • 2014-06-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-25
    • 1970-01-01
    • 1970-01-01
    • 2019-08-23
    相关资源
    最近更新 更多