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

CS50P猜数字游戏check50报错:timed out while waiting for program to exit

问题分析与解决方案

你的代码在本地运行正常,但check50检测时出现超时,核心问题出在两个地方:

  1. 未正确处理超出范围的猜测值(大于设定的level),导致不符合题目的输入校验要求;
  2. 猜对数字后仅用break跳出循环,在check50的自动化测试环境中可能存在退出不及时的情况。

具体修改点

  • 用random.randint()替代random.choice(list(range(...))):无需生成完整列表,更高效且逻辑更直观;
  • 先获取并保存level变量,避免重复调用函数;
  • 增加对猜测值范围的校验:若猜测值小于1或大于level,直接跳过后续判断,重新提示输入;
  • 猜对数字时用return直接结束main()函数,确保程序立即退出,避免测试环境超时。

修改后的完整代码

from random import randint

def main():
    level = get_level()
    number = randint(1, level)
    while True:
        try:
            guess = int(input("Guess: "))
            # 校验猜测值是否在有效范围内
            if guess < 1 or guess > level:
                continue
            if guess < number:
                print("Too small!")
            elif guess > number:
                print("Too large!")
            else:
                print("Just right!")
                return  # 直接结束main函数,确保程序退出
        except ValueError:
            pass

def get_level():
    while True:
        try:
            level = int(input("Level: "))
            if level > 0:
                return level
        except ValueError:
            pass

main()

修改说明

  1. 范围校验:题目要求仅接受1到level之间的猜测值,超出该范围的输入(包括小于1或大于level)应重新提示,而非直接判断大小;
  2. 退出逻辑:return比break更直接,能确保main()函数立即结束,程序快速退出,避免自动化测试环境的超时判定;
  3. 随机数生成:randint(1, level)直接生成1到level的整数,无需转换为列表,性能更优。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 05:36:17