Reputation: 9
I wrote a very basic banking app code but i get this errror. TypeError: int() argument must be a string, a bytes-like object or a real number, not '_io.TextIOWrapper'
Code is here:
data = open("data.txt" , "r+")
class Account :
data = open("data.txt" , "r+")
def __init__(self , isim , numara , bakiye):
self.isim = isim
self.numara = numara
self.bakiye = int(bakiye)
bakiye = data
def hesapBilgileri(self):
print("İsim : " , self.isim)
print("Numara : " , self.numara)
print("Bakiye : " , self.bakiye)
bakiye = data
def paraCek(self , miktar):
if (self.bakiye - miktar <0) :
print("Bakiyeniz yeterli değil...")
else:
self.bakiye -= miktar
print("Yeni bakiye : " , self.bakiye)
bakiye = data
def paraYatır(self , miktar):
self.bakiye += miktar
print("Yeni bakiye : " , self.bakiye)
bakiye = data
account = Account("Atilla" , 10000000000 , data )
while True :
login = input("Şifrenizi giriniz : ")
file = open("passwordspy.txt" , "r+")
login2 = file.read()
if login == login2:
print("Giriş başarılı.")
break
else:
print("Şifre yanlış.")
if login == login2:
while True:
islem = int(input("Hangi işlemi yapmak istiyorsanız numarasını tuşlayın...\n1.Hesap bilgilerini görüntüleme\n2.Para yatırma\n3.Para çekme\n\n"))
if islem == 1:
account.hesapBilgileri()
elif islem == 2:
miktar = int(input("Yatırılacak miktar : "))
account.paraYatır(miktar)
elif islem == 3:
miktar = int(input("Çekilecek miktar : "))
account.paraCek(miktar)
else:
print("Şifre yanlış...")
Sorry , there are turkish words. But i hope you will handle this problem.
Upvotes: 0
Views: 80
Reputation: 3684
you pass data as bakiye which isnt an integer but a file reference
This line:
account = Account("Atilla" , 10000000000 , data )
causes
self.bakiye = int(bakiye)
but data is
data = open("data.txt" , "r+")
you probably want to read data.txt and pass the string/content rather than the file / TextIOWrapper
Upvotes: 1