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

CS50 Little Professor遇'timed out while waiting for program to exit'问题求助

解决CS50 Little Professor check50超时问题

问题根源:你的代码在生成每一道题目时都会调用get_level(),要求用户输入难度。但根据题目要求,用户只需要输入一次难度,之后程序要生成10道该难度的算术题。check50的测试用例只会提供一次难度输入,你的程序却会反复等待输入,最终导致超时。

修改步骤:

  • 将get_level()的调用移到10次题目的循环外部,只获取一次难度值
  • 用这个统一的难度值生成所有10道题的数字

修改后的代码:

import random

def main():
    score = 0
    level = get_level()  # 移到循环外,只获取一次难度
    for _ in range(10):
        X = generate_integer(level)
        Y = generate_integer(level)
        for i in range(3):
            try:
                ans = int(input(f'{X} + {Y} = '))
                if ans == X + Y:
                    score += 1
                    break
                else:
                    raise ValueError
            except ValueError:
                print('EEE')
                if i == 2:
                    print(f'{X} + {Y} = {X+Y}')
    print(f'Score: {score}')

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

def generate_integer(level):
    match level:
        case 1:
            return random.randint(0,9)
        case 2:
            return random.randint(10,99)
        case _:
            return random.randint(100,999)


if __name__ == "__main__":
    main()

额外说明:

  • 原代码逻辑不符合题目“一次选难度,做10道同难度题目”的规则,手动测试时你可能每次都输入了难度所以没发现问题,但自动测试时会因为等待多余输入而超时
  • 修改后程序只会在开始时请求一次难度输入,之后连续生成10道对应难度的题目,符合check50的测试预期

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 10:16:06