菜单选择功能代码报错: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()
修复细节说明
- 函数重命名:把原
choice()改成show_menu(),既避开了和内置函数的冲突,也让函数功能一目了然。 - 变量重命名:把
Choice改成user_choice,彻底消除和函数名的混淆风险,代码可读性也提升了。 - 输入验证:加了
try-except捕获输入非数字的情况,避免用户误输入导致程序直接崩溃。
内容的提问来源于stack exchange,提问作者Arcky
相关产品推荐
相关产品推荐

