问题描述
我正在尝试编写一个文本游戏,但我在定义的函数中遇到了一个错误,该函数让你在制作角色后基本上可以花费你的技能点.起初,错误表明我试图在这部分代码中从整数中减去一个字符串:balance -strength.显然这是错误的,所以我用 strength = int(strength) 修复了它...但现在我遇到了这个我以前从未见过的错误(新程序员),我对它到底是什么感到困惑正试图告诉我以及我如何解决它.
I am trying to write a text game and I have run into an error in the function I am defining that lets you basically spend your skill points after you make your character. At first, the error stated that I was attempting to subtract a string from an integer in this part of the code:balance - strength. Obviously that was wrong so I fixed it with strength = int(strength)... but now I am getting this error which I have never seen before(new programmer) and I am stumped on what exactly it is trying to tell me and how I fix it.
这是我的代码,用于部分功能不起作用:
Here is my code for the part of the function that isn't working:
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()
这是我在 shell 中访问这部分代码时遇到的错误:
And here is the error I get when I get to this part of the code in the shell:
Your SP balance is currently 25. How much SP do you want to put into strength?5 Traceback (most recent call last): File "C:Python32APOCALYPSE GAME LIBRARYapocalypseGame.py", line 205, in <module> gender() File "C:Python32APOCALYPSE GAME LIBRARYapocalypseGame.py", line 22, in gender customizationMan() File "C:Python32APOCALYPSE GAME LIBRARYapocalypseGame.py", line 54, in customizationMan characterConfirmation() File "C:Python32APOCALYPSE GAME LIBRARYapocalypseGame.py", line 93, in characterConfirmation characterConfirmation() File "C:Python32APOCALYPSE GAME LIBRARYapocalypseGame.py", line 85, in characterConfirmation attributeSelection() File "C:Python32APOCALYPSE GAME LIBRARYapocalypseGame.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
有谁知道如何解决这个问题?先谢谢了.
Does anyone know how to solve this? Thanks ahead.
推荐答案
您不能将 string 与 int 连接.您需要使用 str 函数将 int 转换为 string,或使用 formatting 格式化输出.
You cannot concatenate a string with an int. You would need to convert your int to a string using the str function, or use formatting to format your output.
更改:-
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 函数,而不是使用 + 连接:-
or as per the comment, use , to pass different strings to your print function, rather than concatenating using +: -
print("Ok. Your balance is now at ", balanceAfterStrength, " skill points.")