【问题标题】:How can i make the program to rerun itself in python?我怎样才能让程序在python中重新运行?
【发布时间】:2019-06-23 16:32:39
【问题描述】:

我现在是编程的初学者,我知道的基础知识很少。我尝试在 python 中创建一个计算器,它可以工作,但我无法让它重新运行

我在某个网站上尝试过,但一切都太复杂了,我无法理解。

num1 = input("Enter your 1st number: ")
num2 = input("Enter your 2nd number: ")
choose_ope = input("Choose your operator: ")
if choose_ope == '+':
    print(float(num1) + float(num2))
elif choose_ope == '-':
    print(float(num1) - float(num2))
elif choose_ope == '*':
    print(float(num1) * float(num2))
elif choose_ope == '/':
    print(float(num1) / float(num2))

go_again = input("Do you want to go again ? : Y/N\n")
if go_again == 'Y':
    //i want the program to rerun itself here
else:
    print("OK!!")

如果用户输入 Y,我希望计算器重新启动。 详细的答案将不胜感激。谢谢你

【问题讨论】:

  • 是的。我已经了解了while和for。我看不到如何在此处使用 while 或 for 循环。
  • 如果在循环顶部无法测试循环退出条件,则只需使用while True: 进行循环测试。这会创建一个无限循环。但在循环内部,您可以在想要停止时通过执行break 语句来强制退出。

标签: python


【解决方案1】:

当您想停止重复时,循环该代码和 break

while True: # Will start repeating here
    num1 = input("Enter your 1st number: ")
    num2 = input("Enter your 2nd number: ")
    choose_ope = input("Choose your operator: ")
    if choose_ope == '+':
        print(float(num1) + float(num2))
    elif choose_ope == '-':
        print(float(num1) - float(num2))
    elif choose_ope == '*':
        print(float(num1) * float(num2))
    elif choose_ope == '/':
        print(float(num1) / float(num2))

    go_again = input("Do you want to go again ? : Y/N\n")
    if go_again != 'Y':
        print("OK!! Exiting")
        break # break to leave the loop

    # It will loop automatically back to the top otherwise

【讨论】:

    【解决方案2】:

    我们可以通过将 this 写在一个函数中来做到这一点,并将其作为递归函数,如下所示。

    def calculator():
        num1 = input("Enter your 1st number: ")
        num2 = input("Enter your 2nd number: ")
        choose_ope = input("Choose your operator: ")
        if choose_ope == '+':
            print(float(num1) + float(num2))
        elif choose_ope == '-':
            print(float(num1) - float(num2))
        elif choose_ope == '*':
            print(float(num1) * float(num2))
        elif choose_ope == '/':
            print(float(num1) / float(num2))
    
        go_again = input("Do you want to go again ? : Y/N\n")
        if go_again == 'Y':
            calculator()
        else:
            print("OK!!")
    
    calculator()
    

    【讨论】:

    • 我不建议这样做,因为进行递归会不必要地扩大堆栈,降低性能并最终导致程序崩溃。
    【解决方案3】:

    您可以使用while loop 再次运行代码,直到输入不同于Y

    go_again = 'Y'
    
    while go_again == 'Y':
        num1 = input("Enter your 1st number: ")
        num2 = input("Enter your 2nd number: ")
        choose_ope = input("Choose your operator: ")
        if choose_ope == '+':
            print(float(num1) + float(num2))
        elif choose_ope == '-':
            print(float(num1) - float(num2))
        elif choose_ope == '*':
            print(float(num1) * float(num2))
        elif choose_ope == '/':
            print(float(num1) / float(num2))
    
       go_again = input("Do you want to go again ? : Y/N\n")
       if go_again == 'Y':
           print("while loop will run again")
       else:
           print("program will exit")
    

    【讨论】:

      猜你喜欢
      • 2021-05-27
      • 1970-01-01
      • 2013-07-06
      • 1970-01-01
      • 2017-02-02
      • 1970-01-01
      • 1970-01-01
      • 2021-12-30
      • 2010-12-10
      相关资源
      最近更新 更多