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

菜单选择功能代码报错:variable not defined及函数失效求助

修复菜单选择功能的命名冲突问题

你猜的完全没错!就是命名冲突搞的鬼!如果你的自定义函数叫choice(),同时在函数内部又定义了类似Choice的变量(哪怕只是大小写不同),或者不小心覆盖了Python内置的choice函数,都会导致选择选项1时触发错误。

核心修复思路

解决这个问题的关键就是避免名字重复,要么给函数换个清晰的名字,要么给内部变量换个不撞名的称呼,同时尽量别让变量名和函数名只有大小写差异——太容易搞混了!

修复后的完整代码示例

我给你调整后的版本不仅解决了冲突,还加了输入验证让程序更健壮:

def show_menu():  # 把原choice()函数重命名,彻底避开命名冲突
    print("=== 功能菜单 ===")
    print("1. 输入视频数据")
    print("2. 退出程序")
    user_choice = input("请输入选项编号:")  # 变量名改成user_choice,清晰不混淆

    if user_choice == "1":
        try:
            # 收集所需数据
            watch_duration = float(input("请输入观看时长(W):"))
            play_count = int(input("请输入播放量(V):"))
            vid_h = int(input("视频时长-小时(h):"))
            vid_m = int(input("视频时长-分钟(m):"))
            vid_s = int(input("视频时长-秒(s):"))
            
            # 这里可以添加后续数据处理逻辑
            print("\n数据输入成功!")
            print(f"观看时长:{watch_duration} | 播放量:{play_count} | 视频时长:{vid_h}:{vid_m}:{vid_s}")
        except ValueError:
            print("\n输入错误!请输入有效的数字~")
            show_menu()  # 重新回到菜单
    elif user_choice == "2":
        print("\n程序已退出,再见!")
    else:
        print("\n无效选项,请重新选择!")
        show_menu()

# 启动程序
show_menu()

修复细节说明

  1. 函数重命名:把原choice()改成show_menu(),既避开了和内置函数的冲突,也让函数功能一目了然。
  2. 变量重命名:把Choice改成user_choice,彻底消除和函数名的混淆风险,代码可读性也提升了。
  3. 输入验证:加了try-except捕获输入非数字的情况,避免用户误输入导致程序直接崩溃。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 08:59:19