You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 20:31:08