Listeyi Son Elemanından Başa Sardırmak

Kullanıcıya 4 tane seçenek sunuyorum diyelim, ve kullanıcı bu seçeneklerden 3.sünü seçmiş olsun.
Seçenekler:
1-) Durdur
2-) Önceki
3-) Sonraki
4-) Kapat

Ve bir liste objesi düşünün:
liste= [“A”, “B” , “C”]
Kullanıcının şuan “C” elemanı ile bir etkileşim halinde olduğunu varsayalım. Ve kullanıcı burada C’den sonraki elemana geçmek isterse, 3.seçeneği seçecektir. Ben kullanıcının 3.seçeneği seçtikten sonra listenin başına, yani ‘A’ elemanına dönmesini istiyorum, bunu nasıl yaparım?

Mevcut elemanın listenin sonunda yer alıp almadığına bakabilirsiniz.

Şu tür koşul cümleleri ile yapabilirsiniz:

liste = ["A", "B", "C"]
mevcut_eleman = 0  # indeks olarak
while True:
    komut = input("Durdur, Önceki, Sonraki, Kapat: ")
    if komut == "Sonraki":
        if mevcut_eleman == len(liste)-1:
            mevcut_eleman = 0
        else:
            mevcut_eleman += 1
        print(f"Sonrakine Geçildi: {liste[mevcut_eleman]}")
    if komut == "Önceki":
        if mevcut_eleman == 0:
            mevcut_eleman = len(liste)-1
        else:
            mevcut_eleman -= 1
        print(f"Öncekine Geçildi: {liste[mevcut_eleman]}")
    if komut == "Kapat":
        quit()

Yeni bir komut girildiğinde indeks değerlerini kontrol ederek işlem yapabilirsiniz.
Aslında komut değişkeninin yer aldığı koşul cümleleri python 3.10 ile match-case kullanılarak daha hoş bir şekilde yapılabilir :smiley:

liste = ["A", "B", "C"]
mevcut_eleman = 0  # indeks olarak
while True:
    komut = input("Durdur, Önceki, Sonraki, Kapat: ")
    match komut:
        case "Sonraki":
            if mevcut_eleman == len(liste)-1:
                mevcut_eleman = 0
            else:
                mevcut_eleman += 1
            print(f"Sonrakine Geçildi: {liste[mevcut_eleman]}")
            
        case "Önceki":
            if mevcut_eleman == 0:
                mevcut_eleman = len(liste)-1
            else:
                mevcut_eleman -= 1
            print(f"Öncekine Geçildi: {liste[mevcut_eleman]}")
            
        case "Kapat":
            quit()
3 Beğeni

veya mod ile

uzunluk = len(liste)

    yon = -1 if inp == "önceki" else +1
    indeks = (indeks + yon) % uzunluk

çünkü

The modulo operator always yields a result with the same sign as its second operand (or zero)

; yani hep 0, 1, …, uzunluk-1 aralığında kalıyor indeks.


ilgililerden başlığı daha açıklayıcı bir hale büründürmelerini talep ediyorum :ğ
3 Beğeni