NameError hatası

bi hata alıyorum ve çözümünü bir türlü bulamıyorum bi tür öğrenci bilgilerini kaydedn bi sistem yapıyorum yardımcı olursanız çok sevinirim

Kodlar Şu şekilde
def menu() :
print("** MENU **")
print(“1-Kaydet”)
print(“2-Lİstele”)
print(“3-Düzenle”)
print(“4-Sil”)
print(“5-Sırala”)
print(“6-İstatistik”)
print(“7-Çıkış”)
secim = int(input("Seçiminiz: "))
return secim

def kaydet():
dv = True
while dv:
with open(“Veriler.txt”, “a”) as ds:
print("** Kaydet **")
numara = input(“Numara:”)
isim = input(“İsim:”)
ders = input(“Ders:”)
vize = input(“Vize:”)
final = input(“Final:”)
satir = “{:4}\t{:15}\t{:15}\t{:5}\t{:5}\n”.format(numara, isim, ders, vize, final)
ds.write(‘satir’)
sec = input(“Yeni Kayıt? (E/H)”)
if sec.lower() == ‘E’:
dv = True
else:
dv = False

devam = True
while devam:
secim = menu()
if secim == 1:
kaydet()
pass
elif secim == 2:
pass
elif secim == 3:
pass
elif secim == 4:
pass
elif secim == 5:
pass
elif secim == 6:
pass
elif secim == 7:

    devam = False

hata da bu şekilde

raceback (most recent call last):
File “”, line 1, in
File “C:\Program Files\JetBrains\PyCharm Community Edition 2020.3.3\plugins\python-ce\helpers\pydev_pydev_bundle\pydev_umd.py”, line 197, in runfile
pydev_imports.execfile(filename, global_vars, local_vars) # execute the script
File “C:\Program Files\JetBrains\PyCharm Community Edition 2020.3.3\plugins\python-ce\helpers\pydev_pydev_imps_pydev_execfile.py”, line 18, in execfile
exec(compile(contents+"\n", file, ‘exec’), glob, loc)
File “C:/Users/Ali Tabak/Desktop/PycharmProjects/pythonProject1/takip.py”, line 25, in
ds.write(‘satir’)
NameError: name ‘ds’ is not defined

Merhaba, aramıza hoşgeldiniz. :slight_smile:

Bu kodu deneyebilmemiz için şurada anlatıldığı gibi vermelisiniz:


Bu haliyle, herşeyden önce IndentationError verir.

1 Beğeni

ben bu cevabınızla kodlarımda düzeltmem gereken yeri bulamamadım da siz düzeltip atabilir misiniz

Screenshot 2021-02-22 09:03:54
Sadece kodlarınızı burada gördüğünüz ``` işaretleri arasında yazmanız gerekiyor.

3 noktaya basın

image

Sonra bir tane kalem işareti çıkacak, ona basın ve düzenleyin.

en baştan sona kadar 3 çizgi mi kullanayım

Burada gayet detaylı anlatılmış aslında. Buraya bakıp da anlamadığınız bir şey olmuşsa onu cevaplamamız daha doğru olur diye düşünüyorum.

kardeşim anladım o kısmı ama nerede kullanacağım bunu
bana düzenlemiş halii atarsanız çok sevinirim

Kodların en başındaki print kısmında bile " kullanılmamış. Başka bir karakter var ve hata döndürüyor. Burada nasıl NameError aldınız merak ediyorum.

Kodları biz değil, siz yazdınız. Doğrusunu da siz biliyorsunuz. İşimiz oradaki kodları düzenlemek değil.

bununla kodlarınızı düzenleyeceksiniz ki rahat bir şekilde kodlarınızı okuyabilelim.

kod çalışıyor yalnız en son bitirdiğim de
Traceback (most recent call last):
File “”, line 1, in
File “C:\Program Files\JetBrains\PyCharm Community Edition 2020.3.3\plugins\python-ce\helpers\pydev_pydev_bundle\pydev_umd.py”, line 197, in runfile
pydev_imports.execfile(filename, global_vars, local_vars) # execute the script
File “C:\Program Files\JetBrains\PyCharm Community Edition 2020.3.3\plugins\python-ce\helpers\pydev_pydev_imps_pydev_execfile.py”, line 18, in execfile
exec(compile(contents+"\n", file, ‘exec’), glob, loc)
File “C:/Users/Ali Tabak/Desktop/PycharmProjects/pythonProject1/takip.py”, line 26, in
ds.write(‘satir’)
NameError: name ‘ds’ is not defined
bunları alıyorum

ds.write(‘satir’) komutunda bi sıkıntı mı var

Muhtemelen dosya adı dsyi yanlış girintilediniz. Ancak kodlarınızı düzenlemediğiniz için hangi indentte olduğunu da göremiyorum ve yorum yapamıyorum …

Hata mesajını okudunuz mu?

Evet, hata orada. Ve çözmek için ds yi oluşturduğunuz, kullandığınız fonksiyonun üstüne global ds yazın. Kodları okuyabilseydik nereye yazacaığımızı söylerdik.

1 Beğeni

Gönderinin ham halini elde etmeyi başardım:

def menu() :
    print("** MENU **")
    print("1-Kaydet")
    print("2-Lİstele")
    print("3-Düzenle")
    print("4-Sil")
    print("5-Sırala")
    print("6-İstatistik")
    print("7-Çıkış")
    secim = int(input("Seçiminiz:  "))
    return secim


def kaydet():
    dv = True
    while dv:
        with open("Veriler.txt", "a") as ds:
           print("** Kaydet **")

numara = input("Numara:")
isim = input("İsim:")
ders = input("Ders:")
vize = input("Vize:")
final = input("Final:")
satir = "{:4}\t{:15}\t{:15}\t{:5}\t{:5}\n".format(numara, isim, ders, vize, final)
ds.write('satir')
sec = input("Yeni Kayıt? (E/H)")
if sec.lower() == 'E':
    dv = True
else:
    dv = False

devam = True
while devam:
    secim = menu()
    if secim == 1:
        kaydet()
        pass
    elif secim == 2:
        pass
    elif secim == 3:
        pass
    elif secim == 4:
        pass
    elif secim == 5:
        pass
    elif secim == 6:
        pass
    elif secim == 7:
        devam = False
1 Beğeni

kusura bakmayın python hatalarını çözmekte çok iyi değilim uğraştırdım sizi de