Aynı Kodun Farklı Iterationda Çalışmaması

Merhaba python üzerinde basit bir kod parçacığı oluşturmaya çalışıyordum. Amacım girdi olarak verilen ve herhangi bir noktalama işareti ile bölünmemiş bir sayıyı gerekli yerlerine virgüller koyarak okunaklı hale getirmekti. Şu mantıkla ilerledim, mesela 9 basamaklı veya 10 basamaklı sayı olsun fark etmez, sayıyı bir karakter dizisi gibi düşünürsek sondan her 4. ve 4ün katı olan n. basamakta " , " bulunur ve yüzlük olarak ayrılır.
Aşağıdaki kodda o mantıkla ilerledim ama ilk 4. indekste koyması gereken virgülü koyarken 8. basamakta koyması gereken virgülü bir basamak ileriye koyarak yanlış bir görünüm sergiliyor. Kod sanki ilk seferde doğru çalışırken bir sonraki çalışması gereken yerde evrim geçirmiş gibi geldi bana.
Burada hatalı olan yer neresidir ?

KOD

a = 999888777
a = str(a)
a = a[::-1]
b = list()
count = 0
for i in a:
    count += 1
    if count % 4 == 0:
        b.append(",")
    
    b.append(i)
    

print(b)
b.reverse()
b = "".join(b)
print(b)

Oncelikle guzel bir soru icin tesekkurler. Amaci, yazarin dusuncesini aciklayan bir soru kismi altinda tam calisan ornek kod.

Sorun basitce su: Virgullenmis bir sayinin her 4 karakterinden bir tanesi , iken virgullenmemis bir sayinin her 3 basamagindan bir tanesinin yanina , eklenmesi gerekiyor.

Yani count % 4 yerine count % 3 kullanilmasi gerekiyor.

Yukaridaki kodda bu degisikligi yapinca cikan yeni sorunun cozulmesini egzersiz olarak birakiyorum :slight_smile:

1 Beğeni

Output = 9,998,887,77
Böyle bir çıktı geldi. Hala istediğim görünüme sahip olmadı

Evet, bahsettigim sorun buydu. Neden ucuncu yerine ikinci elemandan sonra geliyor ilk virgul?

Problemi çözdüm, faydalanmak isteyenler için bırakıyorum.

ÇÖZÜM

a = 999888777
a = str(a)
a = a[::-1]
b = list()
count = 0
for i in a:
    if count == 0:
        b.append(i)
        count += 1
    elif count % 3 == 0:
        b.append(",")
        b.append(i)
        count += 1
    else:
        b.append(i)
        count += 1

b.reverse()
b = "".join(b)
print(b)