连接字符串时的支架注入

时间:2015-09-30 01:30:59

标签: python string python-3.x concatenation

我有一个 python 3 程序,目前运行得非常好。我正在计算矩形的面积和周长(用graphics.py绘制)并将结果连接成一个字符串。以下是我目前的代码

val = "The perimeter is" , str(2*(height + width)), " and the area is   ", str(height*width)

当我使用graphics.py将其输出到页面时,结果会显示如下内容。

{The perimeter is} 215 { and the area is } 616

如何获得在文本中间没有括号的输出?即使没有str(),括号也存在,这不是理想的结果。理想的结果如下。

The perimeter is 215 and the area is 616

如果我使用+代替,,则会收到错误Can't convert 'int' object to str implicitly,因此对我来说也不起作用。

任何帮助都会很棒!

4 个答案:

答案 0 :(得分:1)

在python中加号" +"可以用来连接字符串。

尝试

val = "The perimeter is " + str(2*(height + width)) + " and the area is " + str(height*width)

答案 1 :(得分:1)

您的代码不会创建连接字符串。 val成为包含字符串和整数的tuplegraphics.py似乎显示括号以指示每个字符串元素的开始/结束位置。

Python为您的用例提供了字符串格式:

val = "The perimeter is {} and the area is {}".format(2*(height + width), (height*width))

有关语法的详细信息,请参阅https://docs.python.org/3.1/library/string.html#format-string-syntax

答案 2 :(得分:1)

在变量定义中使用,时,您创建的是元组而不是字符串。因此,当你这样做 -

val = "The perimeter is" , str(2*(height + width)), " and the area is   ", str(height*width)

valtuple,这很可能是括号的原因。我建议使用str.format来创建一个字符串。示例 -

val = "The perimeter is {}  and the area is {}".format(2*(height + width),height*width)

答案 3 :(得分:1)

我认为这是字符串格式化的一个很好的用例,因为它可以让您更灵活地显示结果。

例如:

val_string_2dec = 'The perimeter is {perimeter:0.2f} and the area is {area:0.2f}'
val = val_string_2dec.format(perimeter=2*(height+width), area=height*width)
print(val)
# outputs
The perimeter is 215.00 and the area is 616.00

For a full list of formatting options, head over to the official documentation