前言
我们这一节还是对之前学习内容的一个综合运用,主要涉及到函数编程、字典以及列表的使用、条件语句、循环结构等等。通过本节的学习读者可以检验之前内容的掌握情况。我们以问答游戏为例介绍这些知识点的具体运用方法。
实践
问答游戏,也即针对提出的问题用户给出正确答案的选项,如果答对就计一分,如果答错则不计分。所以不难想象,问答游戏需要为每一个问题设定正确答案,所以我们需要用字典来保存问题和答案的对应情况,其中问题为键,答案为值。
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(使用前将#替换为@)