Cum să creezi o aplicație de quiz
Tutorial pas cu pas pentru o aplicație de quiz în Python: întrebări cu variante, scor, feedback și salvarea întrebărilor în JSON. Cod complet și explicat.
O aplicație de quiz e proiectul perfect de început: e mic, dar te pune să folosești dicționare, bucle, condiții și chiar fișiere. La final ai ceva cu care chiar te poți juca. Hai să-l construim pas cu pas.
Ce vom construi
Un quiz în terminal care:
- afișează întrebări cu variante de răspuns;
- verifică răspunsul și dă feedback imediat;
- ține scorul și îl afișează la final cu un mesaj pe măsură.
Pasul 1: structura întrebărilor
Cea mai curată variantă e o listă de dicționare. Fiecare întrebare are textul, variantele și răspunsul corect.
intrebari = [
{
"text": "Ce funcție afișează text în Python?",
"variante": ["echo", "print", "cout", "write"],
"corect": 2,
},
{
"text": "Ce tip are valoarea 3.14?",
"variante": ["int", "str", "float", "bool"],
"corect": 3,
},
]
Am ales ca corect să fie numărul variantei (începând de la 1). E mai prietenos pentru utilizator decât indexarea de la 0.
Pasul 2: afișarea unei întrebări
Scriem o funcție care arată întrebarea și variantele numerotate:
def afiseaza_intrebare(intrebare):
print("\n" + intrebare["text"])
for i, varianta in enumerate(intrebare["variante"], start=1):
print(f" {i}. {varianta}")
enumerate(..., start=1) ne dă perechi (număr, text) numerotate de la 1. Comod și curat.
Pasul 3: citirea răspunsului în siguranță
Utilizatorul poate scrie orice. Verificăm că a introdus un număr valid:
def citeste_raspuns(numar_variante):
while True:
raspuns = input("Răspunsul tău (număr): ")
if raspuns.isdigit():
n = int(raspuns)
if 1 <= n <= numar_variante:
return n
print("Te rog introdu un număr valid din listă.")
Bucla while True repetă întrebarea până când primește ceva corect. Așa aplicația nu se va bloca niciodată la un input greșit.
Pasul 4: bucla principală și scorul
Acum legăm totul. Parcurgem întrebările, verificăm fiecare răspuns și adunăm scorul:
def ruleaza_quiz(intrebari):
scor = 0
for intrebare in intrebari:
afiseaza_intrebare(intrebare)
ales = citeste_raspuns(len(intrebare["variante"]))
if ales == intrebare["corect"]:
print("Corect!")
scor += 1
else:
corect = intrebare["corect"]
text = intrebare["variante"][corect - 1]
print(f"Greșit. Răspunsul corect era: {text}")
return scor
Pasul 5: mesajul final
La final dăm un feedback în funcție de scor:
def main():
print("=== Quiz de programare ===")
scor = ruleaza_quiz(intrebari)
total = len(intrebari)
print(f"\nAi obținut {scor} din {total} puncte.")
procent = scor / total * 100
if procent == 100:
print("Perfect! Ești expert.")
elif procent >= 50:
print("Bine! Mai exersează puțin.")
else:
print("Nu te descuraja, încearcă din nou.")
main()
Cum îl rulezi
Pune tot codul într-un fișier quiz.py și rulează în terminal:
# în terminal:
# python quiz.py
Idei de îmbunătățire
Acum că merge baza, extinde-l:
- Mută întrebările într-un fișier JSON și citește-le cu modulul
json. Așa adaugi întrebări fără să atingi codul. - Amestecă ordinea cu
random.shuffleca să nu fie mereu la fel. - Adaugă categorii: matematică, istorie, programare.
- Salvează scorurile într-un fișier ca să ții un clasament.
Cel mai bun mod de a învăța dintr-un proiect e să-l extinzi. Pornește simplu, apoi adaugă câte o funcție nouă pe rând.
Recapitulare
Ai folosit liste, dicționare, funcții, bucle, condiții și citire validată — fix uneltele de bază ale oricărui programator. Și ai ceva funcțional la final.
La ByteSchool construim astfel de proiecte împreună, pas cu pas, cu mentori care au lucrat în Big Tech. Te ajutăm să treci de la „înțeleg sintaxa" la „pot construi singur o aplicație".