CodeBlanks Logo Icon CodeBlanks

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.

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)
    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

main.py
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

Soru
quiz.check_answer(quiz.questions[2], "Ankara")
print(quiz.____)
Cevap
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

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