匿名用户
1级
2016-03-25 回答
python一共有两种格式化输出语法,
一种是类似于C语言printf的方式,称为 Formatting Expression>>>print '%s %d-%d' % ('hello', 7, 1)
'hello 7-1'
另一种是类似于C#的方式,称为String Formatting Method Calls>>>print '{0} {1}:{2}'.format('hello', '1', '7')
'hello 1:7'
第一种方式可以指定浮点数的精度,例如
>>> print'%.3f' % 1.234567869
'1.235'
运行时动态指定浮点数的精度
但是当代码在运行中如何动态地通过参数来指定浮点数的精度呢?
python的神奇之处在于它又提供了一种非常方便的语法。只需要在 typecode(这里是f)之前加一个 *,浮点数的精度就用它前面的数字来指定。
>>> for i in range(5):
... print'%.*f' % (i, 1.234234234234234)
...
'1'
'1.2'
'1.23'
'1.234'
'1.2342'
通过输出结果可以看出,精度都是在运行时动态指定,这样就省去了格式化字符串的拼凑。
使用 String Formatting Method Calls 可以更简洁地完成功能。
>>> for i in range(5):
... print'{0:.{1}f}'.format(1 / 3.0, i)
...
'0'
'0.3'
'0.33'
'0.333'
'0.3333'
附录是一些常用用法——
python print格式化输出。
1. 打印字符串
print ("His name is %s"%("Aviad"))
2.打印整数
print ("He is %d years old"%(25))
3.打印浮点数
print ("His height is %f m"%(1.83))
4.打印浮点数(指定保留小数点位数)
print ("His height is %.2f m"%(1.83))
5.指定占位符宽度
print ("Name:%10s Age:%8d Height:%8.2f"%("Aviad",25,1.83))
6.指定占位符宽度(左对齐)
print ("Name:%-10s Age:%-8d Height:%-8.2f"%("Aviad",25,1.83))
7.指定占位符(只能用0当占位符?)
print ("Name:%-10s Age:%08d Height:%08.2f"%("Aviad",25,1.83))
8.科学计数法
format(0.0015,'.2e')