使用.format()打印变量字符串和四舍五入的数字

12 投票
1 回答
7430 浏览
提问于 2025-04-19 15:40

我想打印出这样的内容:

你好 ¦ 7.16

这是我正在使用的代码:

MyString = 'Hello'
MyFloat = 7.157777777
print "{}  ¦  {0:.2f}".format(MyString, MyFloat)

但是我遇到了这个错误:

ValueError: cannot switch from automatic field numbering to manual field specification

如果我尝试:

MyString = 'Hello'
MyFloat = 7.157777777
print "{s}  ¦  {0:.2f}".format(MyString, MyFloat)

或者用str代替s,我又得到了这个错误:

KeyError: 's'

有没有什么办法可以打印一个变量字符串和一个四舍五入的浮点数?或者说有没有类似于%s的东西我应该使用?

1 个回答

25

你在第二个字段里用了一个编号引用;这里的0表示你想用传给str.format()的第一个参数(比如MyString),而不是MyFloat这个参数,它是编号1

因为你不能对字符串对象使用.2f这种格式,所以你才会出现错误。

0去掉:

print "{}  ¦  {:.2f}".format(MyString, MyFloat)

因为没有名字或索引号的字段会自动编号,或者使用正确的数字:

print "{}  ¦  {1:.2f}".format(MyString, MyFloat)

如果你选择后者,最好保持一致,明确地用0作为第一个占位符:

print "{0}  ¦  {1:.2f}".format(MyString, MyFloat)

另一种选择是使用命名引用:

print "{s}  ¦  {f:.2f}".format(s=MyString, f=MyFloat)

注意这里传给str.format()的关键字参数。

撰写回答