Bu kod'ta yardima ihtiyacim var

Kodu kopyala yapıştır yapınca bu şekil çıkıyor, girdileri ayarlayamadım ama sorun girdilerde değil bana fikir lazım. şimdi benim amacım, bir dosya var, dosyanın içinde notlar var, o notları ayırıp kalanlar ve geçenler dosyasına ayırmak istiyorum.Amma ve lakin yazdığım “kalanları_hesapla” bunu gerçekleştirmiyor, ya da dosyayı yazdırırken yanlış yazdırıyorum. Her ikisi birden yazılıyor.Hatice Günday--------------------------------->Geçtin!
Mustafa Akyürek--------------------------------->Geçtin!
Ramazan Topaloğlu--------------------------------->Kaldın!
Elif Akşit--------------------------------->Geçtin!
Mehmet Düşenkalkar--------------------------------->Kaldın!
Hatice Dağdaş--------------------------------->Geçtin!
bu şekil çıkıyor ben bunları; kalanları bir kısma, geçenleri bir kısma ayırmak istiyorum yardımcı olur musunuz. iyi akşamlar

def not_hesapla(satir):

satir = satir [:-1]

liste = satir.split(",")

isim = liste[0]

not1 = int(liste[1])

not2 = int(liste[2])

not3 = int(liste[3])

son_not = not1 * (3/10) + not2 * (3/10) + not3 * (4/10)

if (son_not >= 90):

    harf = ("AA")

elif(son_not >= 85):

    harf = ("BA")

elif (son_not >= 80):

    harf = ("BB")

elif (son_not >= 75):

    harf = ("CB")

elif (son_not >= 70):

    harf = ("CC")

elif (son_not >= 65):

    harf = ("DC")

elif (son_not >= 60):

    harf = ("DD")

elif (son_not >= 55):

    harf = ("FD")

else:

    harf = ("ff")

return isim + "--------------------------------->" + harf + "\n"

def kalanları_hesapla(kalanlar):

durum = "Geçtin!"

kalanlar = kalanlar [:-1]

liste = kalanlar.split(",")

isim = liste[0]

not1 = int(liste[1])

not2 = int(liste[2])

not3 = int(liste[3])

son_not = not1 * (3/10) + not2 * (3/10) + not3 * (4/10)



if (son_not <= 55):

    durum = "Kaldın!"

return isim + "--------------------------------->" + durum + "\n"

with open(“dosya.txt”,“r”,encoding=“utf-8”) as file:

nottoplami = []

sınıfta_kalanlar = []

for i in file:

    nottoplami.append(not_hesapla(i))

    sınıfta_kalanlar.append(kalanları_hesapla(i))

        

with open ("notlar.txt","w",encoding="utf-8") as file2:

    for i in nottoplami:

        file2.write(i)

with open("kalanlar.txt","w",encoding="utf-8") as file3:

    for i in sınıfta_kalanlar:

        file3.write(i)

tüm dosya açma kapama işlemleri bunun altında
with open(“dosya.txt”,“r”,encoding=“utf-8”) as file:

Kalanlar dosyası oluşturup kalanları kalanlar.txt dosyanın içine aktarmak istiyorsun,
önce kalanlar adlı bir liste oluşturmanız lazım kalanlar = [] siz bu kalanlar listesini ortaya yani def not_hesapla(satir): kısmının aşşağısanda oluşturmuşsunuz oysa def not_hesapla(satir): kısmının yukarısında oluşturacaktınız ki kalanlar listemizi def not_hesapla(satir): fonksiyonumuzun içerisinde çağıralabilelim. Notu: FF olanları kalanlar listemize ekleyeceğiz. def not_hesapla(satir): fonkiyonumuza yeni bir if durumu yazmamız gerekiyor. Eğer harfimiz FF eşit ise
kalanlar listemize isim değişkenini ekliyoruz

if harf == "FF":
       kalanlar.append(isim + "\n")

şeklinde. Artık kalanlar listemiz kalanların adını aldık. Artık kalanlar.txt dosyası oluşturup kalanlar listemizi for döngüsü ile ve .write kullanarak yazdıracağız.

with open("kalanlar.txt", "w", encoding="utf-8") as file3:
    for i in kalanlar: 
        file3.write(i)

Size örnek olması açısından kodunuzda bir kaç değişiklik yaparak kalanlar ve geçenleri bir dosyaya yazdırmanızı sağladım umarım beğenirsiniz:

kalanlar = []
geçenler = []


def bilgileri_göster(sayı):
    sayı = sayı[:-1]
    liste = sayı.split(",")

    isim = liste[0]
    sonuc1 = int(liste[1])
    sonuc2 = int(liste[2])
    sonuc3 = int(liste[3])
    toplam = (sonuc1 + sonuc2 + sonuc3) / 3

    if toplam >= 90:
        harf = "AA"
    elif toplam >= 85:
        harf = "AB"
    elif toplam >= 80:
        harf = "BB"
    elif toplam >= 75:
        harf = "BC"
    elif toplam >= 70:
        harf = "CC"
    elif toplam >= 65:
        harf = "CD"
    elif toplam >= 60:
        harf = "DD"
    elif toplam >= 55:
        harf = "DF"
    else:
        harf = "FF"

    if harf == "FF":
        kalanlar.append(isim + "\n")
    else:
        geçenler.append(isim + "\n")

    return isim + "------>" + harf + "\n"


with open("dosya.txt", "r", encoding="utf-8") as file:
    eklenecekler = []
    for i in file:
        eklenecekler.append(bilgileri_göster(i))

with open("not.txt", "w", encoding="utf-8") as file2:
    for i in eklenecekler:
        file2.write(i)

with open("kalanlar.txt", "w", encoding="utf-8") as file3:
    for i in kalanlar:
        file3.write(i)

with open("geçenler.txt", "w", encoding="utf-8") as file4:
    for i in geçenler:
        file4.write(i)
2 Beğeni

paylaştığım kodu çözüm olarak seçerseniz başkalarıda faydalanabilsin