Çözüldü Python not defined hatası

Bu konu çözüldü olarak işaretlenmiştir. Çözülmediğini düşünüyorsanız konuyu rapor edebilirsiniz.

Damlavirüs

Decapat
Katılım
10 Şubat 2021
Mesajlar
28
Daha fazla  
Cinsiyet
Kadın
Merhabalar daha yeni Python kodlama öğreniyorum ve aşağıdaki hatayı alıyorum.

Traceback (most recent call last):
File "C:\Users\Damla\OneDrive\Masaüstü\bilişim 2.py", line 12, in <module>
İf sayimi==true and ik!="0" and ciftmi==0:
Nameerror: Name 'sayimi' is not defined.

T.C. kimlik numarası doğrulaması için kodlamaya başlamıştım hatamın nerede olduğunu bulamadım bir de siz bakın dedim. Yazı denetimi
nedeniyle baş harflerini büyük yazdım küçük olacak siz anlarsınız.

Print("hoş geldiniz")

Def tckontrol(tckim):
Tckim = str(tckim)
Tckim = tckim.strip()
Sayimi = tckim.isnumeric()
İk = tckim[0]
Ciftmi = int(tckim) % 2
Ks = len(tckim)

Tckim = input("lütfen 11 haneli T.C. kimlik numaranızı giriniz:")
İf ks==11 and sayimi==true and ik!="0" and ciftmi==0:
Print("geçerli T.C. kimlik numarası")
Else:
Print("geçersiz T.C. kimlik numarası")

Şimdiden teşekkürler.
 
Çözüm
Teşekkür ederim çok yardımcı oldu gerçekten ancak harf girdiğim zaman Tc kimlik numaranız rakamlardan oluşmalıdır türü bir mesaj gelmesini istiyorum. Kodlamanıza harf girdiğimde
Traceback (most recent call last):
File "C:/Users/Damla/OneDrive/bilişim92859.py", line 5, in <module>
int(tckim) % 2
ValueError: invalid literal for int() with base 10: 'qwertyuıopşlkjnhb'

bunu veriyor. Tek harf girsem de 11 harf girsem de.
O zaman kodu şöyle değiştirelim;
Python:
print("Hoş geldiniz. \n")   
while True:
    tckim = input("TC numarası giriniz:  ")
    sayimi = tckim.isnumeric()
    ks = len(tckim)
    if sayimi == True:
        if int(tckim) % 2 == 0:
            ciftmi = True
        else:
            ciftmi = False

    if sayimi == False:
        print("Lütfen sayı giriniz.")
    
    else:
        if ks==11:
            try:
                if ciftmi == True:
                    print("TC kimlik numaranız çifttir.")
                elif ciftmi == False:
                    print("TC kimlik numaranız tektir.")
            except:
                print("Lütfen geçerli bir sayı giriniz.")
        else:
            print("Lütfen 11 haneli bir TC kimlik numarası giriniz.")
Boşluklar hatalı, doğrusunu yazıp atıyorum 5 dakikaya.
Python:
print("Hoş geldiniz. \n")  
while True:
    tckim = input("TC numarası giriniz:  ")
    sayimi = tckim.isnumeric()
    int(tckim) % 2
    ks = len(tckim)
    if int(tckim) % 2 == 0:
        ciftmi = True
    else:
        ciftmi = False

    if ks==11:
        if sayimi == True:
            if ciftmi == True:
                print("TC kimlik numaranız çifttir.")
            elif ciftmi == False:
                print("TC kimlik numaranız tektir.")
        else:
            print("Lütfen geçerli bir sayı giriniz.")
    else:
        print("Lütfen 11 haneli bir TC kimlik numarası giriniz.")
 
Son düzenleme:
Sayimi = tckim.isnumeric()

kısmında büyük harfle tanımlanmış

İf ks==11 and sayimi==true and ik!="0" and ciftmi==0:

kısmında küçük harfle kullanılmış bu yüzden kullanmaya çalıştığında tanımsız olarak gözüküyor.
 
Değişkeni fonksiyonun içinde tanımladığınız için dışarıdan erişemiyorsunuz. İkinci kısmı fonksiyonun içine ekleyerek bütün doğrulamayı orada yapıp, dışarıya sadece yazıyı döndürebilirsiniz veya değişkeni fonksiyonun dışında tanımlayarak değişkene erişebilirsiniz.

Ayrıca fonksiyonu tanımlamışsınız ancak kullanmamışsınız ve büyük küçük harflere dikkat etmemişsiniz.
 
Son düzenleme:
Fonksiyon kısmında hatalarınız var tekrar gözden geçirin.

Kod:
print("hoş geldiniz")


tckim = input("lütfen 11 haneli T.C. kimlik numaranızı giriniz:")


