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

CS50 Little Professor程序超时退出问题求助

CS50 Little Professor check50超时问题解决

本地运行程序可正常生成10道题目后退出,但通过check50检测时出现超时错误:

:( Little Professor generates 10 problems before exiting - timed out while waiting for program to exit

你的代码核心问题是每道题循环都会调用get_level()要求输入难度,但题目要求是用户仅输入一次难度,后续连续生成10道对应难度的算术题。check50测试用例只会输入一次Level,之后程序因持续等待下一次Level输入陷入阻塞,最终导致超时。

错误核心片段

for _ in range(10):
    level = get_level()  # 每道题都要求输入Level,违反题目逻辑
    x = generate_integer(level)
    y = generate_integer(level)
    # ... 后续逻辑

修正方案

将get_level()移至循环外部,仅获取一次难度,后续10道题均使用该难度生成数字;同时补充输入非数字时的错误次数递增(原代码漏写,会导致无限循环)。

修正后完整代码

import random
import sys

def main():
    score = 0
    level = get_level()  # 仅获取一次难度

    for _ in range(10):
        x = generate_integer(level)
        y = generate_integer(level)
        total = x + y
        errors = 0

        while errors < 3:
            try:
                guess = int(input(f"{x} + {y} = "))
                if total == guess:
                    score += 1
                    break
                else:
                    print("EEE")
                    errors += 1
            except ValueError:
                print("EEE")
                errors += 1  # 输入非数字时递增错误次数
        if errors == 3:
            print(f"{x} + {y} = {total}")

    print(f"Score: {score}")
    sys.exit(0)

def get_level():
    while True:
        try:
            level = int(input("Level: "))
            if level < 1 or level > 3:
                raise ValueError
            return level
        except ValueError:
            pass

def generate_integer(level):
    if level == 1:
        return random.randint(0,9)
    elif level == 2:
        return random.randint(10,99)
    elif level == 3:
        return random.randint(100,999)

if __name__ == "__main__":
    main()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.11 22:33:10