Pyhton Kodu Çalışmıyor

eczhasan_

Kilopat
Katılım
23 Ağustos 2013
Mesajlar
33
Yer
Konya, Türkiye
Python ile kullanıcıdan iki sayı isteyip bu iki sayı arasındaki asal sayıların çıktısını veren bir kod yazmak istiyorum. Aşağıdaki kodda görünürde bi hata yok gibiyken sayıları girdiğimde kodun yanlış sonuçlar ürettiğini gördüm. Yardımcı olursanız sevinirim.

Python:
def x(i, j):
    for m in range(i, j + 1):
        if m == 0:
            return False
        elif m == 1:
            return False
        else:
            for n in range(2, m):
                if n == 2:
                    liste.append(2)
                    return True
                elif m % n != 0:
                    liste.append(n)
                    return True
                else:
                    return False


while True:
    liste = list()
    a = int(input("Aralığın ilk sayısını giriniz: "))
    b = int(input("Aralığın ikinci sayısını giriniz: "))
    if x(a, b):
        print(liste)
 
Çıktı olarak sadece 2 veriyor :D
1629631998084.png
 
Kodda hata yokken mi?
Fonksiyonda liste diye bir değişken yokken liste kullanıyorsun. Sırf bu bile hata. Muhtemelen asıl sorun bu.

Asal listesi oluşturması gerekn fonksiyon neden true ya da false döndürüyor anlamadım. Kodun ne yaptığını anlayacak en ufak bir işaret göremediğim için kendim yazdım.
Neden while kullanıp defalarca çalıştırdığını da anlamadım.

Kod:
def f(first, last):
    flag = 0
    liste = []

    if first < 2:
        first = 2
    
    for i in range(first, last + 1):
        for j in range(2, i):
            if i % j == 0:
                flag = 1
                break

        if flag == 0:
            liste.append(i)
            
        flag = 0
    
    return liste

while True:
    first = int(input("Aralığın başlangıç değerini giriniz: "))
    last = int(input("Aralığın bitiş değerini giriniz: "))
    print(f(first, last))
 
Kodda hata yokken mi?
Fonksiyonda liste diye bir değişken yokken liste kullanıyorsun. Sırf bu bile hata. Muhtemelen asıl sorun bu.

Asal listesi oluşturması gerekn fonksiyon neden true ya da false döndürüyor anlamadım. Kodun ne yaptığını anlayacak en ufak bir işaret göremediğim için kendim yazdım.
Neden while kullanıp defalarca çalıştırdığını da anlamadım.

Kod:
def f(first, last):
    flag = 0
    liste = []

    if first < 2:
        first = 2
   
    for i in range(first, last + 1):
        for j in range(2, i):
            if i % j == 0:
                flag = 1
                break

        if flag == 0:
            liste.append(i)
           
        flag = 0
   
    return liste

while True:
    first = int(input("Aralığın başlangıç değerini giriniz: "))
    last = int(input("Aralığın bitiş değerini giriniz: "))
    print(f(first, last))
Öncelikle ilginiz için teşekkürler.
Kodda hata yokken gibi kesin bir ifade kullanmadığımı düşünüyorum. İnternetten hobi olarak kendi çabamla Python öğrenmeye çalışıyorum. Kendimce aklıma böyle bir proje geldi ve bunu koda dökmek istedim. Ancak yine kendimce "kodda acaba nerede hata var?" diye düşünüp bir sonuç bulamadığımdan "...görünürde bi hata yok gibiyken..." yazdım. Yoksa kesinlikle bir şeylerin hatalı olduğu aşikâr zira kod düzgün yanıt vermiyor.
Fonksiyonun içine liste değişkeni tanımlamadım çünkü zaten liste değişkenine globalde yer verdiğim için fonksiyon o değişkeni kullanabilir diye düşünmüştüm. Belli ki yanılmışım.
While kullanmamım sebebi program bir kez çalışıp sonlanmasın diyedir. Defalarca sorsun ki art arda sayı vererek programın düzgün çalıştığını kontrol edebileyim.
True/false döndürmemim sebebi ise bildiğim kadarıyla fonksiyonlara return komutu girilmezse fonksiyonların sonucu "None" olarak döndürdükleri içindir.
Yine yanlış düşündüğüm yerlerde beni aydınlatırsanız sevinirim.
 

Yeni konular

Geri
Yukarı