Skip to main content
 首页 » 编程设计

关于使用字典、while 循环和赋值解析例程的 Python 问题

2025年05月04日10虾米哥

如果你问的话,我有一些来自备受诟病的 Python 资源的代码,但我正试图从中推断出 Python 的解析例程,不管它的教学优点如何。

def princess_lives_here(): 
    #<some messages and conditionals to keep you going in the text-based game> 
    #<one of the conditionals end in a `return 'death'`, another function in ROOMS> 
 
ROOMS = { 
    'death': death, 
    'princess_lives_here': princess_lives_here, 
} 
 
def runner (map, start): 
    next = start 
 
    while True: 
        room = map[next] 
        print "\n--------" 
        next = room() 
 
runner(ROOMS, 'princess_lives_here') 
  1. 我不确定 princess_lives_here 是如何在 while 循环中运行的。我只能假设它在最后一行运行,但对我来说看起来像是分配的必须是 room() 的执行,即 princess_lives_here。为什么、何时以及如何执行此执行?

  2. 我的第二个问题是,当解析例程遇到 return 'death' 时,while 循环如何、何时以及为何再次运行。

我已经用整个代码创建了一个要点,以防您想要更全面的图片。它只是占用了很多代码行:https://gist.github.com/848228 .

请您参考如下方法:

看完原码给大家分析一下:

1)程序进入点:

runner(ROOMS, 'princess_lives_here') 

2) runner 函数获取 map (我们可以去的可用房间的列表)和 map 上的起点。因此,之前的调用使用 ROOMS 字典中定义的 map 并将我们设置在 princess_live_here 房间。

3) runner 循环,获取实际的房间字典值,因此,我们获取一个名为 princess_live_here 的函数的引用,该函数定义在文件顶部,打印一些输出并使用该引用调用该函数。

4) 在 princess_lives_here 我们可以输入一些文本,该文本将决定下一步做什么,返回我们要去的下一个房间。例如,如果我们写:“让她吃掉”,该函数将返回“gold_koi_pond”房间的键,然后循环会将那个房间设置为我们的实际房间,并再次获取该房间的字典值房间并调用它。

所以,以更集中的方式回答你:

a) 执行是我在上面这行描述的 b) 当任何函数返回 'death' 时,执行与上面相同,但 death 函数将打印一个随机引用并退出程序。

仅此而已。