Python IDLE Int'e çevirmede hata alıyorum

Katılım
10 Mayıs 2020
Mesajlar
127
Python:
klncblglr=open("kullanıcıbilgileri.txt","r")
sayı=klncblglr.read(1)
print(sayı
print('Bu kodu kaybetmeyeceğiniz bir yerde saklayınız!!')
int(sayı)-1
str(sayı)
klncblglr=open("kullanıcıbilgileri.txt","w")
klncblglr.write(sayı)

Burada dosyadan aldığım sayıyı ekrana basıp sonra Int'e çevirip 1 çıkarıp Str'ye çevirip(çünkü dosyaya int olarak yazmıyor illa STR olacak) dosyaya yazması gerekiyor. Ama hata veriyor.
Verdiği hata kodları;

Python:
Traceback (most recent call last):
File "C:\Users\HP\Desktop\python\yaş sorma.py", line 40, in <module>
int(sayı)-1
ValueError: invalid literal for int() with base 10: ''
 
Son düzenleyen: Moderatör:
Kodun tamamını atsan daha iyi olur. Özellikle .txt dosyasında ne olduğunu bilmeliyiz.
.read içine 1 yazınca 1 karakter alıyordur umarım. Bilgim yok bu konu hakkında.
Yine de bunu dener misin?
Python:
klncblglr=open("kullanıcıbilgileri.txt","r")
sayı=klncblglr.read(1)
print(sayı)
print("Bu kodu kaybetmeyeceğiniz bir yerde saklayınız!!")
a = int(sayı)-1
klncblglr=open("kullanıcıbilgileri.txt","w")
klncblglr.write(a)
 
Kodun tamamını atsan daha iyi olur. Özellikle .txt dosyasında ne olduğunu bilmeliyiz.
.read içine 1 yazınca 1 karakter alıyordur umarım. Bilgim yok bu konu hakkında.
Yine de bunu dener misin?
Python:
klncblglr=open("kullanıcıbilgileri.txt","r")
sayı=klncblglr.read(1)
print(sayı)
print("Bu kodu kaybetmeyeceğiniz bir yerde saklayınız!!")
a = int(sayı)-1
klncblglr=open("kullanıcıbilgileri.txt","w")
klncblglr.write(a)
Bu hatayı alıyorum ??
Python:
Traceback (most recent call last):
  File "C:\Users\HP\Desktop\python\yaş sorma.py", line 40, in <module>
    a=int(sayı)-1
ValueError: invalid literal for int() with base 10: ''
.txt dosyasında 9 yazıyor.
 
Python:
import time
import random
print("""|------------|
|Hoşgeldiniz!|
|------------|""")
print('Yapmak istediğiniz işlemi seçiniz!!(Giriş yapmak için 1,Kayıt olmak için 2 yazınız.)')
işlem=input("")
if işlem=='1':#buna devam et giriş yap için !!
    print('E-posta adresi giriniz !')
    epstsoru=input("")
if işlem=='2':
    print('Lütfen yaşınızı Giriniz!!')
    yaş=int(input(""))
    if yaş < 13:
        print("Yaşınız bu programı kullanmaya yetmemektedir!")
        time.sleep(10)
        exit()
    if yaş>=13:
        print("""|----------------------------------|
    |Yaşınız Uygun.Kayıt Olabilirsiniz.|
    |----------------------------------|""")
        print('E-Posta adresi giriniz.')
        Eposta=input("")   
        print('Kullanıcı Adı belirleyin.')
        kullanıcıadı=input("")
        print('Lütfen Şifre giriniz.')
        şifre=input("")
        klncblglr=open("kullanıcıbilgileri.txt","r")
        sayı=klncblglr.readline(1)
        print(sayı)
        print('Bu kodu kaybetmeyeceğiniz bir yerde saklayınız!!')
        a=int(sayı)-1
        str(a)
        klncblglr=open("kullanıcıbilgileri.txt","w")
        klncblglr.write("")
        klncblglr.write(Eposta+' ')
        klncblglr.write(kullanıcıadı+' ')
        klncblglr.write(şifre)
        klncblglr.write('\n'+a)
        klncblglr.close()
Tüm kodu paylaşır mısınız?
Paylaştım.
 
Input alırken metin verebiliyorsun Python'da. 6. satırı o şekilde yaptım.
Türkçe desteklese de değişken adlarında kullanılması tavsiye edilmez. Hatta bazı sistemlerde hata bile çıkartabiliyor.
Tek tırnağı tek karakter gösterecekken kullanın.
13 yaş kontrolünden sonra else diyebilirsiniz.
28 satırda sadece str deyip içine bir şeyler yazmışsınız. Bu değeri bir değişkene atamalısınız.
Dosyayı r ile açtıktan sonra kapatmayıp w ile açmaya çalışmışsınız. Ya direkt r+ ile açın ya da w+. Dosyayı kapatabilirsiniz de.

Sanırım istediğiniz bu şekilde. Kayıt olduktan sonra dosyadaki sayıyı bir eksiltiyor. Ardından kullanıcı adı, mail, ve şifreyi yazıp alt satıra da o bir eksiltilmiş sayıyı yazıyor. Başta ne olduğunu anlamadığım için adını eksiBir yaptım. Değiştirebilirsiniz onu.

Tekrar çalıştırdığınızda hata verecektir çünkü dosyadaki ilk satırda artık bir sayı yazmıyor. Ona göre farklı dosyaya kaydedebilirsiniz.

Python:
import time
import random
print("""|------------|
|Hosgeldiniz!|
|------------|""")
islem = input("Yapmak istediğiniz islemi seçiniz!!! (Giris yapmak için 1, Kayit olmak için 2 yaziniz.)")
if islem == '1':    #buna devam et giris yap için !!
    epstsoru = input("E-posta adresi giriniz!")
if islem =='2':
    yas = int(input("Lütfen yasinizi Giriniz!!!"))
    
    if 13 > yas:
        print("Yasiniz bu programi kullanmaya yetmemektedir!")
        time.sleep(10)
        exit()
    else:
        print("""|-----------------------------------|
        |Yasiniz Uygun. Kayit Olabilirsiniz.|
        |-----------------------------------|""")
        Eposta = input("E-Posta adresi giriniz.")   
        kullaniciadi = input("Kullanici Adi belirleyin.")
        sifre = input("Lütfen sifre giriniz.")

        klncblglr = open("C:/Users/bekir/Desktop/kullanicibilgileri.txt","r")
        sayi = klncblglr.readline()
        print(sayi)
        print("Bu kodu kaybetmeyeceğiniz bir yerde saklayiniz!!")
        eksiBir = str(int(sayi)-1)
        klncblglr.close()

        klncblglr = open("C:/Users/bekir/Desktop/kullanicibilgileri.txt","w")
        klncblglr.write("")
        klncblglr.write(Eposta + ' ')
        klncblglr.write(kullaniciadi + ' ')
        klncblglr.write(sifre)
        klncblglr.write('\n' + eksiBir)
        klncblglr.close()
 
Input alırken metin verebiliyorsun Python'da. 6. satırı o şekilde yaptım.
Türkçe desteklese de değişken adlarında kullanılması tavsiye edilmez. Hatta bazı sistemlerde hata bile çıkartabiliyor.
Tek tırnağı tek karakter gösterecekken kullanın.
13 yaş kontrolünden sonra else diyebilirsiniz.
28 satırda sadece str deyip içine bir şeyler yazmışsınız. Bu değeri bir değişkene atamalısınız.
Dosyayı r ile açtıktan sonra kapatmayıp w ile açmaya çalışmışsınız. Ya direkt r+ ile açın ya da w+. Dosyayı kapatabilirsiniz de.

Sanırım istediğiniz bu şekilde. Kayıt olduktan sonra dosyadaki sayıyı bir eksiltiyor. Ardından kullanıcı adı, mail, ve şifreyi yazıp alt satıra da o bir eksiltilmiş sayıyı yazıyor. Başta ne olduğunu anlamadığım için adını eksiBir yaptım. Değiştirebilirsiniz onu.

Tekrar çalıştırdığınızda hata verecektir çünkü dosyadaki ilk satırda artık bir sayı yazmıyor. Ona göre farklı dosyaya kaydedebilirsiniz.

Python:
import time
import random
print("""|------------|
|Hosgeldiniz!|
|------------|""")
islem = input("Yapmak istediğiniz islemi seçiniz!!! (Giris yapmak için 1, Kayit olmak için 2 yaziniz.)")
if islem == '1':    #buna devam et giris yap için !!
    epstsoru = input("E-posta adresi giriniz!")
if islem =='2':
    yas = int(input("Lütfen yasinizi Giriniz!!!"))
   
    if 13 > yas:
        print("Yasiniz bu programi kullanmaya yetmemektedir!")
        time.sleep(10)
        exit()
    else:
        print("""|-----------------------------------|
        |Yasiniz Uygun. Kayit Olabilirsiniz.|
        |-----------------------------------|""")
        Eposta = input("E-Posta adresi giriniz.")  
        kullaniciadi = input("Kullanici Adi belirleyin.")
        sifre = input("Lütfen sifre giriniz.")

        klncblglr = open("C:/Users/bekir/Desktop/kullanicibilgileri.txt","r")
        sayi = klncblglr.readline()
        print(sayi)
        print("Bu kodu kaybetmeyeceğiniz bir yerde saklayiniz!!")
        eksiBir = str(int(sayi)-1)
        klncblglr.close()

        klncblglr = open("C:/Users/bekir/Desktop/kullanicibilgileri.txt","w")
        klncblglr.write("")
        klncblglr.write(Eposta + ' ')
        klncblglr.write(kullaniciadi + ' ')
        klncblglr.write(sifre)
        klncblglr.write('\n' + eksiBir)
        klncblglr.close()
yine bu hatayı veriyor ;
Python:
Traceback (most recent call last):
  File "C:\Users\HP\Desktop\python\yaş sorma.py", line 40, in <module>
    eksibir=str(int(sayı)-1)
ValueError: invalid literal for int() with base 10: ''
 

Geri
Yukarı