我正在尝试创建一个程序,而我试图做的一件事就是像这样将变量添加到字符串中。
EnemyHealth = 0
EnemyIs = 'dead'
print("The Enemy's health is %d. The Enemy is %d." % (EnemyHealth,EnemyIs)
但是每次我尝试它都不允许我使用字符串作为变量之一。如何将可变字符串插入另一个字符串?
P.S。我正在使用python 3.7.0
答案 0 :(得分:7)
我知道有四种方法可以在python(Python 3)上实现此目标:
1)串联:
您可以使用+
来连接2个字符串,但是只能连接字符串类型数据,这意味着需要使用str()
函数将非字符串类型数据转换为字符串。例如:
print("The Enemy's health is " + str(EnemyHealth) + ". The Enemy is " + EnemyIs + ".")
# output = "The Enemy's health is 0. The Enemy is dead."
2)利用Python 3的print()
函数,该函数可以采用多个参数参数:
在这里,您的print()
语句类似于上面的串联语句,除了在任何使用+
进行串联的地方,您都需要将其替换为,
。使用此方法的好处是,不同的数据类型将自动转换为字符串,即不再需要str()
函数。例如:
print("The Enemy's health is ", EnemyHealth, ". The Enemy is ", EnemyIs, ".")
# output = "The Enemy's health is 0. The Enemy is dead."
3)使用您的字符串替换方法
您的代码不起作用的原因是,%d
意味着您将用整数替换它,从而使您的代码正常工作,因为存储在变量EnemyIs
上的字符串需要替换为%s
,用于声明它将被字符串替换。因此,要解决您的问题,您需要执行以下操作:
print("The Enemy's health is %d. The Enemy is %s." % (EnemyHealth, EnemyIs))
# output = "The Enemy's health is 0. The Enemy is dead."
4)python字符串的format()
方法(这是最佳使用方法)
这是python中所有字符串的内置方法,可让您轻松地用任何变量替换python字符串中的placehoder {}
。与上面的解决方案编号3不同,此format()
方法不需要您将不同的数据类型表示或转换为字符串,因为它将自动为您执行此操作。例如,要使打印语句正常工作,您可以执行以下操作:
print("The Enemy's health is {}. The Enemy is {}.".format(EnemyHealth, EnemyIs))
OR
print("The Enemy's health is {0}. The Enemy is {1}.".format(EnemyHealth, EnemyIs))
# output = "The Enemy's health is 0. The Enemy is dead."
从python 3.6开始,您现在还可以使用f字符串来替换字符串中的变量。此方法类似于上述.format()
方法,并且我认为是对str.format()
方法的更好升级。要使用此方法,您所要做的就是在定义字符串时在开引号前声明f
,然后在字符串中使用{[variable name goes here]}
格式,以使其起作用。例如,要使打印语句正常工作,请使用以下方法:
print(f"The Enemy's health is {EnemyHealth}. The Enemy is {EnemyIs}.")
# output = "The Enemy's health is 0. The Enemy is dead."
通过使用此方法可以看到,variable name
是直接在大括号{}
中实例化的。
答案 1 :(得分:3)
在Python3.x中避免%格式说明符
从文档中:
最终会从该语言中删除旧的格式化样式,通常应使用str.format()。
有几种简单的方法可以执行此操作,请检查以下代码:
print("The Enemy's health is {} The Enemy is {}".format(EnemyHealth, EnemyIs)
print("The Enemy's health is {0} The Enemy is {1}".format(EnemyHealth, EnemyIs)
print("The Enemy's health is {EnemyHealth} The Enemy is {EnemyIs}".format(EnemyHealth=EnemyHealth, EnemyIs=EnemyIs)
答案 2 :(得分:2)
您的代码存在问题,因为第二个参数使用了%d
。 %d
用于整数,而%s
用于字符串。您可以通过更改为%s
使其工作:
EnemyHealth = 0
EnemyIs = 'dead'
print("The Enemy's health is %d. The Enemy is %s." % (EnemyHealth, EnemyIs))
输出
The Enemy's health is 0. The Enemy is dead.
一种替代方法是使用如下格式函数:
print("The Enemy's health is {}. The Enemy is {}.".format(EnemyHealth, EnemyIs))
有关字符串格式的更多信息,请参见here。
答案 3 :(得分:1)
使用带格式的打印,可以使代码看起来不错
print("The Enemy's health is {} The Enemy is {}".format(str(EnemyHealth),EnemyIs)
答案 4 :(得分:1)
这是因为第一个字符串中的%d
需要一个整数变量。您想要的是%s
作为字符串。
也就是说:
print("The Enemy's health is %d. The Enemy is %s." % (EnemyHealth,EnemyIs)
(还要记住%f
是浮点数,您可以使用%2.4f
这样的技巧将数字1.234567写为01.2346)
答案 5 :(得分:1)
字符串对象的格式说明符为%s
。因此您的代码应为:
EnemyHealth = 0
EnemyIs = 'dead'
print("The Enemy's health is %d. The Enemy is %s." % (EnemyHealth,EnemyIs))
答案 6 :(得分:1)
尽管建议使用print("The Enemy's health is %d. The Enemy is %s." % (EnemyHelath, EnemyIs))
,但您也可以使用print("The Enemy's health is {}. The Enemy is {}.".format(EnemyHealth,EnemyIs))
。