Udacity python 编写测验

Udacity python code a quiz

我目前正在做优达学城的编程开发入门课程。作为本课程的一部分,我必须创建一个填空游戏。游戏结构如下:

要求用户根据难度选择一个级别。一旦用户决定 he/she 想要玩的级别,参数:问题、该问题的答案、空白列表和索引 0 将传递给函数 问题验证.

问题验证函数中。我们根据索引评估用户输入是否与答案中包含的内容相匹配。例如,如果我正在填写第一个空白,那么我的答案(输入)必须等于答案 [0] 的答案。如果没有,则用户有 4 次尝试来正确处理。如果用户不这样做,则游戏退出。一旦用户选择了正确的答案,它就会传递给函数 traverse.

这是问题验证的代码

https://www.dropbox.com/sh/e5doud7wt2awlfo/AACoMdohawZj54RwjIWvtAKda?dl=0

函数遍历接受参数:问题;该问题的答案清单;和索引作为参数。 根据此信息,此函数将相应地填写问题空白并将其传递回 问题验证 供用户填写下一个空白。当所有的空格都填满后,程序停止。

这是遍历的代码

https://www.dropbox.com/s/w4cra1hah5xww9q/traversefunct.py?dl=0

我在我的代码中写了评论,进一步详细说明了我在这里概述的内容。

这里是完整的代码

https://www.dropbox.com/s/npendg2ey63e8rr/codeaquiz.py?dl=0

该代码似乎工作正常,并按照我的要求执行,直到填充第 4 个空白为止。此时如果我选择了错误的答案然后返回并选择正确的答案。它承认我选择了正确的答案,但随后再次提示我输入答案。这是一个无限循环,我无法理解为什么它会在这里发生,而在填充以前的空白时它不起作用。

这是关于再次提示的截图:

https://www.dropbox.com/s/s8sk8r19gz4ued2/Screenshot%202018-04-27%2014.13.22.png?dl=0

我一辈子都看不懂为什么:

正如 zipa 指出的那样,您永远不会 break 在第 146 行的 else 语句中使用 while 循环,除非您 运行 超出 tries。一行 "fix" 就是在 traverse() 函数中的第 98 行之后简单地放置一个 exit()