Çözüldü Değeri txt dosyasına write ederken integer değerde hata veriyor

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

docka.pro

Centipat
Katılım
28 Haziran 2022
Mesajlar
41
Çözümler
1
Daha fazla  
Cinsiyet
Erkek
Python:
from os import system
from colorama import init, Fore, Style, Back
import time


def kayit_kontrol():
 global kullanici_adi
 global kullanici_soyadi

init(convert=True)
system("cls||clear")
print("""{}

         ██╗  ██╗ █████╗ ██╗   ██╗██╗████████╗    ██╗  ██╗ ██████╗ ███╗   ██╗████████╗██████╗  ██████╗ ██╗         
         ██║ ██╔╝██╔══██╗╚██╗ ██╔╝██║╚══██╔══╝    ██║ ██╔╝██╔═══██╗████╗  ██║╚══██╔══╝██╔══██╗██╔═══██╗██║         
         █████╔╝ ███████║ ╚████╔╝ ██║   ██║       █████╔╝ ██║   ██║██╔██╗ ██║   ██║   ██████╔╝██║   ██║██║         
         ██╔═██╗ ██╔══██║  ╚██╔╝  ██║   ██║       ██╔═██╗ ██║   ██║██║╚██╗██║   ██║   ██╔══██╗██║   ██║██║         
         ██║  ██╗██║  ██║   ██║   ██║   ██║       ██║  ██╗╚██████╔╝██║ ╚████║   ██║   ██║  ██║╚██████╔╝███████╗    
         ╚═╝  ╚═╝╚═╝  ╚═╝   ╚═╝   ╚═╝   ╚═╝       ╚═╝  ╚═╝ ╚═════╝ ╚═╝  ╚═══╝   ╚═╝   ╚═╝  ╚═╝ ╚═════╝ ╚══════╝    
                                                                                                                                                                             
    """.format(Fore.LIGHTRED_EX, Style.RESET_ALL, Fore.CYAN))
print(Fore.LIGHTGREEN_EX + "{/} " + Style.RESET_ALL + "Katkıda bulunanlar: " + Fore.LIGHTGREEN_EX + Style.BRIGHT + "Adem Burak Gökmen\n" + Style.RESET_ALL)

kullanici_adi = input(Fore.LIGHTCYAN_EX + " Adınız : " + Fore.LIGHTYELLOW_EX)
kullanici_soyadi = input(Fore.LIGHTCYAN_EX + " Soyadınız : " + Fore.LIGHTYELLOW_EX)
    
def kayit_kontrol_yas():
 global kullanici_yasi
 global bosluk
 global noktalivirgul

 try :
kullanici_yasi = int(input(Fore.LIGHTCYAN_EX + " Yaşınız : " + Fore.LIGHTYELLOW_EX))

except ValueError:
print("")
print(Fore.LIGHTRED_EX + " Lütfn yaşınızı sayı olarak giriniz")
print("")
        kayit_kontrol_yas()

bosluk = " "
    noktalivirgul = ";"
    print(" ")


def yas_hesaplayici():
 global yas_siniri

yas_siniri = 18
    if kullanici_yasi >= yas_siniri:

print(Fore.LIGHTGREEN_EX + " Sayın "+kullanici_adi+bosluk+kullanici_soyadi+" kayıt olabilirsiniz.")
time.sleep(2)

 else:
print(Fore.LIGHTGREEN_EX, Back.LIGHTRED_EX + " Sayın "+kullanici_adi+bosluk+kullanici_soyadi+" kayıt olamazsınız.")
time.sleep(3)
 exit()

def kayit_olunuz():
 global kayit_ad
 global kayit_soyad
 global kayit_mail
 global kayit_sifre
 global kayit_dogumtarihi

system("cls||clear")
print("""{}

    ██╗  ██╗ █████╗ ██╗   ██╗██╗████████╗     ██████╗ ██╗     ██╗   ██╗███╗   ██╗██╗   ██╗███████╗
    ██║ ██╔╝██╔══██╗╚██╗ ██╔╝██║╚══██╔══╝    ██╔═══██╗██║     ██║   ██║████╗  ██║██║   ██║╚══███╔╝
    █████╔╝ ███████║ ╚████╔╝ ██║   ██║       ██║   ██║██║     ██║   ██║██╔██╗ ██║██║   ██║  ███╔╝ 
    ██╔═██╗ ██╔══██║  ╚██╔╝  ██║   ██║       ██║   ██║██║     ██║   ██║██║╚██╗██║██║   ██║ ███╔╝  
    ██║  ██╗██║  ██║   ██║   ██║   ██║       ╚██████╔╝███████╗╚██████╔╝██║ ╚████║╚██████╔╝███████╗
    ╚═╝  ╚═╝╚═╝  ╚═╝   ╚═╝   ╚═╝   ╚═╝        ╚═════╝ ╚══════╝ ╚═════╝ ╚═╝  ╚═══╝ ╚═════╝ ╚══════╝
                                                                                               
   """.format(Fore.LIGHTRED_EX, Style.RESET_ALL, Fore.CYAN))
print(Fore.LIGHTGREEN_EX + "{/} " + Style.RESET_ALL + "Katkıda bulunanlar: " + Fore.LIGHTGREEN_EX + Style.BRIGHT + "Adem Burak Gökmen\n" + Style.RESET_ALL)

