Bir sayının tam sayı bölenlerini bulma programı

def bolenleri_bul(sayi):
bolen_listesi = []
for i in range(-100,100,sayi+1):
if (sayi % i == 0):
bolen_listesi.append(i)
return bolen_listesi

while True:
sayi = input(“Bölenlerini bulmak istediğiniz sayıyı giriniz :”)
if (sayi == “0”):
print(“0”)
break
else:
sayi = int(sayi)
print(bolenleri_bul(sayi))

Bu kodu -100 ve 100 arası girilen sayının pozitif ve negatif tam sayı bölenlerini bulmam gerek fakat takıldım kaldım yardımcı olursanız çok sevinirim

Kullanıcıdan alınan sayı kadar fonksiyonun içinde artış gerçekleştiriyor:

for i in range(-100,100,sayi+1)

Bu kısımdaki sayi+1 e gerek yok.

Ayrıca fonksiyonun içinde 0 durumunu kontrol etmekte fayda var:

if i==0:
   i+=1

Son durumda şu şekilde çalışıyor gibi:

def bolenleri_bul(sayi):
    bolen_listesi = []
    for i in range(-100,100):
        if i==0:
            i+=1
        elif (sayi % i == 0):
            bolen_listesi.append(i)
    return bolen_listesi


while True:
    sayi = input("Bölenlerini bulmak istediğiniz sayıyı giriniz :")
    if (sayi == "0"):
        print("0")
        break
    else:
        sayi = int(sayi)
        print(bolenleri_bul(sayi))
2 Beğeni

Merhaba, yazdığınız kod çok güzel olmuş ama ben küçük bir hata buldum.

Biz hem bölen sayıları hem de bölünecek olan sayıyı -100 ile 100 arasında seçiyoruz. Bu nedenle -98 veya 52 gibi sayılar için bütün tam bölen tamsayıları bulabiliyoruz. Ancak -220 veya 1400 gibi bir sayı seçersek yalnızca -100 ile 100 arasındaki bölenleri veriyor. Haliyle liste oldukça eksik oluyor.

Ben şöyle bir satır ekleyerek bu sorunu çözdüm:

def bolenleri_bul(sayi):
bolen_listesi = []
for i in range(-100,100):
if i==0:
i+=1
elif (sayi % i == 0):
bolen_listesi.append(i)
return bolen_listesi

while True:
sayi = int(input(“Bölenlerini bulmak istediğiniz sayıyı giriniz :”))
if (sayi == “0”):
print(“0”)
break
elif sayi not in range (-100,100):
print(“Sayınız -100 ile 100 arasında olmalıdır”)
continue
else:
sayi = int(sayi)
print(bolenleri_bul(sayi))

Ancak bu sefer de 0 da hata veriyor. Neden olduğunu anlamadım :frowning:

1 Beğeni
while True:
    try:
        sayi = int(input("Bölenlerini bulmak istediğiniz sayıyı giriniz :"))
        if (sayi == 0):
            print("0 Girilemez!")
        elif sayi<-100 or sayi>100:
                print("Sayınız -100 ile 100 arasında olmalıdır")
        else:
            sayi = int(sayi)
            print(bolenleri_bul(sayi))
    except:
        print("Uygun Değer Giriniz!")