循环时,询问用户是否要重复程序问题

2024-09-29 23:17:47 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我有一个while循环,询问用户是否想重复这个程序。一切正常,但我尝试了一下,发现在用户重复该程序后,当第二次询问他/她是否想重复时,我选择了否。但该程序仍然重复,尽管它打印该程序正在关闭,我如何修复此问题

编辑:我已经通过使用return更改break和在main()之后添加return来修复它

def main():
  endFlag = False
  while endFlag == False:        
    # your code here
    print_intro()
    mode, message=get_input()
    ui = str.upper(input("Would you like to repeat the program again? Y/N:  "))
    while True:
      if ui == "Y":
       print(" ")
       main()
      elif ui == 'N':
        endFlag = True
        print("Program is closing...")
        break
      else:
        print("wrong input, try again")
        ui = str.upper(input("Would you like to repeat the program again? Y/N:  "))

Tags: 用户程序falseuiinputreturnmainupper
3条回答

问题是,你在这里做递归,也就是说,你在main()内部调用方法main(),试图用你所做的方式打破它是行不通的(好吧,你知道:) 第二,你不需要在第一个循环中有一个永久的循环,你可以通过一个简单的循环和中断来完成。 这是:

def print_intro():
    intro = "Welcome to Wolmorse\nThis program encodes and decodes Morse code."
    print(intro)


def get_input():
    return 'bla', 'bla-bla-bla'


def main():
    while True:
        # your code here
        print_intro()
        mode, message = get_input()
        ui = str.upper(input("Would you like to repeat the program again? Y/N:  "))
        if ui == "Y":
            print(" ")
        elif ui == 'N':
            print("Program is closing...")
            break
        else:
            print("wrong input, try again\n")

main()

这是因为main()函数被递归调用&;endFlag是一个局部变量

因此,当您第一次输入“y”时,就会从第一个main()函数递归调用另一个main()

在放置结束第二个main()的“n”并返回第一个main之后,该main仍然在一个循环中,endFlag(局部变量)的值为false

所以,需要改变

或者 endFlag变量为全局变量(即在主函数外定义)

或者

一些程序退出功能代替中断

这就是你应该做的: (顺便说一句,这是一段示例代码)

while True
    name = input('Enter name:')

    print ('Hi '+ name) 
    exit = input('Do you want to exit?(Y/N)')
    
    if exit == 'N' or 'n':
        break

(我不确定缩进是否正确) 您可以将这个概念应用到代码中

相关问题 更多 >

    热门问题