web-dev-qa-db-ja.com

TypeError: 'int'オブジェクトを暗黙的にstrに変換できません

テキストゲームを作成しようとしていますが、キャラクターを作成した後、基本的にスキルポイントを使用できるように定義している関数でエラーが発生しました。最初、エラーは、コードのこの部分の整数から文字列を減算しようとしたことを示していました:balance - strength。明らかにそれは間違っていたので、strength = int(strength)で修正しました...しかし、今まで見たことのない(新しいプログラマー)このエラーが発生しており、正確にそれが私に伝えようとしていることと修正方法に困惑しています。

動作していない関数の一部のコードは次のとおりです。

def attributeSelection():
    balance = 25
    print("Your SP balance is currently 25.")
    strength = input("How much SP do you want to put into strength?")
    strength = int(strength)
    balanceAfterStrength = balance - strength
    if balanceAfterStrength == 0:
        print("Your SP balance is now 0.")
        attributeConfirmation()
    Elif strength < 0:
        print("That is an invalid input. Restarting attribute selection. Keep an eye on your balance this time!")
        attributeSelection()
    Elif strength > balance:
        print("That is an invalid input. Restarting attribute selection. Keep an eye on your balance this time!")
        attributeSelection()
    Elif balanceAfterStrength > 0 and balanceAfterStrength < 26:
        print("Ok. You're balance is now at " + balanceAfterStrength + " skill points.")
    else:
        print("That is an invalid input. Restarting attribute selection.")
        attributeSelection()

そして、これがシェルのコードのこの部分に到達したときに表示されるエラーです。

    Your SP balance is currently 25.
How much SP do you want to put into strength?5
Traceback (most recent call last):
  File "C:\Python32\APOCALYPSE GAME LIBRARY\apocalypseGame.py", line 205, in <module>
    gender()
  File "C:\Python32\APOCALYPSE GAME LIBRARY\apocalypseGame.py", line 22, in gender
    customizationMan()
  File "C:\Python32\APOCALYPSE GAME LIBRARY\apocalypseGame.py", line 54, in customizationMan
    characterConfirmation()
  File "C:\Python32\APOCALYPSE GAME LIBRARY\apocalypseGame.py", line 93, in characterConfirmation
    characterConfirmation()
  File "C:\Python32\APOCALYPSE GAME LIBRARY\apocalypseGame.py", line 85, in characterConfirmation
    attributeSelection()
  File "C:\Python32\APOCALYPSE GAME LIBRARY\apocalypseGame.py", line 143, in attributeSelection
    print("Ok. You're balance is now at " + balanceAfterStrength + " skill points.")
TypeError: Can't convert 'int' object to str implicitly

誰もこれを解決する方法を知っていますか?先に感謝します。

61
anon

stringintを連結することはできません。 int関数を使用してstringstrに変換するか、formattingを使用して出力をフォーマットする必要があります。

変化する: -

print("Ok. Your balance is now at " + balanceAfterStrength + " skill points.")

に:-

print("Ok. Your balance is now at {} skill points.".format(balanceAfterStrength))

または:-

print("Ok. Your balance is now at " + str(balanceAfterStrength) + " skill points.")

またはコメントに従って、,を使用して連結するのではなく、+を使用してprint関数に異なる文字列を渡します。-

print("Ok. Your balance is now at ", balanceAfterStrength, " skill points.")
110
Rohit Jain