2016-12-28 4 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

数字slowdown_priceをテキストgame_moneyから差し引いてみましょう。 game_moneyを最初に番号に変換する必要があります。すなわち、あなたは喜んで文字列を整数を比較するのPython 2を、使用している

game_money = int(game_money) 
1

は、そう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

私はPython 3.4コンパイラを使用していますが、私は肯定的です。 – StrozeR

関連する問題