code = "+"
message = "{} " + code + "{} = {}".format('1', '2', '3')
print(message)
我认为这应该打印1+2=3
,但实际上它可以打印出来:
{} +1 = 2
那是为什么?这应该与:
message = "{} + {} = {}".format('1', '2', '3')
,在这种情况下可以正常工作。
答案 0 :(得分:2)
因为format
方法仅应用于双引号内的最后一个字符串,例如"{} = {}"
。
如果想要整个字符串结果,则应仅对一个字符串调用format
方法:
message = "{0} {1} {2} = {3}".format('1', code, '2', '3')
print(message)
# '1 + 2 = 3'
看看这个page,它对于字符串格式非常有用。
答案 1 :(得分:2)
此处的格式函数是在“ {} = {}”字符串上而不是在整个消息字符串上调用的,因此按原样打印+之前的“ {}”。 要解决此问题,只需将消息行更改为
message = ("{} " + code + "{} = {}").format('1', '2', '3')
答案 2 :(得分:1)
.format('1', '2', '3')
应用于串联中的最后一个字符串("{} = {}"
),而不是整个字符串。将括号放在串联周围,并在其上加上.format()
,它将产生您期望的结果。
答案 3 :(得分:1)
上述人士的说法是正确的。你可以做这样的事情
def createMessage(a,b ,c):
code = '+'
mes1 = "{}".format(a)
mes2 = "{} = {}".format(b,c)
message = mes1 + code + mes2
print(message)
createMessage(1,2,3)
答案 4 :(得分:0)
原因是格式仅适用于双引号("{} = {}"
)之间的最后一个字符。因此,仅将数字三丢弃,并将代码变量替换为其值。
答案 5 :(得分:0)
code = "+"
message = ("{} " + code + "{} = {}").format('1', '2', '3')
print(message)
上面的代码应该起作用。这是因为第一个“ {}”被视为一个单独的字符串, “ {} = {}”。format('1','2','3')仅针对格式进行评估。 因此输出错误