我无法弄清楚问题。所以我正在制作一款游戏,我正在用钱购买游戏中的东西,这似乎并没有起作用。我尝试在.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'
答案 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)