71

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

これを解決する方法を知っている人はいますか?ありがとうございます。

4

2 に答える 2

130

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

変化: -

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.")
于 2012-11-30T22:36:25.903 に答える