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

新手上路,请多包涵

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

 EnemyHealth = 0

EnemyIs = 'dead'

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

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

PS 我使用的是 python 3.7.0

原文由 PLP123 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 502
2 个回答

我知道有 4 种方法可以在 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 上的字符串需要被替换with %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) format() python字符串的方法(这是最好的使用方法)

这是 python 中所有字符串的内置方法,它允许您使用任何变量轻松替换 python 字符串中的占位符 {} 。与上面的解决方案 3 不同,此 format() 方法不需要您将不同的数据类型表达或转换为字符串,因为它会自动为您完成此操作。例如,要使您的 print 语句正常工作,您可以执行以下操作:

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

# output = "The Enemy's health is 0. The Enemy is dead."

更新:

5) F弦

从 python 3.6+ 开始,您现在还可以使用 f-strings 来替换字符串中的变量。这个方法类似于上面介绍的 .format() 方法,在我看来是对 str.format() 方法的更好升级。要使用此方法,您只需声明 f 在定义字符串时在开始引号之前声明,然后在字符串中使用格式 {[variable name goes here]} 即可使其正常工作。例如,要使您的 print 语句起作用,使用此方法,您可以执行以下操作:

 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 直接在大括号 {} 中实例化。

原文由 SShah 发布,翻译遵循 CC BY-SA 4.0 许可协议

避免在 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)

原文由 Vishvajit Pathak 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题