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

Python函数内使用input占位符触发number1未定义NameError报错

错误原因
  • 局部变量作用域问题:number1、number2都是在quiz函数内部定义的局部变量,仅在函数内部生效,函数外部代码无法直接访问,所以外部调用这两个变量时会触发NameError。
  • 函数定义与调用参数不匹配:定义quiz函数时仅声明了1个入参answer,实际调用时传入了2个参数,运行时会触发参数数量不匹配的报错。
  • 字符串格式化语法错误:input的提示字符串前没有加f前缀,属于无效的f-string写法,无法自动解析占位符{number1}、{number2}的实际值。
  • 代码执行逻辑顺序错误:当前代码先尝试获取用户输入、计算正确答案,再调用函数生成随机数,逻辑完全颠倒,就算解决作用域问题也无法正常实现答题功能。
  • 函数内部变量访问问题:quiz函数内部直接访问外部定义的correctanswer,也会因为作用域问题触发未定义报错。
修复方案

把随机数生成、题目输出、用户输入获取、对错判断的完整逻辑封装到quiz函数内部即可,调整后的可运行代码如下:

import random

def quiz():
    # 函数内部生成随机数,作用域覆盖整个函数可正常访问
    number1 = random.randint(0,9)
    number2 = random.randint(0,9)
    correctanswer = number1 * number2
    # 加f前缀启用f-string,正确解析变量替换占位符
    answer = int(input(f"What is {number1} * {number2} ?"))
    if answer == correctanswer:
        print("Correct")
    else:
        print("Incorrect.")

# 直接调用函数即可运行答题逻辑
quiz()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 08:45:05