2012-03-01 146 views
2

我想学习Python的学习Python的困难方式的帮助。 (Gothons从地球Percal#25),我已经达到了锻炼41,你可以看到完整的代码>here<学习Python困难的方式,练习41头痛

我明白了一切,直到最后一个函数亚军()

def runner(map, start) 
    next = start 

    while True: 
     room = map[next] 
     print "\n--------" 
     next = room() 

runner(ROOMS, 'central_corridor') 

至于我能理解,下一个被分配了start的值,这是要运行的第一个函数的关键。 while循环开始,将该键处的功能分配给房间。 然后函数打印出一行破折号,之后它将函数调用的返回值分配给变量下一个

我不明白的是为什么用户“看到”被调用的函数。对我来说,看起来函数调用只是分配给变量下一个。我会期望像下一个()房间()是下一行。其次,我不明白为什么while循环停止,不应该继续,直到错误或退出?

这些对你们大多数人来说可能看起来像是愚蠢的问题,但我对编程游戏并不陌生,我不明白在这个网站的其他地方给出这个问题的答案。

希望有人能愚蠢到我的水平,并解释给我...

+0

看起来像使用[此搜索]发现的一些问题的副本(http://stackoverflow.com/search?q=python+exercise+41)。这些问题的答案应该可以帮到你。 – gary 2012-03-01 14:12:00

+0

可能的重复[Learn Python the Hard Way,Exercise 41](http://stackoverflow.com/questions/7909334/learn-python-the-hard-way-exercise-41) – Jacob 2012-03-02 02:04:22

回答

2

用户看到被调用的函数,因为该函数打印的东西。

功能实际上是被称为(与“房间()”)和调用的结果设置为下一个。 例如如果房间是“the_bridge”,则打印一些东西,然后返回“死亡”,“escape_pod”或“the_bridge”。

尽管“while True:”是一个无限循环,但Python有一种完全退出程序的方法。

电话“exit(0)”退出整个程序,然后,没有问任何问题。

+0

谢谢,我想我现在明白了,只是我必须围绕这个事实,即即使将返回的值分配给变量,函数调用仍会写入屏幕。这回答了我的两个问题。 – 2012-03-02 15:41:18

0

我不知道你有多少的问题有,但我会澄清两两件事:

(1)next = room()作品,因为地图是一个dict,这是函数的值,所以room = map[next]检索功能从map,并将该函数存储在变量room中。表达式room()调用该函数。 (2)看看代码,看起来循环的唯一出口是程序退出时,或者抛出异常(如果有的话)。

0

Gothon的事情甚至不是Ex 41. (也许是以前,这篇文章写的时候呢?现在是Ex 43) 无论如何,这是令人困惑的。 我以为我终于找到了与前41相关的东西,然后我来到这里看到这个...