Completed the Trivia Quiz Project!
Fix Day 17 README Add trivia demo
This commit is contained in:
parent
f462cc5ae0
commit
5f7dcd5629
8 changed files with 157 additions and 3 deletions
3
.gitignore
vendored
3
.gitignore
vendored
|
|
@ -1,6 +1,3 @@
|
|||
# Ignore Markdown formatting being inconsistent with markdownlint
|
||||
.prettierignore
|
||||
|
||||
# Ignore virtual environments
|
||||
venv
|
||||
|
||||
|
|
|
|||
1
.prettierignore
Normal file
1
.prettierignore
Normal file
|
|
@ -0,0 +1 @@
|
|||
*/*.md
|
||||
6
Day 17/README.md
Normal file
6
Day 17/README.md
Normal 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/).
|
||||
|
||||

|
||||
22
Day 17/day-17-start/main.py
Normal file
22
Day 17/day-17-start/main.py
Normal 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)
|
||||
82
Day 17/quiz-game-start/data.py
Normal file
82
Day 17/quiz-game-start/data.py
Normal 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"],
|
||||
},
|
||||
]
|
||||
17
Day 17/quiz-game-start/main.py
Normal file
17
Day 17/quiz-game-start/main.py
Normal 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)}.")
|
||||
4
Day 17/quiz-game-start/question_model.py
Normal file
4
Day 17/quiz-game-start/question_model.py
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
class Question:
|
||||
def __init__(self, text, answer):
|
||||
self.text = text
|
||||
self.answer = answer
|
||||
25
Day 17/quiz-game-start/quiz_brain.py
Normal file
25
Day 17/quiz-game-start/quiz_brain.py
Normal 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")
|
||||
Loading…
Add table
Add a link
Reference in a new issue