Nesne tabanlı programlama quiz uygulaması

Ark_Us

Kilopat
Katılım
7 Nisan 2017
Mesajlar
850
Makaleler
1
Çözümler
7
Herkese merhaba.

Hikaye şöyle OOP son dersinde hoca quiz uygulaması yazmaya başladı belli bir noktaya kadar aşırı zorlanmadım ama bir noktada beynimi PC üzerine bıraktım resmen.

Python:
# Question

class Question:
    def __init__(self, texs, choices, answer):
        self.texs = texs
        self.choices = choices
        self.answer = answer
    def checkAmswer(self, answer):
        return self.answer == answer


# print(q1.checkAmswer("python"))
# print(q1.checkAmswer("C#"))

# Quiz

class Quiz:
    def __init__(self, questions):
        self.questions = questions
        self.score = 0
        self.scoreIndex = 0
    def getQuestion(self):
        return self.questions[self.scoreIndex]
 
    def questionDisplay(self):
        question = self.getQuestion()

q1 = Question("en iyi programlama dili hangisidir ?" , ["C#" , "python" , "javascrip" , "java"], "python")
q2 = Question("en popüler programlama dili hangisidir ?" , ["python" , "javascrip", "C#", "java"], "python")
q3 = Question("en çok kazandıran programlama dili hangisidir ?" , ["C#" , "javascrip" , "java", "python"], "python")
questions = [q1,q2,q3]

quiz = Quiz(questions)

question = quiz.getQuestion()
print(question.texs)

Şimdi ben kodu yanlış okumadıysam.

Questions değişkenine sorular liste biciminde atılıyor ardından bir quiz degişkeni daha oluşturup quiz = quiz(questions) yazarak soruları Quiz class'ına gönderiyor.

Ardından quiz Class'ın içine getquestion adında metot tanımlıyor bu metoda return self. question[self.scoreIndex] yazılıyor eğer ki burayı yanlış okumadıysam burada self. question question alanına ulaşarak ardından [self.scoreIndex] yazılarak scoreındex alanıla olaşılıyor orasıda 0 şu an questions değişkeni içinde 0 ya da [0] var gelelim bomba kısma en sonda print(questions. text) diyerek bana çıktı olarak en iyi programlama dili hangisidir? Zaten bu çıktıyı görünce beynimi masaya bıraktım.
Şimdi nasıl oldu bu anlayamadım, artık masaya bıraktığım beyni yiyeceğim az kaldı tamam question da 0 Indenx'i (en azıdna ben öyle düşünüyorum) var ama. texs diyerek taa questiona nasıl ulaşıyor onu anlayamadım.

Yani print(question. text)den nasıl bu en iyi programlama dili hangisidir? Çıktısı elde ediliyor?
 
Son düzenleme:
quiz.getQuestion'nun ne döndürdüğünü biliyorsun self.question[self.scoreIndex] index sıfır olduğuna göre q1'i döndürecek. q1 nesnesinden de texs fonksiyonu çağrılınca ekrana "en iyi programlama dili hangisidir ?" çıktısı veriyor. yani quiz.getQuestion() bize q1 i döndürüyor. question.texs demek ise q1.texs demek anlamına geliyor.

Python:
question = quiz.getQuestion()
print(question.texs)
 
Yani [0] question class'ına mı gönderdi aslıdna bunu tahmin ettim ama. Text deyince böyle bir kullanım bilfigim kadarıyla yok.
 
Bu da aynı çıktıyı verecek eğer anlamanı kolaylaştıracaksa, bunun dışında scoreIndex değerini arttırarak değişimleri de görürsün.
print(Quiz(questions).getQuestion().texs)
 
quiz.getQuestion'nun ne döndürdüğünü biliyorsun self.question[self.scoreIndex] index sıfır olduğuna göre q1'i döndürecek. q1 nesnesinden de texs fonksiyonu çağrılınca ekrana "en iyi programlama dili hangisidir ?" çıktısı veriyor. yani quiz.getQuestion() bize q1 i döndürüyor. question.texs demek ise q1.texs demek anlamına geliyor.

Python:
question = quiz.getQuestion()
print(question.texs)
valla teşekürler artı kkodları yanlış okudugmu düşünmeye başlamıştım q1.text yazılıcna Question class'ın tesx alanına ulaşılabiliyor değilmi ?
Bu da aynı çıktıyı verecek eğer anlamanı kolaylaştıracaksa, bunun dışında scoreIndex değerini arttırarak değişimleri de görürsün.
print(Quiz(questions).getQuestion().texs)
aman müdür dur kafayı karıştırma :D zaten beyin alev aldı alacak :D
 
mesela getQuestion'a index parametresi ekle ve print üzerinden sonucun nasıl değiştiğini izle
Python:
def getQuestion(self, index):
    return self.questions[index]

Python:
# Question

class Question:
    def __init__(self, texs, choices, answer):
        self.texs = texs
        self.choices = choices
        self.answer = answer
    def checkAmswer(self, answer):
        return self.answer == answer


# print(q1.checkAmswer("python"))
# print(q1.checkAmswer("C#"))

# Quiz

class Quiz:
    def __init__(self, questions):
        self.questions = questions
        self.score = 0
        self.scoreIndex = 2
    def getQuestion(self, index):
        return self.questions[index]
 
    def questionDisplay(self):
        question = self.getQuestion()

q1 = Question("en iyi programlama dili hangisidir ?" , ["C#" , "python" , "javascrip" , "java"], "python")
q2 = Question("en popüler programlama dili hangisidir ?" , ["python" , "javascrip", "C#", "java"], "python")
q3 = Question("en çok kazandıran programlama dili hangisidir ?" , ["C#" , "javascrip" , "java", "python"], "python")
questions = [q1,q2,q3]



print(Quiz(questions).getQuestion(2).texs)
 

Yeni konular

Geri
Yukarı