Python
Birleştirme
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.
Örnek çözümü göster
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)
Kendini test et
-
Neden cevapları kod içinde sabit tutuyoruz?
- Çıktı deterministik olur, test kolaylaşır
- Program daha hızlı çalışır
- Sınıflar daha az bellek kullanır
- input() fonksiyonu çalışmaz
Cevabı göster
Çıktı deterministik olur, test kolaylaşır — Sabit cevaplarla çıktı her çalışmada aynı olur; test kolaylaşır.
-
Skoru yazdırma satırını tamamla
quiz.check_answer(quiz.questions[2], "Ankara")
print(quiz.____)
Cevabı göster
quiz.check_answer(quiz.questions[2], "Ankara")
print(quiz.score)
-
Birleştirme adımlarını eşleştir
- add_question
- Soru eklenir
- play
- Sorular gösterilir
- check_answer
- Cevap kontrol edilir
- quiz.score
- Skor yazdırılır
Sıradaki ders: ABC