Merhaba. Kullanıcıdan alınan işlem bilgisine göre “sinav_sonuclari.txt” dosyası üzerinde öğrenci ve not bilgisi ekleme, gösterme, kaydetme gibi işlemleri yapabileceğimiz bir kod yazdım. Araştırmam ve uğraşmam sonucu yapmak istediğim bir şeyi nasıl yapacağımı çözemedim. Yapmak istediğim şey şudur ki:
Kullanıcıdan aldığımız isim ya da not güncelleme işlemi bilgisiyle bu “sinav_sonuclari.txt” dosyası üzerinden bu istenilen işlemi yapmak istiyorum. Daha öncesinde yazılan kodlar şu şekilde:
def isim_guncelle():
with open("sinav_notlari.txt","r",encoding="utf-8") as file:
read = file.read()
print(read)
with open("sinav_notlari.txt","r+",encoding="utf-8") as file:
liste = file.readlines()
guncellenecekIsım = int(input("Güncellemek istediğiniz ismin satır numarası: ")) ; guncellenecekIsım -= 1
yeni_isim = input("Yeni isim: ")
liste[guncellenecekIsım] = liste[guncellenecekIsım].split(":")
liste[guncellenecekIsım][0] = yeni_isim
file.seek(0)
liste = (liste)
file.writelines(liste)
# file.writelines(liste)
# liste[guncellenecekIsım] = liste[guncellenecekIsım].split(":")
# liste[guncellenecekIsım][0] = yeni_isim
def not_hesapla(satir):
satir = satir[:-1]
liste = satir.split(":")
ogrenciAdi = liste[0]
notlar = liste[1].split(",")
not1 = int(notlar[0])
not2 = int(notlar[1])
not3 = int(notlar[2])
ortalama = (not1 + not2 + not3) / 3
if ortalama >= 90 and ortalama <= 100:
harf = "AA"
elif ortalama >= 85 and ortalama <=89:
harf = "BA"
elif ortalama >= 65:
harf = "CC"
else:
harf = "FF"
return f"{ogrenciAdi}: {harf}\n"
def ortalamalari_oku():
with open("sinav_notlari.txt","r",encoding="utf-8") as file:
for satir in file:
print(not_hesapla(satir))
def not_gir():
ad = input("Öğrenci adı: ") ; ad = ad.capitalize()
soyad = input("Öğrenci soyadı: ") ; soyad = soyad.upper()
not1 = input("not 1: ")
not2 = input("not 2: ")
not3 = input("not 3: ")
with open("sinav_notlari.txt","a",encoding="utf-8") as file:
file.write(f"{ad} {soyad}:{not1},{not2},{not3}\n")
def notlari_kayitet():
with open("sinav_notlari.txt","r",encoding="utf-8") as file:
liste = []
for i in file:
liste.append(not_hesapla(i))
with open("sonuclar.txt","w",encoding="utf-8") as file2:
for i in liste:
file2.write(i)
while True:
islem = input("\n1- Notları Oku\n2- Not Gir\n3- Notları Kayıt Et\n4- Öğrenci Güncelle\n")
if islem == "1":
ortalamalari_oku()
elif islem == "2":
not_gir()
elif islem == "3":
notlari_kayitet()
elif islem == "4":
guncellenecekBilgi = input("1- Öğrenci adı güncelle\n2- Öğrenci not güncelle\n")
if guncellenecekBilgi == "1":
isim_guncelle()
elif guncellenecekBilgi == "2":
not_guncelle()
else:
break
isim_guncelle() fonksiyonunda kullanıcının isim güncellemek istediğinde isim güncellemek için kod yazdım fakat write kısmında sorun yaşadım. Bana liste değil de str yazabileceğimi söylüyor. str’ye dönüştürdüğümde de bozuluyor yani satır satır yazmıyor. Bu bahsettiğim güncelleme işlemlerini rahatlıkla yazabileceğim bir yol gösterir misiniz? Teşekkürler.