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

Python函数执行报错排查及科目测试功能实现咨询

问题解决与功能实现方案

变量未定义问题修复

你遇到的第15行变量未定义问题,根源是name变量的定义语句name = input("Please enter your name: ")被放在了使用它的代码之后。解决方法很直接:把这条语句移到所有需要调用name的代码之前,确保程序执行到使用name的位置时,变量已经完成赋值。

开始游戏提示逻辑调整

把name的输入移到代码底部会打断正常流程,正确的执行顺序应该是:

  1. 先获取用户名
  2. 立即用用户名打招呼并询问是否开始游戏
  3. 根据用户选择进入后续环节

科目选择与函数调用实现

以下是完整的可运行代码,包含上述修复和科目选择功能:

# 定义各科测试函数
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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 00:35:26