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

Python计数游戏代码随机出现EOF Error,求解决方案

解决计数游戏程序的EOF Error问题

你的代码出现EOF Error的根本原因是无限循环没有终止条件,且耐心值归0后仍继续尝试读取输入。当测试用例的输入全部读完后,程序还在执行a = input(),此时没有输入可读取,就会触发EOFError。所谓的“随机出现”其实是因为输入是否耗尽的时机不同导致的。

解决方案

  • 当耐心值归0时,打印提示后直接跳出循环,停止后续的输入读取操作。
  • 添加对EOFError的捕获,处理输入意外结束的情况,让程序更健壮。

修正后的代码

patience = int(input())
# 处理初始输入可能提前结束的情况
try:
    a = input()
except EOFError:
    print("输入提前结束")
    exit()

streak = 0
mistake = False
one = "one"
two = "two"
three = "three"
four = "four"
nextNum = one

while True:
    if a == nextNum:
        mistake = False
        streak += 1
        # 更新下一个目标数字
        if nextNum == one:
            nextNum = two
        elif nextNum == two:
            nextNum = three
        elif nextNum == three:
            nextNum = four
        elif nextNum == four:
            nextNum = one
    elif not mistake:
        mistake = True
        nextNum = one
        patience -= 1
        # 输出失败提示
        print(f"The counting streak was {streak}, but you failed.")
        streak = 0
        if patience == 0:
            print("Enough for today.")
            # 耐心值耗尽,终止循环
            break
    # 仅当还有耐心时才读取下一个输入
    if patience > 0:
        try:
            a = input()
        except EOFError:
            print("输入提前结束")
            break
    else:
        break

关键修改说明

  1. 在初始读取和后续读取输入时,用try-except捕获EOFError,避免输入意外结束导致程序崩溃。
  2. 当耐心值归0时,通过break跳出循环,不再执行后续的input()调用,从根源避免EOFError。
  3. 读取下一个输入前先检查耐心值,避免无意义的输入读取操作。
  4. 用f-string简化了打印语句,让代码更简洁易读。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 10:10:35