Python Not uygulaması yapımında tavsiye verebilir misiniz?

def gecmehesaplama(satir):
    satir = satir[:-1]
    liste = satir.split(",")
    isim = liste[0]
    ortalama = int(liste[1]) * 0.3 + int(liste[1]) * 0.4 + int(liste[2])
    genelnot = 0
    if ortalama >= 85:
        genelnot = "AA"
    elif  ortalama >= 70:
        genelnot = "BB"
    elif  ortalama >= 50:
        genelnot = "CD"
    else:
        genelnot = "TT"
    return ortalama,isim,genelnot + "\n"


with open("dosya.txt","r",encoding= "utf8") as file:
    for i in file:

        if gecmehesaplama(i)[0] < 50:
            with open("Kalanlar.txt","a",encoding= "utf-8") as file1:
                file1.write(gecmehesaplama(i)[1] +" " + gecmehesaplama(i)[2]+"\n")
        else:
            with open("Gecenler.txt", "a", encoding="utf-8") as file2:

                file2.write(gecmehesaplama(i)[1] + "   " +gecmehesaplama(i)[2]+"\n")
İyi akşamlar herkese böyle bir program yaptım.Notlarından dolayı kalanları bir klasöre,geçenleri ise geçenlerin olduğu klasöre yazıyor.
Bu programda tavsiye edebileceğiniz birşey var mıdır acaba?(Daha kısa ve öz bir program yazmak için)
Cevaplarınızı bekliyorum,teşşekkürler

Anladığım kadarıyla verileri bizim daha önce oluşturmuş olduğumuz “dosya.txt” metin belgesinden alacak. Ancak verilerin bu dosyaya kaydediliş formatını belirtmediğinizden, ben test edemedim.

“genelnot” değişkenine bir integer değer (0) atayarak tanımladıktan sonra onu bir string ifadesi olarak (“AA”, “BB” vs.) kullandığınız dikkatimi çekti.

Bir de, çalışmasına etki edeceğinden değil ama daha sonrası için veya geliştirmeye katkı sağlayacak olan başkaları için, değişken isimlerini belirli standartlarda ve açıklayıcı biçimde vermeniz çok daha iyi olur. Örneğin bu kodlarda ortalama, genelnot gibi değişken isimleri bulunuyorken birden karşımıza bir file çıkıyor. Ardından, file1 veya file2 gibi isimler yerine kalanlar_dosyasi veya gecenler_dosyasi gibi isimler tercih edilebilir. Türkçe veya İngilizce olmasından ziyade (tüm değişkenlerin aynı dilde olması şartıyla) isimlendirme kuralları bakımından da (camelcase, snakecase gibi) bir standartta olması daha iyi olur.

Tavsiyeleriniz için teşşekkür ederim :slight_smile:

1 Beğeni

Dosyayi [string islemlerinden gecirip] islenebilir hale getiren kodla isleyen kodu ayirabilirsin.

Ayni sekilde gecmehesaplama sonucunu kontrol edip gecme durumuna bakan kodla gecenleri dosyaya yazan kod icice; ayirabilirsin.

Kodla ilgili herhangi bir soru sorarken kodun gobekten bagli oldugu data dosyasini vermen lazim.

Kodun ne yaptigiyla ilgili daha cok insanin bilgi sahibi olmasini istiyorsan cikti dosyalarini da verebilirsin.


Idealde,

  • Girdi veya cikti dosyalarinin ismi veya yeri degistiginde,
  • Puan agirliklari veya gecme siniri degistiginde,
  • (Ayniysa) girdi ve cikti dosyalarinin formati (kolon sirasi, ders sayisi vs.) degistiginde,
  • (Ayni degilse) girdi dosyasinin formati degistiginde
  • (Ayni degilse) cikti dosyasinin formati degistiginde

Tam 1 fonksiyonun icerigi degismeli. Yani bu islere bakan, birbirinden bagimsiz 3 veya 4 fonksiyon olmali.


Gecme durumu hesaplayan fonksiyona test yazmak isteyebilirsin.

Teşşekkür ederim tavsiye için :slight_smile: