我正在努力学习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或退出?
对于大多数人来说,这些看似愚蠢的问题,但我是编程游戏的新手,我不明白本网站其他地方给出的这个问题的答案。
希望有人可以愚蠢到我的水平并向我解释......
答案 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相关的东西,然后我来到这里看到了......