高级 Python 开发课程
第 章
>
第 级
异步/等待
设置问题
目标
收集各种厨房材料,并通过设置“问题”为烹饪做准备
有各种厨房和食品材料需要预设并准备,以便后续使用和食用。为此,你可以设置一个 question(),这是一个类似于 write() 的 async 函数,但它不是显示静态消息,而是显示带有 “Yes” 和 “No” 选项的问题。
要设置 question() 函数,你还必须设置一个自定义函数来处理条件。这个函数必须在开头写上 async,以表示它是一个 async 函数。在函数内部,question() 被存储在一个变量中,并且该函数前面写有 await,就像其他 async 函数一样。作为参数,question() 接受一个包含你将要提问问题的字符串。
async def question_function():
answer = await player.question("Question you would like to ask")
if answer:
# Actions to take if answer is Yes
else:
# Actions to take if answer is No
在这个函数内部,你会使用 if 语句来确定在答案为 True 或 False 时应采取的相应操作。自定义的 question 函数将在代码编辑器中设置,并允许你从单一来源收集和/或放置多个物品。
需要在厨房中准备的物品有:"water"、"ice"、"meat" 和 "potato"。这些物品需要被收集并放置在厨房的不同区域。"ice" 需要被放入冰柜中,"water" 应该被放入锅中,而 "meat" 和 "potato" 则需要放在不同的烤箱中。
首先,走向右侧房间中带有金色 X 标记的位置,并使用代码编辑器中概述的自定义函数 await dispencer()。面对冰箱,使用该函数两次(2 次)。它会提出一个问题,你必须回答 Yes 以 collect() "ice",并回答 No 以 collect() "water"。
一旦你收集了这两样物品,走向你旁边冰柜前的黑色 X 标记,然后使用 place() 函数将 "ice" 放入冰柜中,如:player.place("ice")。接着走到在一个袋子前的浅色 X 标记处,使用 collect() 函数收集一个 "potato",如:player.collect("potato")。
之后,走向中心锅旁边的黑色 X 标记,并使用 place() 函数放下你收集到的 "water",示例如下:player.place("water")。完成后,走向位于上方、冰箱前的浅色 X 标记,并收集 "meat",示例如下:player.collect("meat")。
现在,既然你已经收集了 "meat" 和 "potato",请走向左侧房间中的两个金色 X 标记,并使用编辑器中编写的自定义函数 await oven()。对于右侧烤箱的问题,你必须选择将 "potato" bake;而对于左侧烤箱的问题,你必须选择将 "meat" grill,以完成该关卡。