CodeBlanks Logo Icon CodeBlanks

Quiz oynatma

run ile soruları sırayla sorarsın.

Quiz'i oynatma

Quiz sınıfına play metodu ekleyerek tüm soruları ekrana yazdırırsın. Metodun gövdesinde for q in self.questions: döngüsüyle her soruyu gezer, print(q.text) ile metnini gösterirsin.

Bu basit oynatma, dışarıdan girdi beklemeden soru listesini sıralar. Daha sonra check_answer ile cevap karşılaştırmayı ekleyeceğiz. Şimdilik amacımız soruları sırayla göstermek; oylama ve puanlama bir sonraki derste geliyor.

Soruları sırayla göstermek

Oynatma sırasında her sorunun sırasını da göstermek isteyebilirsin. enumerate(self.questions, start=1) kullanarak hem sıra numarasını hem de soruyu elde edersin. Böylece çıktı Soru 1: ..., Soru 2: ... biçiminde düzenli görünür.

Formatlama için f-dizgesi kullanırsın: f"Soru {i}: {q.text}". Burada i sıra numarası, q.text soru metnidir. Bu, çıktıyı test edilebilir ve deterministik kılar; her çalıştırma aynı sonucu verir.

Uygulama play metodunu ekle

Üstteki Quiz sınıfına def play(self): metodunu ekle. Gövdesinde for i, q in enumerate(self.questions, start=1): döngüsü ve print(f"Soru {i}: {q.text}") satırı olsun. Sonra bir quiz oluştur, iki soru ekle (text="Başkent?" ve text="2x2?") ve quiz.play() çağrısı yap.

Başlangıç kodu

main.py
from dataclasses import dataclass, field

@dataclass
class Question:
    text: str = ""
    answer: str = ""

@dataclass
class Quiz:
    questions: list = field(default_factory=list)

    def add_question(self, q):
        self.questions.append(q)

# Quiz sınıfına play metodu ekle

# Bir quiz oluştur, iki soru ekle ve play'i çağır

Örnek çözüm

main.py
from dataclasses import dataclass, field

@dataclass
class Question:
    text: str = ""
    answer: str = ""

@dataclass
class Quiz:
    questions: list = field(default_factory=list)

    def add_question(self, q):
        self.questions.append(q)

    def play(self):
        for i, q in enumerate(self.questions, start=1):
            print(f"Soru {i}: {q.text}")

quiz = Quiz()
quiz.add_question(Question(text="Başkent?", answer="Ankara"))
quiz.add_question(Question(text="2x2?", answer="4"))
quiz.play()

Beklenen çıktı

Soru 1: Başkent?
Soru 2: 2x2?

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 play metodu ne döndürür?

  • Yalnızca ekrana yazı yazar, değer döndürmez Doğru cevap
  • Doğru cevapları
  • Bir liste
  • Toplam skoru

Açıklama: play metodu print ile çalışır.

2 Oynatma parçalarını eşleştir

Kavram Anlamı
for q in self.questions Döngü
enumerate(...) Sıra numarası
print(q.text) Metni yazdır
f"Soru {i}: ..." Biçimli çıktı

3 play metodunun gövdesini tamamla

Soru
    def play(self):
        for i, q in enumerate(self.questions, start=1):
            print(f"Soru {____}: {q.text}")
Cevap
    def play(self):
        for i, q in enumerate(self.questions, start=1):
            print(f"Soru {i}: {q.text}")

Açıklama: i sıra numarasını temsil eder.

Orta seviye bölümündeki tüm dersler