Birleştirme
- Python kursu
- Orta seviye
- Ders 46/116
- 6 dk
Quiz sınıfını menü döngüsüyle birleştirirsin.
Birleştirme
Artık tüm parçalar hazır: Question sınıfı, Quiz sınıfı, add_question, play ve check_answer metotları ile score özniteliği. Şimdi bunları birleştirip çalışan bir mini quiz uygulaması elde edeceğiz.
Son adımda üç soruluk bir quiz oluşturacak, her birine cevap verecek ve skoru yazdıracağız. Cevapları kod içinde sabit tutarak çıktıyı deterministik yapıyoruz; gerçek bir uygulamada bunlar input() ile gelebilir ama burada test edilebilirlik için sabit değerler kullanıyoruz.
Üç soruluk mini quiz
Üç sorudan oluşan bir quiz tanımlayacağız: "Başkent?" (cevap "Ankara"), "2x2?" (cevap "4") ve "Yaz mevsimi?" (cevap "Haziran"). Üç soruyu da add_question ile ekleriz.
Sonra her soruya check_answer ile bir cevap veririz. İlk iki cevap doğru, üçüncü yanlış olsun. Beklenen skor: 2. Böylece uygulamanın doğru çalıştığını net biçimde görebiliriz.
Uygulama Mini quiz uygulamasını çalıştır
Üstteki tüm sınıflar hazır. Şimdi bir quiz oluştur; üç soru ekle: Question(text="Başkent?", answer="Ankara"), Question(text="2x2?", answer="4") ve Question(text="Yaz mevsimi?", answer="Haziran"). quiz.play() ile soruları göster. Sonra quiz.check_answer(quiz.questions[0], "Ankara"), quiz.check_answer(quiz.questions[1], "4") ve quiz.check_answer(quiz.questions[2], "Temmuz") çağrılarını yap. En son print(quiz.score) ile skoru yazdır.
Başlangıç kodu
from dataclasses import dataclass, field
@dataclass
class Question:
text: str = ""
answer: str = ""
@dataclass
class Quiz:
questions: list = field(default_factory=list)
score: int = 0
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}")
def check_answer(self, q, guess):
if q.answer == guess:
self.score += 1
return True
return False
# Bir quiz oluştur, üç soru ekle, oynat, cevapları kontrol et, skoru 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)
score: int = 0
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}")
def check_answer(self, q, guess):
if q.answer == guess:
self.score += 1
return True
return False
quiz = Quiz()
quiz.add_question(Question(text="Başkent?", answer="Ankara"))
quiz.add_question(Question(text="2x2?", answer="4"))
quiz.add_question(Question(text="Yaz mevsimi?", answer="Haziran"))
quiz.play()
quiz.check_answer(quiz.questions[0], "Ankara")
quiz.check_answer(quiz.questions[1], "4")
quiz.check_answer(quiz.questions[2], "Temmuz")
print(quiz.score)Beklenen çıktı
Soru 1: Başkent? Soru 2: 2x2? Soru 3: Yaz mevsimi? 2
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Neden cevapları kod içinde sabit tutuyoruz?
- Çıktı deterministik olur, test kolaylaşır Doğru cevap
- Program daha hızlı çalışır
- Sınıflar daha az bellek kullanır
- input() fonksiyonu çalışmaz
Açıklama: Sabit cevaplarla çıktı her çalışmada aynı olur; test kolaylaşır.
2 Skoru yazdırma satırını tamamla
quiz.check_answer(quiz.questions[2], "Ankara")
print(quiz.____)
quiz.check_answer(quiz.questions[2], "Ankara")
print(quiz.score)
Açıklama: quiz.score özniteliği skoru verir.
3 Birleştirme adımlarını eşleştir
| Kavram | Anlamı |
|---|---|
add_question |
Soru eklenir |
play |
Sorular gösterilir |
check_answer |
Cevap kontrol edilir |
quiz.score |
Skor yazdırılır |