Completed the Trivia Quiz Project!

Fix Day 17 README

Add trivia demo
This commit is contained in:
rzmk 2021-08-07 22:29:01 -04:00
parent f462cc5ae0
commit 5f7dcd5629
8 changed files with 157 additions and 3 deletions

3
.gitignore vendored
View file

@ -1,6 +1,3 @@
# Ignore Markdown formatting being inconsistent with markdownlint
.prettierignore
# Ignore virtual environments
venv

1
.prettierignore Normal file
View file

@ -0,0 +1 @@
*/*.md

6
Day 17/README.md Normal file
View file

@ -0,0 +1,6 @@
# Day 17 - Implementing Classes
- Learned the structure of creating a class with its attributes, methods, and how to initialize objects
- Created a trivia quiz game, with some neat questions from [opentdb](https://opentdb.com/).
![Day_17_Trivia](https://user-images.githubusercontent.com/30333942/128618891-34c051c8-b0fe-4982-8852-536a3a9bf311.gif)

View file

@ -0,0 +1,22 @@
class User:
def __init__(self, user_id, username):
self.id = user_id
self.username = username
self.followers = 0
self.following = 0
def follow(self, user):
user.followers += 1
self.following += 1
user_1 = User("001", "mueez")
# user_1.id = "001" # like self.id in init function, but just for this user_1 object if not in init
# user_1.username = "mueez"
user_2 = User("002", "another_user")
user_1.follow(user_2)
print(user_1.followers)
print(user_2.followers)
print(user_1.following)
print(user_2.following)

View file

@ -0,0 +1,82 @@
question_data = [
{
"category": "Science: Computers",
"type": "boolean",
"difficulty": "easy",
"question": "Linus Torvalds created Linux and Git.",
"correct_answer": "True",
"incorrect_answers": ["False"],
},
{
"category": "Science: Computers",
"type": "boolean",
"difficulty": "easy",
"question": "The programming language Python is based off a modified version of JavaScript.",
"correct_answer": "False",
"incorrect_answers": ["True"],
},
{
"category": "Science: Computers",
"type": "boolean",
"difficulty": "easy",
"question": "The logo for Snapchat is a Bell.",
"correct_answer": "False",
"incorrect_answers": ["True"],
},
{
"category": "Science: Computers",
"type": "boolean",
"difficulty": "easy",
"question": "RAM stands for Random Access Memory.",
"correct_answer": "True",
"incorrect_answers": ["False"],
},
{
"category": "Science: Computers",
"type": "boolean",
"difficulty": "easy",
"question": "Ada Lovelace is often considered the first computer programmer.",
"correct_answer": "True",
"incorrect_answers": ["False"],
},
{
"category": "Science: Computers",
"type": "boolean",
"difficulty": "easy",
"question": "In most programming languages, the operator ++ is equivalent to the statement += 1.",
"correct_answer": "True",
"incorrect_answers": ["False"],
},
{
"category": "Science: Computers",
"type": "boolean",
"difficulty": "easy",
"question": "The Windows 7 operating system has six main editions.",
"correct_answer": "True",
"incorrect_answers": ["False"],
},
{
"category": "Science: Computers",
"type": "boolean",
"difficulty": "easy",
"question": "The NVidia GTX 1080 gets its name because it can only render at a 1920x1080 screen resolution.",
"correct_answer": "False",
"incorrect_answers": ["True"],
},
{
"category": "Science: Computers",
"type": "boolean",
"difficulty": "easy",
"question": "Linux was first created as an alternative to Windows XP.",
"correct_answer": "False",
"incorrect_answers": ["True"],
},
{
"category": "Science: Computers",
"type": "boolean",
"difficulty": "easy",
"question": "The Python programming language gets its name from the British comedy group Monty Python.",
"correct_answer": "True",
"incorrect_answers": ["False"],
},
]

View file

@ -0,0 +1,17 @@
from question_model import Question
from data import question_data
from quiz_brain import QuizBrain
question_bank = []
for question in question_data:
question_text = question["question"]
question_answer = question["correct_answer"]
new_question = Question(question_text, question_answer)
question_bank.append(new_question)
quiz = QuizBrain(question_bank)
while quiz.still_has_questions():
quiz.next_question()
print("You've completed the quiz!")
print(f"Your final score was: {quiz.score}/{len(quiz.question_list)}.")

View file

@ -0,0 +1,4 @@
class Question:
def __init__(self, text, answer):
self.text = text
self.answer = answer

View file

@ -0,0 +1,25 @@
class QuizBrain:
def __init__(self, question_list):
self.question_number = 0
self.question_list = question_list
self.score = 0
def still_has_questions(self):
return self.question_number < len(self.question_list)
def next_question(self):
current_question = self.question_list[self.question_number]
self.question_number += 1
user_answer = input(
f"Q.{self.question_number}: {current_question.text} (True/False)?: "
)
self.check_answer(user_answer, current_question.answer)
def check_answer(self, user_answer, correct_answer):
if user_answer.lower() == correct_answer.lower():
self.score += 1
print("You got it right!")
else:
print("That's wrong.")
print(f"The correct answer was: {correct_answer}.")
print(f"Your current score is: {self.score}/{self.question_number}.\n")