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

标签 python

如果你问的话,我有一些来自备受诟病的 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 函数将打印一个随机引用并退出程序。

仅此而已。

关于关于使用字典、while 循环和赋值解析例程的 Python 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5148615/

相关文章:

python - 如何迭代字典中的值?

python - title 和 axis 互相超越

python - 如何在python中将整数转换为长度= 32字节的序列中的二进制数

python - 当其他值未使用时从元组中提取一个值

python - 循环中 'if'的多种组合多行条件

python - 如何在 Python 中使用 PCA/SVD 进行特征选择和识别?

python - 使用 PyInstaller 制作的 .app 会立即关闭吗?

python - 如何使用 Django Rest Framework 清除图像?

python - 找不到Jupyter命令 `jupyter-lab`

python - 值错误 : Data must not be a string