字符串减去字符串对python不好

问题描述

嘿,我正在编写代码并尝试从对手的 hp 中减去 damaga 并打印出来。但它总是说:

     print("your max damage is " + damage + " damage,opponent has " + str(opponentHp) - str(random.randint(10,damage)))
TypeError: can only concatenate str (not "int") to str

正如你所看到的,我试图将它转换为字符串,但它没有帮助

damage = 15
hp = 90

    opponentHp = random.randint(70,110)
    print("your opponent has " + str(opponentHp) + " hp")
    attackDefense = input("attack:")
    elif  attackDefense == "attack":
        print("your max damage is " + damage + " damage,opponent has " + (str(opponentHp) - str(random.randint(10,damage))))

解决方法

看起来 damage 仍然是 int 类型。使用 f-strings 这样格式化输出会更顺畅:

opponentHp -= random.randint(10,damage)
print(f"your max damage is {damage} damage,opponent has {opponentHp}")
,

这里有两个问题。首先,由于 damageint,当您尝试通过 + 运算符将其连接到字符串时,这不起作用,因此出现错误。您必须将其转换为字符串才能将其放入显示字符串(例如 "..." + str(damage) + "...")。

第二个问题是您出于某种原因试图将字符串彼此相减。这是 Python 中的未定义操作,也会导致错误。尝试从字符串中减去字符串是没有意义的。您只能从数字中减去数字。您必须在减法之后才将它们转换为字符串。

因此,您的固定代码将是:

print("your max damage is " + str(damage) + " damage,opponent has " + str(opponentHp - random.randint(10,damage)))

或者,更简单的方法是使用 f 字符串,它不需要转换为 str()

print(f"your max damage is {damage} damage,opponent has {opponentHp - random.randint(10,damage)}")