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

Python函数调用报错及重复请求等级输入问题求助

问题解决步骤

1. 修复TypeError错误

integer_generator函数返回的是包含两个整数的元组(x, y),直接传给question_generator时,Python会把整个元组当作第一个参数,而question_generator需要两个独立参数。解决方法是用**解包操作符***将元组拆分为两个参数:

question_generator(*integer_generator(level))

2. 实现仅输入一次等级

把get_level()的调用移到ten_questions的循环外部,只获取一次等级,之后在循环内重复使用该等级生成题目:

def ten_questions():
    level = get_level()  # 仅执行一次等级输入
    num_of_questions = 0
    while num_of_questions < 10:  # 生成10道题,原逻辑<=10会生成11道
        question_generator(*integer_generator(level))
        num_of_questions += 1

3. 修复get_level函数的逻辑漏洞

原函数中return语句位置错误,会导致输入无效时返回未定义变量。修改为获取有效等级后直接返回:

def get_level():
    while True:
        try:
            level_input = int(input("Level: "))
            if level_input in [1,2,3]:
                return level_input
        except ValueError:
            pass  # 输入非数字时继续循环

修改后的完整代码

import random

def get_level():
    while True:
        try:
            level_input = int(input("Level: "))
            if level_input in [1,2,3]:
                return level_input
        except ValueError:
            pass

def integer_generator(level):
    if level == 1:
        x = random.randint(1,9)
        y = random.randint(1,9)
    elif level == 2:
        x = random.randint(10, 99)
        y = random.randint(10, 99)
    else:
        x = random.randint(100, 999)
        y = random.randint(100, 999)
    return x, y

def question_generator(x, y):
    real_answer = x + y
    while True:
        try:
            answer_given = input(f"{x} + {y} = ")
            if int(answer_given) == real_answer:
                print("Correct")
                break
            else:
                print("EEE")
        except ValueError:
            print("EEE")

def ten_questions():
    level = get_level()
    num_of_questions = 0
    while num_of_questions < 10:
        question_generator(*integer_generator(level))
        num_of_questions += 1

ten_questions()

if __name__ == "__main__":
    ten_questions()

额外优化说明

  • 调整循环条件为<10,确保严格生成10道题
  • 使用f-string简化字符串拼接,提升代码可读性
  • 捕获特定的ValueError而非所有异常,避免隐藏其他潜在错误

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 20:36:26