Nesne tabanlı programlama (Class – Object) ile Sınav (Quiz) Uygulaması

Python Python - Örnekler Yazılım
cevirici = {
    ord(u'I'): u'ı',
    ord(u'İ'): u'i',
    }

class sinavSinifi:
    def __init__(this,sorular):
        this.sorular = sorular
        this.puan = 0
        this.soruNo = 0
        this.soruSayisi = len(sorular)

    def soruGoster(this):
        if this.soruNo < len(this.sorular):
            print(f"Sorular - {this.soruNo + 1} / {this.soruSayisi}".center(100,"*"))
            soru = this.sorular[this.soruNo]
            print(f"{this.soruNo + 1}-) {soru.soruMetni}")

            for s in soru.soruSecenekleri:
                print("- " + s)

            cevap = input("Cevabınızı giriniz : ")
            this.cevapKontrol(cevap)
            this.soruNo+=1
            this.soruGoster()
        else:
            print("Sınav Bitti".center(100,"*"))
            this.puanGoster()


    def cevapKontrol(this,cevap):
        soru = this.sorular[this.soruNo]
        if soru.soruCevap.translate(cevirici).lower() == cevap.translate(cevirici).lower():
            print("Doğru".center(100,"*"))
            this.puan+=1
        else:
            print("Yanlış".center(100,"*"))
        
    def puanGoster(this):
        print (f"Puan : {this.puan}".center(100,"*"))
                    

class soruSinifi:
    def __init__(this,soruMetni,soruSecenekleri,soruCevap):
        this.soruMetni = soruMetni
        this.soruSecenekleri = soruSecenekleri
        this.soruCevap = soruCevap


''' Soruların tanımlandığı yer. Buraya istediğiniz kadar soru ekleyebilirsiniz. '''

soru1 = soruSinifi("Türkiye'nin başkenti neresidir?", ["İstanbul","Ankara","İzmir","Antalya"],"Ankara")
soru2 = soruSinifi("Yüzölçümü en büyük ilimiz neresidir?", ["Ankara","Konya","Mersin","Kırıkkale"],"Konya")
soru3 = soruSinifi("40 plaka hangi ilimize aittir?", ["Bursa","Uşak","Nevşehir","Kırşehir"],"Kırşehir")
soruListesi = [soru1,soru2,soru3]

sinav1 = sinavSinifi(soruListesi)
sinav1.soruGoster()

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir