所以我有一个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: "))
问题是,你在这里做递归,也就是说,你在
main()
内部调用方法main()
,试图用你所做的方式打破它是行不通的(好吧,你知道:) 第二,你不需要在第一个循环中有一个永久的循环,你可以通过一个简单的循环和中断来完成。 这是:这是因为main()函数被递归调用&;endFlag是一个局部变量
因此,当您第一次输入“y”时,就会从第一个main()函数递归调用另一个main()
在放置结束第二个main()的“n”并返回第一个main之后,该main仍然在一个循环中,endFlag(局部变量)的值为false
所以,需要改变
或者 endFlag变量为全局变量(即在主函数外定义)
或者
一些程序退出功能代替中断
这就是你应该做的: (顺便说一句,这是一段示例代码)
(我不确定缩进是否正确) 您可以将这个概念应用到代码中
相关问题 更多 >
编程相关推荐