如何将字符串作为变量插入字符串?

时间:2018-09-03 19:55:58

标签: python string python-3.x variables

我正在尝试创建一个程序,而我试图做的一件事就是像这样将变量添加到字符串中。

EnemyHealth = 0  

EnemyIs = 'dead'

print("The Enemy's health is %d. The Enemy is %d." % (EnemyHealth,EnemyIs)

但是每次我尝试它都不允许我使用字符串作为变量之一。如何将可变字符串插入另一个字符串?

P.S。我正在使用python 3.7.0

7 个答案:

答案 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." 

更新:

5)F-Strings

从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))