如果您曾经学过空手道,那么您可能已经学会了一两个日语单词(例如“踢”,“阻止”和“打孔”),但是对于那些继续学习高级水平的人,您需要了解更多。
- 米尼亚·乔纳达(Minha Jornada)纸牌游戏(Eo que Aprendi com eles)
- 国际象棋与城市
- OS 10 Melhores Jogos de PC para Jogar com os Amigos
- 感激罐
- 为什么天际是有史以来最好的中世纪开放世界游戏之一
还有很多。
确切地说是35。
经过几天的挫折和被召唤而又不知道正确的答案,我决定用Python制作一个词汇游戏来帮助我学习。 这就是我所做的。
我创建程序的方法与其他程序员有些不同,但这就是我的工作方式。 我没有自上而下的工作。 我从主要元素开始,然后解决它。 因此,我程序中的主要元素是一组日语词汇和相应的英语术语。
我决定使用字典键/值对来完成此操作。 对于那些不熟悉Python词典的人,只需想一想电话簿:您就有一个名字和与该名字相关联的电话号码。 因此,如果我问我的程序约翰的电话号码是什么,它将转到“约翰”(“键”)并告诉我与该名称关联的“值”(在这种情况下为电话号码)。 为了我的vocab游戏,我想设置日语单词(“ key”)和正确的英语答案(“ value”):
我先命名字典:

大括号将其标识为字典。 键/值对将放入其中。 现在,我可以开始填充我的条款了。 由于它们是字符串,因此我用引号将它们引起来。 我首先确定“关键”术语,然后用冒号将它们分开,然后确定“值”术语:

要在字典中添加多个术语,我用逗号将它们分开:

现在开始循环,使我可以玩几次游戏。 我决定使用while循环,因为只要满足特定条件,循环就会运行,而当条件为false时它将停止。 基本上,我希望游戏能够运行直到我告诉它停止为止。 这可以通过简单的“您想再次播放吗? 是/否?”问题。 如果选择“ y”,它将再次播放。 while循环本质上是我的游戏经理。
首先,我定义输入:

我问“玩游戏? (“ y”继续)“), 答案就是保留用户输入的位置。 为了给自己一些空间,我通过使用print(“”)打印一行空白字符来添加空白行。
接下来,我写下了while语句:

这就是说“当我的回答是“ y”时,循环运行”(或执行游戏)。 任何其他输入将停止循环,游戏将结束。
综上所述,这就是我们到目前为止所拥有的:

现在,要创建Python会问我的术语表,我需要一种方法让它问日语或“键”。 为此,我将所有键变成了一个列表:

我定义了一个名为keyword_list的变量,并告诉它“好吧,我想要所有vocabDictionary 键的列表 。”如果要查看其外观,可以放入打印语句,它看起来像这样:

如果你曾经 不确定错误在哪里或代码行的输出是什么,请在其中抛出打印语句! 它将帮助您确定程序中正在发生的事情🙂
所以,现在我知道Python提取了所有日语单词,并将它们放在了一个名为keyword_list的方便列表中,我需要对它们进行混洗,以便用户不知道它们出现的顺序。首先,我需要导入随机模块。 在我们的输入和循环上方程序的顶部,我输入:

然后,我回到下面的位置,定义了我们的keyword_list并输入了代码以改组我们的列表。 为此,我使用了random.shuffle:

这说“洗牌keyword_list中的所有项目”,如果您还记得的话,这是所有日语术语。
接下来,我需要设置计数器以查看有多少人做对了,有多少人做错了。 这很简单,因为我们只是定义变量并将它们设置为零:

优秀! 现在,下一部分可能会有些棘手,但是如果您用通俗易懂的英语写出来,则可以更好地理解要告诉计算机执行的操作 。 我一直这样做,这非常有帮助。
因此, 对于我们关键字列表中的每个字词 ,我想显示日语字词,然后提示用户输入答案。

我需要为我希望如何显示关键字设置一个占位符。 我从设置一个空变量开始:

这将保留日语术语。 为了显示给用户,我使用了打印语句和设置的特殊格式,然后创建一个名为userInputAnswer的变量,并询问用户正确的答案。 然后,我将从vocabDictionary中拉出“键”(英文术语),向用户显示正确的答案。 print(“”)只是添加了一个空白行,使内容更易于查看。

现在我如何知道答案是否正确? 好吧,我希望程序可以对照字典中的内容进行检查。 为此,我使用了if / else语句。 同样,如果我们将其写出,我们想告诉计算机“ 如果我们的答案与显示的日语单词的键完全匹配,请告诉我们“正确 ”,并将正确的分数提高1。否则,这是错误的,所以告诉我们“ 错 ”并将我们的错误分数提高1。 ”请记住,游戏开始时正确和错误的变量都设置为0。 从现在开始,当我们回答问题时,它会根据我们是对还是错来加分。

好的! 既然完成了,我添加了一个不错的行分隔符,因此当问下一个问题时,我们不会感到困惑。 我使用以下命令打印了一行二十五个下划线:

到目前为止,输出将如下所示:

请注意,如果您用大写字母“ B”输入“阻止”而不是用小写字母“ b”输入“阻止”,则它将被标记为错误,因为我们的单词必须与字典中的单词完全匹配。
快完成了! 设置了循环和输入块后,我希望能够在游戏结束时看到我们的得分。 我创建了一个名为display的变量,它带有一个字符串和一些大括号,以用作分数的占位符。 当我使用print语句将其发送到屏幕时,它将采用displayscore中的内容 ,并使用正确和错误的变量的分数对其进行格式化。

现在请记住,所有这些都是在while循环内进行的,因此最终我希望游戏能够运行直到我告诉它停止。 我现在可以做到。 我问用户是否要再次玩:

根据while语句,如果答案等于“ y ”,则游戏将从头开始。 如果用户输入的不是“ y ”,我们告诉他们:

示例输出如下所示:

总的来说,该程序将如下所示:

而已!
为了总结我的故事,我告诉空手道班的人们我做了什么,他们想尝试一下,所以我在GitHub帐户上整理了一下。 一位父亲甚至说他想用它来教他的儿子,他对编程和空手道也很感兴趣! 因此,我希望所有程序员,空手道学生以及其他所有人都可以从中受益。 您也可以根据需要添加/删除/修改字典。
皮带测试愉快,祝您好运!