艰苦学习Python,练习41头疼

时间:2012-03-01 14:07:10

标签: python

我正在努力学习Python,借助于学习Python的艰难之路。 我参加了练习41(来自Planet Percal#25的Gothons),你可以看到完整的代码>here<

直到最后一个函数runner()

,我才明白
def runner(map, start)
    next = start

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

runner(ROOMS, 'central_corridor')

据我所知, next 被赋予start值,作为第一个要运行的函数的键。启动while循环,将该键的功能分配给 room 。 然后该函数打印出一行破折号,然后将函数调用的返回值赋给变量 next

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

对于大多数人来说,这些看似愚蠢的问题,但我是编程游戏的新手,我不明白本网站其他地方给出的这个问题的答案。

希望有人可以愚蠢到我的水平并向我解释......

3 个答案:

答案 0 :(得分:2)

用户看到正在调用的函数,因为该函数会打印出来。

实际上正在调用该函数(使用“room()”)并且调用的结果设置为 next 。 例如。如果房间是“the_bridge”,则打印一些东西,然后返回“death”,“escape_pod”或“the_bridge”。

虽然“当True:”是一个无限循环,但Python有办法完全退出程序。

电话“退出(0)”会在那里退出整个节目,然后没有问题。

答案 1 :(得分:0)

我不确定你有多少问题,但我会澄清两件事:

(1)next = room()有效,因为map是dict,其值是函数,因此room = map[next]map检索函数,并将该函数存储在变量room。表达式room()调用该函数。

(2)看一下代码,看起来循环的唯一退出就是程序退出时,或抛出异常(如果有的话)。

答案 2 :(得分:0)

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