2016-12-28 85 views
-1

我只是無法弄清楚問題所在。所以我正在製作一款遊戲,即時通過金錢在遊戲中購買東西,而這看起來並沒有奏效。我嘗試在.txt文件中寫入新的花費,然後我只是得到一個錯誤。在pygame中打開文件錯誤

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

你得到了什麼錯誤?你能糾正你的縮進錯誤嗎? – depperm

+0

我試着將整數轉換爲字符串..一切都不起作用。 – StrozeR

+0

總是添加問題** FULL **錯誤消息 - 還有其他有用的信息 - 即。哪一行出問題,等等。 – furas

回答

0

從字符串中的某個文件讀取結果。這意味着game_money是一個包含數字字符的字符串,例如"30"。 你應該投的字符串爲一個整數:

game_money = int(rm.read()) 

請留意,這可能會失敗,如果該文件不包含只是一個數字,但其他非數字。

+0

這工作完全謝謝你! – StrozeR

0

它接縫,你試圖從文本game_money減去slowdown_price。您必須先將game_money轉換爲數字。即。

game_money = int(game_money) 
1

您正在使用Python 2,這會很樂意用繩子比較整數,因此if game_money >= 20:工作正常。但是,你不能從一個字符串中減去一個整數,所以game_money -= slowdown_price失敗。該值轉換爲一個整數(或浮動),你跟着讀:

game_money = int(rm.read()) 

game_money = float(rm.read()) 

如果您使用浮點數,請記住,他們是不準確的,所以與==!=的精確比較並不可靠。

+0

我沒有使用python 2即時通訊使用python 3.4,但這似乎工作得很好,謝謝。 – StrozeR

+0

@StrozeR - 不,你不是。如果您使用的是Python 3,當您嘗試查看字符串是否超過整數時會出現錯誤。 – TigerhawkT3

+0

Im正面,我使用Python 3.4編譯器 – StrozeR