1. ホーム
  2. python

[解決済み] TypeError: int' オブジェクトを暗黙のうちに str に変換できない

2022-02-25 09:58:03

質問

テキストゲームを書こうとしているのですが、キャラクターを作った後に基本的にスキルポイントを消費させる関数を定義しているところでエラーになりました。最初は、コードのこの部分で整数から文字列を引き算しようとしているとエラーが表示されました。 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

どなたか解決方法をご存じないでしょうか?よろしくお願いします。

解決方法は?

を連結することはできません。 stringint . を変換する必要があります。 intstring を使用して str 関数を使用するか、または 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.")