Global Değişken Sorunum

while True:
sayi = input("Sayı: ")
if sayi == "q":
    print("Program Sonlandı!")
    break
else:
    sayi = int(sayi)
    toplam = 0
    bolen = 1
    while bolen < sayi:
        if sayi % bolen == 0:
            toplam += bolen
            bolen += 1
        else:
            bolen += 1
    if toplam == sayi:
        print("Mükemmel Sayı")
    else:
        print("Mükemmel Sayı Değil")

Merhaba. Programdaki toplam ve bolen değişkenlerini while True dan önce yazdığımda doğru sonucu alamıyorum programdan. Neden iç bloğa yazmak zorunda kalıyorum onu çözemedim?

Programın içinde her girdiden sonra toplam değeri değişiyor, toplam değerini döngünün içinde tanımlarsan 0 değerini’de atmış oluyorsun, eğer döngü dışında tanımlarsan döngü içindeki toplam değişkeni 0 değil bir önceki döngü işleminin toplam değerine sahip olduğundan kod düzgün çalışmıyor.
Toplam değişkenini yine döngü dışında tanımlayabilirsiniz ama döngü içinde sıfırlamanız lazım.

1 Beğeni