Python 2.7 Can';无法在python中找出EOF错误

Python 2.7 Can';无法在python中找出EOF错误,python-2.7,eof,Python 2.7,Eof,我正在做《艰苦地学习Python》一书中的练习35,但我似乎无法找出这个错误。这可能有点傻,但我似乎不明白 错误出现在第75、69和26行的模块start()、start bear_room()和bear_room next2=原始输入(“>”)中 从系统导入退出 def gold_房间(): 打印“这间屋子里满是金子,你要多少钱?” next1=原始输入(“”) 如果next2==“吃蜂蜜”: 死了(“熊看着你然后皮条客打了你一巴掌。”) elif next2==“嘲弄熊”且未移动熊: 打印“

我正在做《艰苦地学习Python》一书中的练习35,但我似乎无法找出这个错误。这可能有点傻,但我似乎不明白

错误出现在第75、69和26行的模块start()、start bear_room()和bear_room next2=原始输入(“>”)中

从系统导入退出
def gold_房间():
打印“这间屋子里满是金子,你要多少钱?”
next1=原始输入(“<”)
如果next1中的“0”或next1中的“1”:
多少=整数(next1)
其他:
死亡(“伙计,学着打一个数字。”)
如果多少小于50:
打印“很好,你不贪婪,你赢了!”
出口(0)
其他:
死了(“你这个贪婪的混蛋!”)
def bear_房间():
打印“这里有一只熊。”
打印“熊有一束蜂蜜。”
打印“肥熊在另一扇门前。”
打印“你打算如何移动熊?”
bear_moved=假
尽管如此:
next2=原始输入(“>”)
如果next2==“吃蜂蜜”:
死了(“熊看着你然后皮条客打了你一巴掌。”)
elif next2==“嘲弄熊”且未移动熊:
打印“熊已经离开了门。你现在可以穿过它了。”
bear_moved=True
elif next2==“嘲弄熊”和熊_移动:
死了(“熊生气了,把你的裤裆咬掉了。”)
elif next2==“打开门”和bear_移动:
黄金屋
其他:
打印“我不知道那是什么意思。”
def cthulu_房间():
打印“在这里你看到了邪恶的克图鲁。”
打印“他,它,任何盯着你看的东西,你都会发疯。”
打印“你为了吃你的头而逃命吗?”
next3=原始输入(“>”)
如果next3中有“head”:
死了(“嗯,那太好吃了!”)
next3中的elif“逃离”:
开始()
其他:
cthulu_室()
def死亡(原因):
打印为什么,“干得好!”
出口(0)
def start():
打印“你在一个黑暗的房间里。”
打印“你的左右两侧各有一扇门。”
打印“你选哪一个?”
next4=原始输入(“>”)
如果next4==“左”:
熊屋
elif next4==“右”:
cthulu_室()
其他:
死亡(“你在房间里跌跌撞撞,直到饿死。”)
开始()

我没有发现你的具体错误,但很难判断我是否根据你的描述。将来,您应该发布带有行异常的堆栈跟踪

我发现代码中有一个无限循环。本部分:

while True:
    next2 = raw_input("> ")
if next2 == "take honey":
# snip
永远不会离开。True将始终为True,因此它只会不断用原始输入提示您。通过将该函数的其余部分更改为如下所示

while True:
    next2 = raw_input("> ")
    if next2 == "take honey":
        dead("The bear looks at you then pimp slaps your face off.")
    elif next2 == "taunt bear" and not bear_moved:
        print "The bear has moved from the door. You can go through it now."
        bear_moved = True
    elif next2 == "taunt bear" and bear_moved:
        dead("The bear gets pissed off and chews your crotch off.")
    elif next2 == "open door" and bear_moved:
        gold_room()
    else:
        print "I got no idea what that means."

…我们告诉Python获取存储在next2中的提示结果,并评估其余检查。这样,它将通过调用dead()或gold_room()等其他函数退出该函数。这将退出bear_room()函数,即使while True条件从未退出。当条件的计算结果为False时,将退出While循环。因为True永远不会等于False,所以我们必须以其他方式退出,例如调用另一个函数,如dead(),该函数将通过调用exit()终止。

您真的有那么多的空格,还是只是您将其复制到Stackoverflow中的方式?我在运行代码时没有得到
EOFError
,虽然我必须在例如
熊屋
中修复压痕。你能提供完整的回溯吗?我很确定,艰苦地学习Python并不意味着将代码转储到堆栈溢出上。@FrédéricHamidi,虽然这不是世界上最好的问题,但至少是一个尝试性的问题。。。OP似乎愿意改进——让我们至少给他们一些喘息的空间吧?@JonClements,我知道你来自哪里,但提问者甚至没有提供他们收到的实际错误,尽管有回溯。这些都是基本的反射,虽然它们不应该被忽略。在这种情况下,我们不能帮助每一个用户,这就是无限循环的原因。当我到达需要对bear_room()函数进行原始输入的部分时,无论何时输入,都不会发生任何事情。我只在按ctrl+Z终止程序时出错。那个空白就是书中的布局,我只是坚持它,这样我的行号与练习中的书匹配。谢谢你的帮助!我只是没有在While true之后缩进所有行。现在很好用!不客气,@user3466180。如果我的回答对你有帮助,请考虑接受或接受。
while True:
    next2 = raw_input("> ")
    if next2 == "take honey":
        dead("The bear looks at you then pimp slaps your face off.")
    elif next2 == "taunt bear" and not bear_moved:
        print "The bear has moved from the door. You can go through it now."
        bear_moved = True
    elif next2 == "taunt bear" and bear_moved:
        dead("The bear gets pissed off and chews your crotch off.")
    elif next2 == "open door" and bear_moved:
        gold_room()
    else:
        print "I got no idea what that means."