Python循环异常:输入非1指令后仍重复调用menu函数
问题解决:输入菜单选项后重复显示菜单的问题
你的核心问题出在main函数的逻辑上:当用户选择选项1时,你额外调用了一次menu(),但外层的while True循环本身会在下一次迭代时自动调用menu(),这就导致了重复显示菜单的问题,甚至让你误以为输入选项2时需要两次操作。
修正后的main函数代码
def main(): banner() while True: choice = menu() if choice == 1: # 不需要额外调用menu(),循环会自动在下一次迭代显示菜单 pass elif choice == 2: defaultReport() break elif choice == 3: # 待实现的功能 pass elif choice == 4: # 待实现的功能 pass elif choice == 5: print('\nExiting Program') break
为什么这样改?
- 当用户选择1时,
pass让循环进入下一次迭代,外层while True会再次调用menu(),完美实现“再次显示菜单”的需求,不会出现重复调用的情况。 - 当用户选择2/3/4/5时,执行对应功能后通过
break退出循环,不会再显示菜单,符合你“执行对应代码且不再显示菜单”的预期。
可选优化:简化menu函数的输入验证逻辑
你的menu函数可以把两次输入验证合并成一个循环,让代码更简洁:
def menu(): print('''\nMortality Rate Comparison Menu 1. Show This Menu Again 2. Full Mortality Report by State 3. Mortality for a Single State, by Date Range 4. Mortality Summary for all States 5. Exit \n ''') while True: choice = input('Make your selection from the menu: ') try: choice_int = int(choice) if 1 <= choice_int <=5: return choice_int else: print("请输入1-5之间的数字") except ValueError: print("请输入有效的数字")
这样修改后,输入验证逻辑更紧凑,用户体验也更友好。
内容的提问来源于stack exchange,提问作者BurntPancakes
相关产品推荐
相关产品推荐

