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

Python开发聊天机器人运行时第3行报EOF错误如何解决

Python聊天机器人EOF报错解决方案及代码优化

报错原因

你第3行playermessage = input("Talk here:")触发的EOFError,是因为程序运行到input语句时等待用户输入,但输入流被提前终止(比如运行时直接按了Ctrl+D/Ctrl+Z结束输入,或者在无交互能力的环境运行脚本没有传入输入内容)。

快速解决方法

  • 本地交互环境运行:脚本启动后在控制台输入任意内容,按回车即可避免该报错
  • 非交互环境运行:可以给input加默认值兼容,或者提前把要输入的内容传入脚本

代码其他潜在问题修复

你的原代码还存在多处逻辑错误,不修复后续运行依然会报错:

  • 函数内修改全局变量未声明:playertalk内直接修改textreadyyet会触发UnboundLocalError,需要加global声明
  • 无限递归:在while循环内调用playertalk自身,没有终止条件,会触发递归深度超限报错
  • 缩进错误:aialk函数被定义在playertalk的while循环内部,逻辑完全混乱
  • 循环冗余:while循环只会执行一次,没有存在必要

修复后可运行示例代码

ai_talked = "0"
textreadyyet = "no"

def aialk():
    global ai_talked
    if ai_talked == "0":
        print("Hello!")
        ai_talked = "1"

def playertalk():
    global textreadyyet
    playermessage = input("Talk here:")
    # 原while逻辑冗余,直接简化即可
    print(playermessage)
    textreadyyet = "Yes"
    aialk()

playertalk()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.12 22:54:02