Python'da Yanlış Return Alıyorum

yiange28

Megapat
Katılım
20 Ağustos 2014
Mesajlar
905
Makaleler
2
Çözümler
1
Arkadaşlar, merhaba.

Pythonda Class konusuna yeni geçtim. Kodu çalıştırıyorum ama seçenek 7 döndürmeye çalıştığımda program_ listesi program metoduna işlenmiş görünüyor.

Nedenini bulamadım henüz.

1630425030159.png


[CODE lang="python" title="Class Denemesi" highlight="133"]import random
import time

class pc():

def __init__(self, durum = "Kapalı", ses = 0 , program_listesi = ["VSC"] , program = "VSC"):

self.durum = durum

self.ses = ses

self.program_listesi = program_listesi

self.program = program

def pc_ac(self):

if (self.durum == "Açık"):
print("PC Açık...")
else:
print("PC Açılıyor")
self.durum = "Açık"

def pc_kapa(self):

if (self.durum == "Kapalı" ):
print("PC Kapallı")
else:
print("PC Kapanıyor")
self.durum = "Kapalı"

def ses_ayarla(self):
while True:

istek = input("Arttırmak için + ya, eksiltmek için - ye basınız.")

if (istek == "+"):
if (self.ses != 100):
self.ses += 1
print("Ses: {}".format(self.ses))
elif (istek == "-"):
if (self.ses != 0):
self.ses -= 1
print("Ses: {}".format(self.ses))
else :
print("Ses ayarından çıkılıyor. Ses: {} ".format(self.ses))
break

def program_ekle(self,program_ismi):

print("{} ekleniyor.".format(program_ismi))

time.sleep(1)

self.program_listesi.append(program_ismi)

print(self.program_listesi)

return self.program_listesi

def rastgele_program(self):

rastgele = random.randint(0,(len(self.program_listesi)-1))

self.program = self.program_listesi[rastgele]

print("{} açık olan program.".format(self.program))

def __len__(self):
return len(self.program_listesi)

def __str__(self):
return "Durum: {} \n Ses:{} \nProgram Listesi: \nProgram: {} ".format(self.durum , self.ses , self.program_listesi , self.program)

PC = pc()

print("""

1-PC Aç

2-PC Kapa

3-Ses Ayarla

4-Program Ekle

5-Program Listesi

6-Rastgele Program

7-Info

Çıkmak için "q"

""")


while True:
secenek = input("Seçeneği yazınız: ")

if(secenek == "q"):
print("Program kapatıldı.")
break

elif(secenek == "1"):
PC.pc_ac()

elif(secenek == "2"):
PC.pc_kapa()

elif(secenek == "3"):
PC.ses_ayarla()

elif(secenek == "4"):

program_isimleri = input("Program isimlerini ',' ile ayırınız.")

program_listesi = program_isimleri.split(",")

for ekle in program_listesi:
PC.program_ekle(ekle)

elif(secenek == "5"):
print(PC.program_listesi)

elif(secenek == "6"):
PC.rastgele_program()

elif(secenek == "7"):
#PC.__str__
print(PC)
else:
break[/CODE]
 
Son düzenleyen: Moderatör:
Program Listesinin ve en son açık programı ayrı ayrı format ile gönderdiğim gibi yazsın istiyorum. Progran ekleme yapınca sıkıntı yok. ama __str__ ile çağırınca yanlış geliyor. Orda mesela dsc yi ekledim listeye, dsc yi ord yazdırdı terminalde. Sıkıntı __str__ ile neden gelmediğini anlamadı.
 
Python:
    def __str__(self):
        return "Durum: {} \n Ses:{} \nProgram Listesi: {} \nProgram: {} ".format(self.durum, self.ses,
                                                                              self.program_listesi, self.program)

Bu şekilde dene.
 
Uyarı! Bu konu 5 yıl önce açıldı.
Muhtemelen daha fazla tartışma gerekli değildir ki bu durumda yeni bir konu başlatmayı öneririz. Eğer yine de cevabınızın gerekli olduğunu düşünüyorsanız buna rağmen cevap verebilirsiniz.

Technopat Haberler

Yeni konular

Geri
Yukarı