Soru ekleme
- Python kursu
- Orta seviye
- Ders 43/116
- 6 dk
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
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
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
@dataclass
class Quiz:
questions: list = field(default_factory=____)
def add_question(self, q):
self.questions.append(q)
@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 |