0 oy
Python kategorisinde (770 puan) tarafından soruldu

Arkadaşlar merhaba. Aşağıdaki kod öbeğinde ses ayarlama işi normalde çalışıyor ancak ses ayarlaması yapılan while döngüsünü sonlandırıp tv durumu öğrenmek istediğimde ses karşıma yine sıfır çıkıyor. Yani ayarlanmamış şekilde. Hata nerede acaba nereyi atlıyorum.

import random
import time

class Kumanda():
    def __init__(self,tv_durumu ="açık",ses = 0 ,kanal_listesi = ["TRT"], mevcut_kanal = "TRT"):
        self.tv_durumu = tv_durumu
        self.ses = ses
        self.kanal_listesi = kanal_listesi
        self.mevcut_kanal = mevcut_kanal

        print("""
        TV DURUMU : {}
        SES DURUMU : {}
        KANAL LİSTESİ : {}
        MEVCUT KANAL : {}
        """.format(self.tv_durumu,self.ses,self.kanal_listesi,self.mevcut_kanal))

    def tv_durumu(self):
        self.tv_durumu()

    def tv_kapat(self):
        print("Tv kapatılıyor....")
        time.sleep(1)

    def ses_ayarlama(self):
        while True:
            işlem = input("Ses açmak için '+'\nSes kapamak için '-'\nÜst menüye dönmek için 'geri'")
            if (işlem == "+"):
                if self.ses != 100:
                    self.ses += 1
                    print("Ses : ",self.ses)
            elif (işlem == "-"):
                if self.ses != 0:
                    self.ses -= 1
                    print("Ses : ",self.ses)
            elif (işlem == "geri"):
                print("Üst menüye dönülüyor")
                time.sleep(1)
                break
            else:
                print("Lütfen geçerli bir işlem yapınız")


    def kanal_ekle(self):
        kanallar = input("Lütfen eklenecek kanalları aralarına ',' koyarak giriniz : ")
        eklenecek = kanallar.split(",")
        for i in eklenecek:
            print("Kanal ekleniyor",i)
            time.sleep(1)
            self.kanal_listesi.append(i)
        print("Kanal ekleme işlemi başarıyla gerçekleştirildi.")

tv = Kumanda()

while True:
    işlem = input("Lütfen bir işlem giriniz.\n1 - Durum Öğrenme\n2 - Tv Açma/Kapama\n3 - Ses Ayarları\n4 - Kanal Listesi\n5 - Kanal Ekleme\n6 - Kendimi Şanslı Hissediyorum\n7 - Mevcut Kanal Öğrenme \n8 - Çıkış")
    if işlem == "1":
        print(tv.__init__())
    if işlem == "2":
        tv.tv_kapat()
        break
    if işlem == "3":
        tv.ses_ayarlama()

1 cevap

+1 oy
(4.1k puan) tarafından cevaplandı

Durum göster kısmında sınıfının __init__ fonksiyonunu çağırıyorsun __init__ fonksiyonunda ses argümanınıa 0 değeri atanmış, sen her durumu göstermeye çalıştığında değere sıfır atanıyor ve durum gösterilince değer 0 çıkıyor. Durumu göstermek için ayrı bir fonksiyon yaz.

class Kumanda():
    def __init__(self,tv_durumu ="açık",ses = 0 ,kanal_listesi = ["TRT"], mevcut_kanal = "TRT"):
        self.tv_durumu = tv_durumu
        self.ses = ses
        self.kanal_listesi = kanal_listesi
        self.mevcut_kanal = mevcut_kanal

    def durum(self):
        print("""
        TV DURUMU : {}
        SES DURUMU : {}
        KANAL LİSTESİ : {}
        MEVCUT KANAL : {}
        """.format(self.tv_durumu,self.ses,self.kanal_listesi,self.mevcut_kanal))

 

(770 puan) tarafından yorumlandı
Cevap için teşekkür ediyorum. Durum kısmınndaki printi __init__ fonksiyonundan  ayırıp ayrı bi fonksiyon yaptım dediğin gibi ve sorunsuz çalışıyor şu anda.

import random
import time

class Kumanda():
    def __init__(self,tv_durumu ="açık",ses = 0 ,kanal_listesi = ["TRT","Atv"], mevcut_kanal = "TRT"):
        self.tv_durumu = tv_durumu
        self.ses = ses
        self.kanal_listesi = kanal_listesi
        self.mevcut_kanal = mevcut_kanal

    def durum(self):
        print("""
        TV DURUMU : {}
        SES DURUMU : {}
        KANAL LİSTESİ : {}
        MEVCUT KANAL : {}
        """.format(self.tv_durumu,self.ses,self.kanal_listesi,self.mevcut_kanal))

    def tv_durumu(self):
        self.tv_durumu()

    def tv_kapat(self):
        print("Tv kapatılıyor....")
        time.sleep(1)

    def ses_ayarlama(self):
        while True:
            işlem = input("Ses açmak için '+'\nSes kapamak için '-'\nÜst menüye dönmek için 'geri'")
            if (işlem == "+"):
                if self.ses != 100:
                    self.ses += 1
                    print("Ses : ",self.ses)
            elif (işlem == "-"):
                if self.ses != 0:
                    self.ses -= 1
                    print("Ses : ",self.ses)
            elif (işlem == "geri"):
                print("Üst menüye dönülüyor")
                time.sleep(1)
                break
            else:
                print("Lütfen geçerli bir işlem yapınız")

    def kanal_ekle(self):
        kanallar = input("Lütfen eklenecek kanalları aralarına ',' koyarak giriniz : ")
        eklenecek = kanallar.split(",")
        for i in eklenecek:
            print("Kanal ekleniyor",i)
            time.sleep(1)
            self.kanal_listesi.append(i)
        print("Kanal ekleme işlemi başarıyla gerçekleştirildi.")

    def __len__(self):
        return len(tv.kanal_listesi)

    def rastgele(self):
        rastgele = random.randint(0,len(tv.kanal_listesi)-1)
        tv.mevcut_kanal = tv.kanal_listesi[rastgele]
        print(tv.mevcut_kanal)

    def mevcutkanal(self):
        print(tv.mevcut_kanal)

tv = Kumanda()

while True:
    işlem = input("Lütfen bir işlem giriniz.\n1 - Tv Kapat\n2 - Durum Öğrenme\n3 - Ses Ayarları\n4 - Kanal Listesi\n5 - Kanal Ekleme\n6 - Kendimi Şanslı Hissediyorum\n7 - Mevcut Kanal Öğrenme \n8 - Çıkış")
    if işlem == "1":
        tv.tv_kapat()
        break
    if işlem == "2":
        print(tv.durum())
    if işlem == "3":
        tv.ses_ayarlama()
    if işlem == "4":
        print(tv.kanal_listesi)
    if işlem == "5":
        tv.kanal_ekle()
    if işlem == "6":
        tv.rastgele()
    if işlem == "7":
        tv.mevcutkanal()
    if işlem == "8":
        print("Televizyon kapatılıyor...")
        time.sleep(1)
        print("Created by Kerim Potuk")
        time.sleep(2)
        break
(4.1k puan) tarafından yorumlandı
Rica ederim, kolay gelsin (:
Yazılım Biliminin Soru Cevap Platformuna hepiniz hoşgeldiniz. Bu platformda kurallara uyarak diğer geliştiricilerle yardımlaşabilirsiniz.
...