无法在类中将'str'与'int'对象连接起来

时间:2014-02-20 17:18:35

标签: python class python-2.7 io int

我得到“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)

3 个答案:

答案 0 :(得分:2)

在您的情况下,如果您想要连接字符串,则不应使用int(raw_input(...,只需使用raw_input,否则您在此处向字符串添加int:{{ 1}}

编辑:

但如果您想添加数字f.write(self.balance + amt)并回写文件,请将balance + amountself.balance转换为数字(amtint)正如@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))