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

Python如何实现回到函数开头并保留返回时修改的病例统计变量值?

核心问题修复

现有代码的问题集中在两点:

  • 缺少USA、China两个变量的定义,也没有把三个国家的病例数放在统一的作用域下,修改后无法保留
  • 重复嵌套定义同名myFunc,且用递归返回菜单的逻辑冗余,现有while True循环本身就会自动回到菜单入口,不需要额外递归

优化后可运行代码

def covid_menu():
    # 初始化各国初始病例数,作用域覆盖整个菜单循环
    SA = 1
    USA = 1
    China = 1
    while True:
        print("\n 1.Statistics \n 2.Prevention \n 3.Symptoms \n 4.Treatment \n 5.Report case \n 6.Exit \n")
        user_input = input("Enter a choice(1/2/3/4/5/6): ")
        # 统计查询逻辑
        if user_input == "1":
            print(f"\nSA确诊病例:{SA}例\nUSA确诊病例:{USA}例\n中国确诊病例:{China}例\n")
        # 病例上报逻辑
        elif user_input == "5":
            input2 = input("是否有相关症状?输入y/n:")
            if input2 == "n":
                print("你未感染新冠")
            elif input2 == "y":
                input3 = input("体温是否超过38.5℃?输入y/n:")
                if input3 == "n":
                    print("你未感染新冠")
                elif input3 == "y":
                    print("请选择所在国家:\n1.SA \n2.USA \n3.中国")
                    input4 = input("输入选项(1/2/3):")
                    if input4 == "1":
                        print("你已感染新冠,请前往治疗")
                        SA += 1
                    elif input4 == "2":
                        print("你已感染新冠,请前往治疗")
                        USA += 1
                    elif input4 == "3":
                        print("你已感染新冠,请前往治疗")
                        China += 1
        # 退出逻辑
        elif user_input == "6":
            break
        # 其余2/3/4选项可自行补充对应逻辑

if __name__ == "__main__":
    covid_menu()

关于单函数合理性的说明

  • 如果是大学小项目,总代码量不超过300行的情况下,所有逻辑放在同一个函数内完全没问题,不需要过度拆分增加复杂度
  • 如果后续需要新增功能(比如数据导出、历史上报记录查询等),可以再把统计查询、上报校验、菜单打印拆为独立函数,代码可维护性更高

内容的提问来源于stack exchange,提问作者Mathew

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.14 20:45:04