tckim = str(tckim)
tckim = tckim.strip()
sayimi = tckim.isnumeric()
ik = tckim[0]
ciftmi = int(tckim) % 2
ks = len(tckim)


               #true değil True olacak.
if ks==11 and sayimi==True and ik!="0" and ciftmi==0:
    print("geçerli T.C. kimlik numarası")
else:
    print("geçersiz T.C. kimlik numarası")
 
Sayimi = tckim.isnumeric()

kısmında büyük harfle tanımlanmış

İf ks==11 and sayimi==true and ik!="0" and ciftmi==0:

kısmında küçük harfle kullanılmış bu yüzden kullanmaya çalıştığında tanımsız olarak gözüküyor.
Hocam onları technopat kendisi düzeltmiş yoksa ikisi de küçük.
True yazmıştım ancak site yazım denetiminden olmuş kusura bakmayın.
 
Ben örnek olması açısından düzenledim sizin için.

Python:
print("hoş geldiniz")

def tckontrol(tckim):
    tckim = str(tckim)
    tckim = tckim.strip()
    sayimi = tckim.isnumeric()
    ik = tckim[0]
    ciftmi = int(tckim) % 2
    ks = len(tckim)

    if ks==11 and sayimi==True and ik!="0" and ciftmi==0:
        return "Geçerli T.C. kimlik numarası"
    else:
        return "Geçersiz T.C kimlik numarası"


tckim = input("lütfen 11 haneli T.C. kimlik numaranızı giriniz:")
print(tckontrol(tckim))
 
Python:
print("Hoş geldiniz. \n")  
while True:
    tckim = input("TC numarası giriniz:  ")
    sayimi = tckim.isnumeric()
    int(tckim) % 2
    ks = len(tckim)
    if int(tckim) % 2 == 0:
        ciftmi = True
    else:
        ciftmi = False

    if ks==11:
        if sayimi == True:
            if ciftmi == True:
                print("TC kimlik numaranız çifttir.")
            elif ciftmi == False:
                print("TC kimlik numaranız tektir.")
        else:
            print("Lütfen geçerli bir sayı giriniz.")
    else:
        print("Lütfen 11 haneli bir TC kimlik numarası giriniz.")

Buyrun.
 
Python:
print("Hoş geldiniz. \n") 
while True:
    tckim = input("TC numarası giriniz:  ")
    sayimi = tckim.isnumeric()
    int(tckim) % 2
    ks = len(tckim)
    if int(tckim) % 2 == 0:
        ciftmi = True
    else:
        ciftmi = False

    if ks==11:
        if sayimi == True:
            if ciftmi == True:
                print("TC kimlik numaranız çifttir.")
            elif ciftmi == False:
                print("TC kimlik numaranız tektir.")
        else:
            print("Lütfen geçerli bir sayı giriniz.")
    else:
        print("Lütfen 11 haneli bir TC kimlik numarası giriniz.")

Buyrun.
Teşekkür ederim çok yardımcı oldu gerçekten ancak harf girdiğim zaman Tc kimlik numaranız rakamlardan oluşmalıdır türü bir mesaj gelmesini istiyorum. Kodlamanıza harf girdiğimde
Traceback (most recent call last):
File "C:/Users/Damla/OneDrive/bilişim92859.py", line 5, in <module>
int(tckim) % 2
ValueError: invalid literal for int() with base 10: 'qwertyuıopşlkjnhb'

bunu veriyor. Tek harf girsem de 11 harf girsem de.
 
Teşekkür ederim çok yardımcı oldu gerçekten ancak harf girdiğim zaman Tc kimlik numaranız rakamlardan oluşmalıdır türü bir mesaj gelmesini istiyorum. Kodlamanıza harf girdiğimde
Traceback (most recent call last):
File "C:/Users/Damla/OneDrive/bilişim92859.py", line 5, in <module>
int(tckim) % 2
ValueError: invalid literal for int() with base 10: 'qwertyuıopşlkjnhb'

bunu veriyor. Tek harf girsem de 11 harf girsem de.
O zaman kodu şöyle değiştirelim;
Python:
print("Hoş geldiniz. \n")   
while True:
    tckim = input("TC numarası giriniz:  ")
    sayimi = tckim.isnumeric()
    ks = len(tckim)
    if sayimi == True:
        if int(tckim) % 2 == 0:
            ciftmi = True
        else:
            ciftmi = False

    if sayimi == False:
        print("Lütfen sayı giriniz.")
    
    else:
        if ks==11:
            try:
                if ciftmi == True:
                    print("TC kimlik numaranız çifttir.")
                elif ciftmi == False:
                    print("TC kimlik numaranız tektir.")
            except:
                print("Lütfen geçerli bir sayı giriniz.")
        else:
            print("Lütfen 11 haneli bir TC kimlik numarası giriniz.")
 
Çözüm

Geri
Yukarı