kayit_ad = input(Fore.LIGHTCYAN_EX + " Adınız : " + Fore.LIGHTYELLOW_EX)
kayit_soyad = input(Fore.LIGHTCYAN_EX + " Soyadınız : " + Fore.LIGHTYELLOW_EX)
kayit_mail = input(Fore.LIGHTCYAN_EX + " Mailiniz : " + Fore.LIGHTYELLOW_EX)
kayit_sifre = input(Fore.LIGHTCYAN_EX + " Şifreniz : " + Fore.LIGHTYELLOW_EX)
kayit_dogumtarihi = input(Fore.LIGHTCYAN_EX + " Dogum Tarihi " + Fore.LIGHTGREEN_EX + "Örnek (12.2.2007) : " + Fore.LIGHTYELLOW_EX)

def kayit_olunuz_tc():
 global kayit_tc

 try:
kayit_tc = input(Fore.LIGHTCYAN_EX + " T.C Kimlik No : " + Fore.LIGHTYELLOW_EX)

except ValueError:
print("")
print(Fore.LIGHTRED_EX + " Lütfn doğru T.C kimlik No giriniz")
        kayit_olunuz_tc()

with open(kullanici_adi + ".txt","w") as dosya:
        dosya.write(kayit_ad+noktalivirgul+bosluk+kayit_soyad+noktalivirgul+bosluk+kayit_mail+noktalivirgul+bosluk+kayit_sifre+noktalivirgul+bosluk+kayit_tc+noktalivirgul+bosluk+kayit_dogumtarihi+noktalivirgul)
print(" ")
print(Fore.LIGHTYELLOW_EX + " Kayıt işlemi gerçekleştiriliyor...")
print(" ")
time.sleep(2)
print(Fore.LIGHTGREEN_EX + " Kayıt başarılı. Hoşgeldiniz!")
time.sleep(5)



kayit_kontrol()
kayit_kontrol_yas()
yas_hesaplayici()
kayit_olunuz()
kayit_olunuz_tc()

Kodun tamamı.

Python:
kayit_tc = int(input(Fore.LIGHTCYAN_EX + " T.C Kimlik No : " + Fore.LIGHTYELLOW_EX))

Kayit_tc değişkenine inputu integer olarak tanımladığım için.

Python:
dosya.write(kayit_ad+noktalivirgul+bosluk+kayit_soyad+noktalivirgul+bosluk+kayit_mail+noktalivirgul+bosluk+kayit_sifre+noktalivirgul+bosluk+kayit_tc+noktalivirgul+bosluk+kayit_dogumtarihi+noktalivirgul)

Bu satırda txt dosyasına write ederken kayit_tc değişkeni hata veriyor ve program kapanıyor.
Kayit_tc değişkenine integer input değil de input komutunu atadığım zaman program düzgün çalışıyor fakat integer input olarak tanımlamam gerekli. Bu sorunu nasıl çözerim? Yardımlarınız için şimdiden teşekkürler iyi forumlar.

NOT: Henüz öğrenme aşamasındayım.
 
Son düzenleme:
Çözüm
Sorun değerin string olmamasıysa str(kayit_tc) şeklinde yazarak çözebilmeniz lazım.

Ya da şu şekilde:
dosya.write(f"{kayit_ad}; {kayit_soyad}; {kayit_mail}; {kayit_sifre}; {kayit_tc}; {kayit_dogumtarihi};")
1693832415853.png


Kodu eksiksiz ve doğru paylaşmadığını düşünüyorum.
 
Sorun değerin string olmamasıysa str(kayit_tc) şeklinde yazarak çözebilmeniz lazım.

Ya da şu şekilde:
dosya.write(f"{kayit_ad}; {kayit_soyad}; {kayit_mail}; {kayit_sifre}; {kayit_tc}; {kayit_dogumtarihi};")
 
Çözüm
Hocam string değil integer yapmak istiyorum.
Hatanın dosyaya yazdırırken türün yanlış olması demediniz mi? Parametre olarak integer vererek yazdırmazsınız dosyaya.

Daha düzgün bir depolama sistemi olarak JSON kullanın. Bilgileri içeren bir dict oluşturun ve json kütüphanesiyle dosyaya yazdırın.
 
Sorun değerin string olmamasıysa str(kayit_tc) şeklinde yazarak çözebilmeniz lazım.

Ya da şu şekilde:
dosya.write(f"{kayit_ad}; {kayit_soyad}; {kayit_mail}; {kayit_sifre}; {kayit_tc}; {kayit_dogumtarihi};")

Teşekkür ederim hocam sorun çözüldü sayenizde yeni bir şey öğrendim öğrenmeden önce txt dosyasına yazdırırken noktalivirgul ve bosluk için ayrı değişken tanımlamıştım.
 
Teşekkür ederim hocam sorun çözüldü sayenizde yeni bir şey öğrendim öğrenmeden önce txt dosyasına yazdırırken noktalivirgul ve bosluk için ayrı değişken tanımlamıştım.
Rica ederim de yazdığınız sistemin bu depolama stiliyle çok optimize çalışacağını düşünmüyorum. JSON ile depolamanız çok daha iyi olur.
 

Yeni konular

Geri
Yukarı