A console quiz made with Python that gets the questions from an external txt file.
# pyquiz 0.1 # 00 # 01
from random import shuffle
import sys, time
import os
class Dic:
def __init__(self, filename):
self.filename = filename
self.list_from_file()
self.dic_from_list()
def list_from_file(self):
"Create a list from the file with data"
self.list_of_questions = []
text = ""
with open(self.filename) as file:
for line in file:
text += line.strip()
if line == "\n":
self.list_of_questions.append(text[:-1])
text = ""
else:
text += "#"
self.list_of_questions.append(text[:-1])
def dic_from_list(self):
"Create a dictionary from self.questions"
self.dict_of_questions = {}
counter = 0
for q in self.list_of_questions:
counter += 1
qna = q.split("#")
self.dict_of_questions[f"question{counter}"] = qna
def print_at_console(self):
"Print at console"
for x in self.dict_of_questions:
print("=====================")
self.texttime(self.dict_of_questions[x][0])
print("=====================")
rnd_ans = self.dict_of_questions[x][1:]
shuffle(rnd_ans)
for qna in rnd_ans:
print(qna)
print("---------\n")
ans = input("What you choose? ")
print("\n"*10)
if ans == self.dict_of_questions[x][1]:
self.texttime("> You are right\n")
else:
self.texttime("> No, your are wrong\n")
input("Hit enter")
print("\n"*10)
def texttime(self, words):
for c in words:
sys.stdout.write(c)
sys.stdout.flush()
time.sleep(0.1)
def shuffle(self):
shuffle(self.list_of_questions)
self.dic_from_list()
questions1 = Dic("questions\\tourism.txt")
questions1.shuffle()
questions1.print_at_console()
New version (in italian)
Some changes. You can now choose with the number of the question.
# pyquiz 0.1 # 00 # 01
from random import shuffle, choice
import sys, time
import os
class Dic:
def __init__(self, filename):
self.filename = filename
self.list_from_file()
self.dic_from_list()
def list_from_file(self):
"Create a list from the file with data"
self.list_of_questions = []
text = ""
with open(self.filename) as file:
for line in file:
text += line.strip()
if line == "\n":
self.list_of_questions.append(text[:-1])
text = ""
else:
text += "#"
self.list_of_questions.append(text[:-1])
def dic_from_list(self):
"Create a dictionary from self.questions"
self.dict_of_questions = {}
counter = 0
for q in self.list_of_questions:
counter += 1
qna = q.split("#")
self.dict_of_questions[f"question{counter}"] = qna
def print_at_console(self):
"Print at console"
for x in self.dict_of_questions:
self.texttime("=====================")
print(self.dict_of_questions[x][0])
rnd_ans = self.dict_of_questions[x][1:]
shuffle(rnd_ans)
for n, qna in enumerate(rnd_ans):
self.texttime(f"{n+1}. {qna}")
self.texttime("---------")
ans = input("Cosa scegli? ")
print(f"hai risposto [{rnd_ans[int(ans)-1]}]\n")
if rnd_ans[int(ans)-1] == self.dict_of_questions[x][1]:
risposta = self.rispostacasuale(r="giusta")
self.texttime(f"> {risposta}\n")
else:
risposta = self.rispostacasuale(r="sbagliata")
self.texttime(f"> {risposta}\n")
# self.texttime(". . . . . . . ."*2)
self.texttime("\n"*3)
print(x)
def rispostacasuale(self, r="giusta"):
if r == "giusta":
g = choice([
"Bravo/a",
"Esatto",
"Complimenti",
"Benissimo"
])
return g
else:
g = choice([
"Non è così, mi dispiace.",
"Non è così",
"Sbagliato"
])
return g
def texttime(self, words):
for c in words:
sys.stdout.write(c)
sys.stdout.flush()
time.sleep(0.02)
print()
def shuffle(self):
shuffle(self.list_of_questions)
self.dic_from_list()
listofquestions = os.listdir("questions")
[print(n, x) for n, x in enumerate(listofquestions)]
print()
num = input("File da caricare > ")
print()
questions1 = Dic(f"questions/{listofquestions[int(num)]}")
questions1.shuffle()
questions1.print_at_console()
Subscribe to the newsletter for updates
Tkinter templatesTwitter: @pythonprogrammi - python_pygame
Claude's Games
1. Memory gameVideos
Speech recognition gamePygame's Platform Game