UnboundLocalError Hatası

students={}
print("""Öğrenci numarası sorgulamak için 1'e,
Öğrenci kaydetmek için 2 ye basınız""")


def system():


    choose=int(input("\nişlem: "))

    if choose == 2:
        studentNumber = int(input("\nÖğrenci No: "))
        studentName = input("\nÖğrenci Adı: ")
        studentSurname = input("\nÖğrenci Soyadı: ")
        studentPhone = int(input("\nÖğrenci Telefonu: "))

        students.update({
            studentNumber:{
                "Adı:" : studentName,
                "Soyadı:":studentSurname,
                "Telefonu:":studentPhone
            }

        })
    elif choose == 1:
        check=int(input("Öğrencinin numarası:"))
        if check in studentNumber:
            print(students[check])
        else:
            print("Bir şeyleri yanlış girdin!")

            
while True:
    system()

Bu kodu çalıştırdığımda local variable 'studentNumber' referenced before assignment hatasını alıyorum.
Anladığım kadarıyla değişken tanımlamadan kullandığım için bu hatayı veriyor ama koddaki hatayı göremedim.Yardımcı olabilir misiniz?

if check in studentNumber: kısmını da vurguluyor.

Bu if calismadigi icin tanimlanmamis oluyor studentNumber. Sorun bu. Tanimlamalari If’in disina almak ise cozum.

Beynimin sulandığı bir gün daha teşekkür ederimm.

1 Beğeni

Ama kayıt işlemini yaptıktan sonra sorgulama kısmına geçtiğimde değişkenlerin tanımlı olması gerekmiyor mu?

Hata burada basliyor. Kullanicinin girdigi ogrenci numarasini yanlis yerde ariyorsun. students sozlugunde arayacaksin.

Kodun amacina bakmadan yazmistim yukaridaki cevabi.

Fonksiyon her calisip sonlandiginde icinde tanimlanan degiskenler yok olur. O yuzden tanimli olmuyor.

o zaman bir text dosyasına kaydetmeliyim bunları. Teşekkür ederim.

Text dosyasina da degil, silinmesini istemiyorsan fonksiyonun disinda ilk tanimalamayi yapabilirsin. Surayi okursan daha iyi anlayabilirsin.

https://python-istihza.yazbel.com/fonksiyonlar.html#fonksiyonlarin-kapsami-ve-global-deyimi

1 Beğeni