Python函数执行报错排查及科目测试功能实现咨询
问题解决与功能实现方案
变量未定义问题修复
你遇到的第15行变量未定义问题,根源是name变量的定义语句name = input("Please enter your name: ")被放在了使用它的代码之后。解决方法很直接:把这条语句移到所有需要调用name的代码之前,确保程序执行到使用name的位置时,变量已经完成赋值。
开始游戏提示逻辑调整
把name的输入移到代码底部会打断正常流程,正确的执行顺序应该是:
- 先获取用户名
- 立即用用户名打招呼并询问是否开始游戏
- 根据用户选择进入后续环节
科目选择与函数调用实现
以下是完整的可运行代码,包含上述修复和科目选择功能:
# 定义各科测试函数 def math_quiz(): print("\n=== 数学测试开始 ===") print("问题:3 × 5 = ?") user_answer = input("请输入你的答案:") if user_answer.strip() == "15": print("回答正确!") else: print("回答错误,正确答案是15。") def english_quiz(): print("\n=== 英语测试开始 ===") print("问题:'苹果'对应的英文单词是?") user_answer = input("请输入你的答案:").strip().lower() if user_answer == "apple": print("回答正确!") else: print("回答错误,正确答案是apple。") # 主流程 # 先获取用户名,解决变量未定义问题 name = input("Please enter your name: ") # 提示是否开始游戏 start_choice = input(f"Hi {name}! Do you want to start the quiz? (yes/no): ").strip().lower() if start_choice != "yes": print("游戏已退出,再见!") else: # 展示科目选择 print("\n请选择测试科目:") print("1. 数学") print("2. 英语") subject_choice = input("输入对应数字选择科目:").strip() # 调用对应科目函数 if subject_choice == "1": math_quiz() elif subject_choice == "2": english_quiz() else: print("无效的选择,请重新运行程序!")
代码说明
- 各科测试函数独立定义,方便后续扩展更多科目
- 主流程严格按照「获取用户名→确认是否开始→选择科目→执行测试」的顺序,解决了之前的流程混乱问题
- 对用户输入做了
strip()和lower()处理,避免因空格或大小写导致的判断错误
内容的提问来源于stack exchange,提问作者Alex mos
相关产品推荐
相关产品推荐

