以pygame错误打开文件

时间:2016-12-28 13:39:20

标签: python pygame

我无法弄清楚问题。所以我正在制作一款游戏,我正在用钱购买游戏中的东西,这似乎并没有起作用。我尝试在.txt文件中写下新的花钱,我只是得到一个错误。

with open("money.txt", "r") as rm:
game_money = rm.read()
with open("money.txt", "w") as fm:
fm.write(str(game_money))

def Function():
            ............
            slowdown_price = 20
            elif action == "buy_slowdown":
            if game_money >= 20:
                time.sleep(0.5)
                game_money -= slowdown_price
                slowdown_powerup += 1
                with open("money.txt", "w") as wm:
                    wm.write(str(game_money))

我收到以下错误:

TypeError: unsupported operand type(s) for -=: 'str' and 'int'

3 个答案:

答案 0 :(得分:1)

您正在使用Python 2,它会愉快地将整数与字符串进行比较,因此if game_money >= 20:可以正常工作。但是,您无法从字符串中减去整数,因此game_money -= slowdown_price会失败。在读取之后将该值转换为整数(或浮点数):

game_money = int(rm.read())

game_money = float(rm.read())

如果您使用浮点数,请记住它们不准确,因此与==!=的精确比较并不可靠。

答案 1 :(得分:0)

从文件中读取会产生一个字符串。这意味着game_money是一个包含数字字符的字符串,例如"30"。 您应该将字符串转换为整数:

game_money = int(rm.read())

请注意,如果文件不仅包含数字,而是包含其他非数字,则可能会失败。

答案 2 :(得分:0)

您试图从文本slowdown_price中减去数字game_money。您必须先将game_money转换为数字。即

game_money = int(game_money)