I_Like_AI 发表于 2018-9-19 15:59:11

TypeError an 'int' object cannot be implicitly converted to 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()
这是我在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
有谁知道如何解决这个问题?谢谢你。

马猴烧酒 发表于 2018-9-19 16:02:17

不能用int连接一个string。您需要使用str函数将您转换int为str,或使用格式化输出。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.")

深度大佬进修 发表于 2018-9-19 16:02:51

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.")
页: [1]
查看完整版本: TypeError an 'int' object cannot be implicitly converted to str