CodeBlanks Logo Icon CodeBlanks

Soru ekleme

add_question ile quiz'e soru eklersin.

Quiz sınıfı koleksiyonu yönetir

Tek bir Question örneği elindeyken onu bir listede toplamak gerekir. Quiz sınıfı bu işi üstlenir: questions adında boş bir liste tutar ve add_question metodu ile yeni soruları ekler.

questions: list = field(default_factory=list) satırı, her yeni Quiz örneğine kendi boş listesini verir. default_factory=list kullanmazsan tüm örnekler aynı listeyi paylaşır; bu yaygın bir hatadır.

add_question metodu

add_question metodu tek satırlık bir iş yapar: self.questions.append(q). self sözde değişkeni, örnek kendisini ifade eder; böylece metodun içinde questions listesine erişirsin. Metodu çağırmak için quiz.add_question(Question(...)) yazarsın; veri sınıfı örneği tek satırda hazır olur.

Eklemeden sonra len(quiz.questions) kaç soru olduğunu söyler. Bu sayı, ekleme işinin başarılı olduğunu doğrular.

Uygulama Quiz sınıfını ve add_question metodunu yaz

Üstteki Question sınıfı hazır. Şimdi @dataclass ile Quiz sınıfını tanımla; questions: list = field(default_factory=list) alanını ekle ve def add_question(self, q): metodunu self.questions.append(q) gövdesiyle yaz. Sonra quiz = Quiz() ile bir quiz oluştur, iki soru ekle ve print(len(quiz.questions)) ile soru sayısını yazdır.

Başlangıç kodu

main.py
from dataclasses import dataclass, field

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

# Quiz sınıfını tanımla: questions listesi ve add_question metodu

# Bir quiz oluştur, iki soru ekle, sayıyı yazdı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)

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

Beklenen çıktı

2

Soru ve cevaplar

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

1 questions alanının varsayılanını tamamla

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

    def add_question(self, q):
        self.questions.append(q)
Cevap
@dataclass
class Quiz:
    questions: list = field(default_factory=list)

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

Açıklama: default_factory=list her örneğe ayrı boş liste üretir.

2 default_factory=list ne işe yarar?

  • Liste türünü döndürür
  • Liste öğelerini otomatik doldurur
  • Listeyi sınıf genelinde paylaştırır
  • Her örneğe ayrı boş liste üretir Doğru cevap

Açıklama: default_factory=list her yeni örneğe kendi boş listesini verir; paylaşılan liste hatası önlenir.

3 Quiz sınıfı kavramlarını eşleştir

Kavram Anlamı
questions Soru listesi
add_question Soru ekleme metodu
len Sayı verme işlevi
self Örnek kendisi

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