我得到“TypeError:无法连接'str'和'int'对象”但我之前将raw_input()设置为int()函数。我班上的职能(存款和交易)有什么问题?
class BankAccount(object):
def __init__(self):
f = open("ac.txt", "r")
self.balance = f.read()
def deposit(self, amt):
f = open("ac.txt", "w")
f.write(self.balance + amt)
f.close()
def withdraw(self, amt):
pass
def getBalance(self):
return self.balance
def transaction(self):
choice = raw_input("\n1. Deposit\n2. Withdraw\n\nChoice: ")
amount = int(raw_input("\nPlease enter your amount: "))
if choice == "1":
self.deposit(amount)
elif choice == "2":
self.withdraw(amount)
我甚至试图这样做:
amount = raw_input("\nPlease enter your amount: ")
amount = int(amount)
答案 0 :(得分:2)
在您的情况下,如果您想要连接字符串,则不应使用int(raw_input(...
,只需使用raw_input
,否则您在此处向字符串添加int:{{ 1}}
但如果您想添加数字f.write(self.balance + amt)
并回写文件,请将balance + amount
和self.balance
转换为数字(amt
或int
)正如@Hugh所说。
答案 1 :(得分:1)
如果self.balance = f.read()
那么balance是str而amount是int,而str + int则给出错误。
请尝试f.write(self.balance + str(amt))
。
答案 2 :(得分:1)
在“ac.txt”文件中,您将整数写为文本!这就是角色的序列。因此
之后f = open("ac.txt", "r")
self.balance = f.read()
self.balance
是一个字符串。所以你不能做self.balance + amt
。
你应该写
self.balance = int(f.read())
确保您阅读了一些int
然后
f.write(str(self.balance + amt))