Python银行应用报错:TypeError: int()参数类型不匹配
解决TypeError: int()参数类型错误问题
你遇到的TypeError是因为创建Account实例时,把文件对象(data = open("data.txt", "r+")返回的_io.TextIOWrapper)传给了bakiye参数,而int()函数只能转换字符串、字节或数字类型,不能直接转换文件对象。
核心修复要点
- 读取
data.txt内的余额数值,而非直接传递文件对象 - 移除代码中无意义的
bakiye = data赋值语句 - 修复Python缩进错误(原代码中
while True、if分支下的代码缩进不符合语法规范) - 使用
with语句管理文件操作,避免资源泄漏
修复后的完整代码
# 读取data.txt中的初始余额,转为整数 with open("data.txt", "r") as f: bakiye_degeri = int(f.read().strip()) # 去除空白字符后转换为整数 class Account : def __init__(self, isim, numara, bakiye): self.isim = isim self.numara = numara self.bakiye = bakiye # 已传入整数,无需再次转换 def hesapBilgileri(self): print("İsim : ", self.isim) print("Numara : ", self.numara) print("Bakiye : ", self.bakiye) def paraCek(self, miktar): if self.bakiye - miktar < 0: print("Bakiyeniz yeterli değil...") else: self.bakiye -= miktar print("Yeni bakiye : ", self.bakiye) # 可选:将更新后的余额写入文件持久化 with open("data.txt", "w") as f: f.write(str(self.bakiye)) def paraYatır(self, miktar): self.bakiye += miktar print("Yeni bakiye : ", self.bakiye) # 可选:将更新后的余额写入文件持久化 with open("data.txt", "w") as f: f.write(str(self.bakiye)) # 创建Account实例,传入读取到的初始余额 account = Account("Atilla", 10000000000, bakiye_degeri) # 登录逻辑修复缩进 while True: login = input("Şifrenizi giriniz : ") with open("passwordspy.txt", "r") as file: login2 = file.read().strip() # 去除文件中的换行符等空白字符 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... 1.Hesap bilgilerini görüntüleme 2.Para yatırma 3.Para çekme """)) 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("Geçersiz işlem numarası...") # 修正原错误提示,匹配无效操作场景
关键修改说明
- 余额读取逻辑:通过
with语句安全读取data.txt内容,转换为整数后再传入Account构造函数,避免直接传递文件对象。 - 无效代码清理:删除所有
bakiye = data的无意义赋值,避免变量混淆。 - 缩进修正:调整
while循环、if分支下的代码缩进,符合Python语法要求。 - 持久化优化:在存款、取款方法中添加文件写入逻辑,确保余额变动后能保存到文件(不需要可删除此部分)。
- 提示语修正:将无效操作时的错误提示从“Şifre yanlış...”(密码错误)改为“Geçersiz işlem numarası...”(无效操作编号),匹配实际场景。
内容的提问来源于stack exchange,提问作者35FAN35
相关产品推荐
相关产品推荐

