Çözüldü Python Koddaki hata nedir?

Bu konu çözüldü olarak işaretlenmiştir. Çözülmediğini düşünüyorsanız konuyu rapor edebilirsiniz.

Saidssdasa

Hectopat
Katılım
28 Kasım 2020
Mesajlar
28
Daha fazla  
Cinsiyet
Erkek
85. satırdaki if döngüsüne girip 86. satırı bastırması gerek ancak 85. satırdaki döngü sağlanmasına rağmen 86. satırdaki görev yapılmıyor. Neden?



Kod:
print('Kelebek Sistemi Uygulaması')

import random



kadınlar = []
erkekler = []


def kayıt(isim,cinsiyet,sınıf):


    ogrenciler = open("öğrenciler.txt","a")

    ogrenciler.write(isim)
    ogrenciler.write(", ")
   
    ogrenciler.write(cinsiyet)


    ogrenciler.write(", ")
    ogrenciler.write(sınıf)
    ogrenciler.write("\n")
    ogrenciler.close()

kayda_devam = True
"""print("Kayıttan Çıkmak İçin Q/q'ya Basın.")"""

while kayda_devam:

    isim = input("Öğrencinin İsim ve Soyismi: ")
    if isim == "q" or isim == "Q":
        break

 

    cinsiyet = input("Öğrencinin Cinsiyeti : ")
    if cinsiyet == "q" or cinsiyet == "Q":
        break

    sınıf = input("Öğrencinin Sınıfı(Şubesini Girmeyin) : ")
    if sınıf == "q" or sınıf == "Q":
        break
   
    kayıt(isim, cinsiyet, sınıf)


ogrenciler_listesi = []

erkekler = list()
kadınlar = list()

ogrenciler = open("öğrenciler.txt","r")

for i in ogrenciler:
    okunan_satır = ogrenciler.readline()

    okunan_satır = okunan_satır.split(",")
    okunan_list = list()

    for i in okunan_satır:
        okunan_list.append(i)

   
    if " erkek" in okunan_satır:
        erkekler.append(okunan_satır[0])
    elif " kadın" in okunan_satır:
        kadınlar.append(okunan_satır[0])

random.shuffle(erkekler)
random.shuffle(kadınlar)

erkekler_dosya = open("erkekler.txt","w")

sayac = 0
for i in range(len(erkekler)):
   
    secim1 = random.choice(erkekler)
    erkekler.remove(secim1)

    erkekler_dosya.write(secim1)
    erkekler_dosya.write("   ")

    if sayac == "2" or sayac == "4" or sayac == "6" or sayac == "8" or sayac == "10" or sayac == "12" or sayac == "14" or sayac == "16" or sayac == "18" or sayac == "20":
        erkekler_dosya.write("\n")
        #85'teki kod satırı neden çalışmıyor? Sayacın belirli sayılara gelince if döngüsüne girmesi ve de alt satıra geçmesi lazımdı.
   
    print(sayac)

    sayac += 1


   

   
ogrenciler.close()

erkekler_dosya.close()
 
Çözüm
Bu konularda ChatGPT ile yardım alabilirsin. Aşağıdaki yönergeleri takip et.

Kodda 85. satırdaki if koşulunun çalışmaması, sayac değişkeninin değerinin bir string (metin) olarak kontrol edilmesinden kaynaklanıyor. sayac değişkeni, bir tamsayı (integer) olarak tanımlanıyor ve bu nedenle if sayac == "2" gibi bir koşul hiçbir zaman doğru olmaz. Bu kontrolü, sayacın tam sayı karşılıklarıyla karşılaştırarak düzeltebilirsin.

Aşağıdaki gibi düzenleyebilirsin:

Python:
if sayac in [2, 4, 6, 8, 10, 12, 14, 16, 18, 20]:

Ya da, tam sayıları karşılaştırarak:

Python:
if sayac == 2 or sayac == 4 or sayac == 6 or sayac == 8 or sayac == 10 or sayac == 12 or sayac == 14 or sayac == 16 or sayac == 18 or sayac == 20:

Bu durumda sayac tamsayı olduğundan, koşul doğru çalışacak ve erkekler_dosya.write("\n") satırı çalışması gerek.
Bu konularda ChatGPT ile yardım alabilirsin. Aşağıdaki yönergeleri takip et.

Kodda 85. satırdaki if koşulunun çalışmaması, sayac değişkeninin değerinin bir string (metin) olarak kontrol edilmesinden kaynaklanıyor. sayac değişkeni, bir tamsayı (integer) olarak tanımlanıyor ve bu nedenle if sayac == "2" gibi bir koşul hiçbir zaman doğru olmaz. Bu kontrolü, sayacın tam sayı karşılıklarıyla karşılaştırarak düzeltebilirsin.

Aşağıdaki gibi düzenleyebilirsin:

Python:
if sayac in [2, 4, 6, 8, 10, 12, 14, 16, 18, 20]:

Ya da, tam sayıları karşılaştırarak:

Python:
if sayac == 2 or sayac == 4 or sayac == 6 or sayac == 8 or sayac == 10 or sayac == 12 or sayac == 14 or sayac == 16 or sayac == 18 or sayac == 20:

Bu durumda sayac tamsayı olduğundan, koşul doğru çalışacak ve erkekler_dosya.write("\n") satırı çalışması gerek.
 
Çözüm

Bu konuyu görüntüleyen kullanıcılar

Technopat Haberler

Geri
Yukarı