Python编程基础:第三十八节 问答游戏Quiz Game

2023-05-16

第三十八节 问答游戏Quiz Game

  • 前言
  • 实践

前言

我们这一节还是对之前学习内容的一个综合运用,主要涉及到函数编程、字典以及列表的使用、条件语句、循环结构等等。通过本节的学习读者可以检验之前内容的掌握情况。我们以问答游戏为例介绍这些知识点的具体运用方法。

实践

问答游戏,也即针对提出的问题用户给出正确答案的选项,如果答对就计一分,如果答错则不计分。所以不难想象,问答游戏需要为每一个问题设定正确答案,所以我们需要用字典来保存问题和答案的对应情况,其中问题为键,答案为值。

questions = {
    "Who created Python?: ": "A", 
    "What year was Python created?: ": "B", 
    "Python is tributed to which comedy group?: ": "C", 
    "Is the Earth round?: ": "A"
    }

可见我们创建了一个名为questions的字典,其中一共包含四个问题以及他们的正确选项。除了答案的设计,我们还需要设计候选项供用户选择,每一个问题有四个选项。为了存储这些候选项,我们可以使用二维列表来存储:

options = [
    ["A. Guido van Rossum", "B. Elon Musk", "C. Bill Gates", "D. Mark Zuckerburg"], 
    ["A. 1989", "B. 1991", "C. 2000", "D. 2016"], 
    ["A. Lonely Island", "B. Smosh", "C. Monty Python", "D. SNL"], 
    ["A. True", "B. False", "C. sometimes", "D. What's Earth?"]
    ]

每一行是一个问题的四个候选项。有了问题、正确答案、候选项之后,我们的问答游戏便可以进行了。我们这里采用模块化设计的思路,将整个问题分割为一个个子问题,然后对每个子问题分别编写函数进行实现。其实不难想,我们的问题可以分割为:开始游戏,答案检验,得分打印,询问是否再次游戏这四个部分。我们先来实现最简单的答案检验部分:

def Check_Answer(answer, guess):
    if answer == guess:
        print("CORRECT!")
        return 1
    else:
        print("WRONG!")
        return 0

以上函数就是检验用户给出的答案guess与标准答案answer相同与否,如果相同就计一分,如果不同就不计分。然后我们再来实现分数打印部分:

def Display_Score(correct_guesses, guesses):
    print("------------------------------")
    print("RESULTS")
    print("------------------------------")
    print("Answers: ", end="")
    for i in questions:
        print(questions.get(i), end=" ")
    print()
    
    print("Guesses: ", end="")
    for i in guesses:
        print(i, end=" ")
    print()
    
    score = int((correct_guesses/len(questions))*100)
    print("Your score is: "+str(score)+"%")

我们会分别给出所有题目的标准答案以及用户的作答情况,最后给出正确率作为最终的得分。在询问用户是否再次进行游戏方面:

def Play_Again():
    response = input("Do you want to play again?: (yes or no): ")
    response = response.upper()
    if response == "YES":
        return True
    else:
        return False

当用户输入yes时,会继续游戏,否则就结束游戏。最后我们一起来看如何开始游戏呢?

def New_Game():
    guesses = []
    correct_guesses = 0
    question_num = 1
    
    for key in questions:
        print("------------------------------")
        print(key)
        for i in options[question_num-1]:
            print(i)
        guess = input("Enter (A, B, C, or D): ")
        guess = guess.upper()
        guesses.append(guess)
        correct_guesses += Check_Answer(questions.get(key), guess)
        question_num += 1
    Display_Score(correct_guesses, guesses)

首先我们会打印每个问题以及四个选项,然后我们会要求用户输入自己的选项,通过对用户作答情况进行分析得到用户的得分并打印出来。
我们通过调用New_Game()便可进行游戏了:

while Play_Again():
    New_Game()

print("Byeeeeeeee!")
>>> Do you want to play again?: (yes or no): yes
------------------------------
Who created Python?: 
A. Guido van Rossum
B. Elon Musk
C. Bill Gates
D. Mark Zuckerburg

Enter (A, B, C, or D): A
CORRECT!
------------------------------
What year was Python created?: 
A. 1989
B. 1991
C. 2000
D. 2016

Enter (A, B, C, or D): B
CORRECT!
------------------------------
Python is tributed to which comedy group?: 
A. Lonely Island
B. Smosh
C. Monty Python
D. SNL

Enter (A, B, C, or D): C
CORRECT!
------------------------------
Is the Earth round?: 
A. True
B. False
C. sometimes
D. What's Earth?

Enter (A, B, C, or D): D
WRONG!
------------------------------
RESULTS
------------------------------
Answers: A B C A 
Guesses: A B C D 
Your score is: 75%

Do you want to play again?: (yes or no): no
Byeeeeeeee!

以上便是问答游戏的全部内容,感谢大家的收藏、点赞、评论。我们下一节将介绍面向对象编程(Object Oriented Programming),敬请期待~

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python编程基础:第三十八节 问答游戏Quiz Game 的相关文章

随机推荐