Înapoi la blog
#python#proiect#quiz#tutorial

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.shuffle ca 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".