Python'da sort metodu ile sıralama nasıl yapılır?

zEtra

Kilopat
Katılım
26 Ocak 2018
Mesajlar
38
Çözümler
1
Daha fazla  
Cinsiyet
Erkek
Bir kod yazdım. Kullanıcıdan 10 tane meyve istenecek. İstenilen meyvelerin listesini sort metodu ile sıralayıp yazmam lazım. Aynı meyveden 2 tane girilince bir daha sormasını istiyorum ama onun yerine birini siliyor ve 9 tane meyve yazıyor. Nerede hata yaptım?

yazdığım kod:
meyveler = []
for a in range(0,11):
meyve_listesi = input('Meyva ismi girin: ')
if meyve_listesi in meyveler:
a = a - 1
continue
else:
meyveler.append(meyve_listesi)
meyveler.sort()
print(f"meyveler:\n {meyveler}")
 
Son düzenleme:
Python:
meyveler = []
for a in range(5):
    meyve_listesi = input('Meyva ismi girin: ')
    while meyve_listesi in meyveler:
        meyve_listesi = input('Meyva ismi girin: ')
    meyveler.append(meyve_listesi)
    meyveler.sort()     
print(f"meyveler:\n {meyveler}")

Doğru mu böyle?
 
Kral, sebep "for" döngüsüne atadığın değişkeni arttırıp azaltamazsın. Sen "a" değişkeninin RAM'deki kopyası üzerinde çıkartma işlemi yapıyorsun. "a = 3" iken aynı meyve adı girilirse tekrar meyve istiyorsun ama bu sırada "a = 4" oluyor. Yani programa bir adım atlatmış oluyorsun.

"range" yerine "while" döngüsü kullanman ve kullanıcının kaç adet meyve adı girdiğini bir sayaç değişkeniyle kontrol etmen daha doğru olacaktır.
Python:
meyveler = []

for i in range(10):
    print("Meyveler:", meyveler) # Bu, kullanıcı girdiği değerleri aklında tutmasın diye.
    meyve = input("Meyve giriniz: ")

    while True: # Bu sayede kullanıcı farklı bir ad girene kadar bu döngü içinde kalır.
        if meyve in meyveler:                              # Böylece i'nin değeri sabit tutularak işlem yapılabilir.
            print("Bu meyveyi daha önce girdiniz: ")
            meyve = input("Meyve giriniz: ")
           
        else:
            meyveler.append(meyve)
            break


meyveler.sort()
print(meyveler)

Bu kodları mutlaka incele. Döngüler hakkında sana çok faydası olacak.
 
Son düzenleme:
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ı