Python kod tekrarı

Dostlar selam

sayı = 6
toplam = 0

for i in range(1, sayı):
    if (sayı % i == 0):
        toplam += i
if toplam == sayı:
    print("mükemmel sayı:", toplam)

bu kod 6 sayısının mükemmel sayı olup olmadığını kontrol ediyor ve sorunsuz çalışıyor fakat
1’den 1000’e kadar olan sayıların mükemmel olup olmadığını kontrol etmek istiyorum o yüzden kod’a bir for döngüsü daha ekliyorum

sayı = 1001
toplam = 0
for j in range(1,sayı):
        for i in range(1, j):
            if (j % i == 0):
                toplam += i
        if toplam == j:
            print("mükemmel sayı:", toplam)

ve böyle bir kod yazdım fakat çalışmıyor yardımcı olur musunuz ?

Kodu fonksiyonlara ayirman lazim.

Parametre olarak verilen bir sayinin mukemmel olup olmadigi bilgisini donduren bir fonksiyon yazip yukarida 6 ile, asagida da bilumum j degerleriyle cagirman lazim.

1 Beğeni

Toplam her defasında tekrar sıfır olarak ayarlanmalıdır. Senin programında 1 değeri için mükemmel sayı kontrolu yapıldığında toplam değeri 1 olur ve ilk if koşulunda 1 sayısının mükemmel olduğu saptanır. Ancak 2 değeri için kontrol yapılmak istendiğinde senin toplam değeri 1 olarak başlar ve 2 için kontrol yaptığında if koşuluna gelindiğinde toplamın 3 değerini alması gerekirken 4 değerini alır çünkü ilk kontrolden/ donguden sonra toplam değeri 0 yapılmamıştır. Bunun için toplam = 0 satırını ilk döngünün içerisine tanimlaman gerekir.

1 Beğeni

Haklısınız, Yardıcı oldunuz teşekkürler.

1 Beğeni