我正在尝试编写一个文本游戏,我在定义的函数中遇到了一个错误,让你在制作角色后基本上可以花费你的技能点数。起初,错误表明我试图从代码的这一部分中的整数中减去一个字符串: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()
这是我在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:\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
有谁知道如何解决这个问题?谢谢。
答案 0 :(得分:110)
您无法将string
与int
连接起来。您需要使用int
功能将string
转换为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.")
答案 1 :(得分:-1)
def attributeSelection():
balance = 25
print("Your SP balance is currently 25.")
strength = input("How much SP do you want to put into strength?")
balanceAfterStrength = balance - int(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 " + str(balanceAfterStrength) + " skill points.")
else:
print("That is an invalid input. Restarting attribute selection.")
attributeSelection()