Python格式化输出

Python格式化输出和C真是非常的相似

1. 打印字符串

>>> a='AAAA'
>>> b='BBBB'
>>> print('a=%s b=%s' %(a,b));
a=AAAA b=BBBB

2.打印整数

>>> a=10
>>> b=20
>>> print('a=%d b=%d' %(a,b));
a=10 b=20
>>> 

3.打印浮点数

>>> a=1.1234
>>> b=3.14159;
>>> print('a=%d b=%d' %(a,b));
a=1 b=3
>>> print('a=%f b=%f' %(a,b));
a=1.123400 b=3.141590
>>> 
python2.5  python3.5默认浮点数都保留6位小数

4.打印浮点数(指定保留小数点位数)

>>> a=1.1234
>>> b=3.14159;
>>> print('a=%.2f b=%.3f' %(a,b));
a=1.12 b=3.142

%f里指定保留小数位数时具有自动四舍五入的功能,比如b=3.14159  使用%.3f格式化之后输出的结果变成了b=3.142


5.指定占位符宽度

>>> a='ABC'
>>> b='DEFF'
>>> print('a=%4s b=%6s' %(a,b));
a= ABC b=  DEFF

还可以指定特定的占位符

>>> a='ABC'
>>> b='DEFF'
>>> d=125
>>> print('a=%4s b=%6s d=%04d' %(a,b,d));
a= ABC b=  DEFF d=0125
指定输出d使用4个字符宽度,如果不够在前面补零,输出字符串时,默认右对齐,其实可以调整的

6.指定占位符宽度,指定对其方式

>>> a='ABC'
>>> b='DEFF'
>>> d=125
>>> print('a=%-4s b=%-6s d=%-06d' %(a,b,d));
a=ABC  b=DEFF   d=125   

可以看到在格式字符里面加了减号字符之后,输出的内容变成了左对齐。最后的125后面其实有3个空格字符


其实还可以在运行时动态指定浮点数的精度

python的神奇之处在于它又提供了一种非常方便的语法。只需要在 typecode(这里是f)之前加一个 *,浮点数的精度就用它前面的数字来指定

来个DEOM看看

>>> for i in range(10):
	print('%.*f' %(i,3.14159265358249));
3
3.1
3.14
3.142
3.1416
3.14159
3.141593
3.1415927
3.14159265
3.141592654

还可以更好玩

>>> d=3.14159265358
>>> for i in range(10):
	print('%.11f %%.*%df = %.*f' %(d,i,i,d));
	
3.14159265358 %.*0f = 3
3.14159265358 %.*1f = 3.1
3.14159265358 %.*2f = 3.14
3.14159265358 %.*3f = 3.142
3.14159265358 %.*4f = 3.1416
3.14159265358 %.*5f = 3.14159
3.14159265358 %.*6f = 3.141593
3.14159265358 %.*7f = 3.1415927
3.14159265358 %.*8f = 3.14159265
3.14159265358 %.*9f = 3.141592654

这样就非常直观的看到d=3.14159265358 这个数字经过不同的格式,输出的不同的结果。

使用 String Formatting Method Calls 可以更简洁地完成功能。

>>> for i in range(5):
	'{0:.{1}f}'.format(1/3.0,i);

	
'0'
'0.3'
'0.33'
'0.333'
'0.3333'

我们来实现一个简单的模板工具
Django提供的模板语言,可以让我们通过一个dict(字典)把python变量绑定的html文件中,其实利用python的格式化输出我们也可以仅仅做一个文本替换功能。

>>> replay = """
... Hello World Cup...
... Germany vs Brazil
... %(germany)d : %(brazil)d"""
>>> print(replay % {'germany': 7, 'brazil': 1})

... Hello World Cup...
... Germany vs Brazil
... 7 : 1
>>> 

还能这样玩

>>> a=1
>>> b=2
>>> print('a=%(a)d,  b=%(b)d ' % vars());
a=1,  b=2 
>>> 

vars函数是实现返回对象object的属性和属性值的字典对象,在上面的定义里面,%(a)d 表示使用a这变量的值。

测试下看看

>>> a=1
>>> b=2
>>> c=3
>>> d=4
>>> print(vars())
{'__spec__': None, '__package__': None, 'i': 4, 'replay': '\n... Hello World Cup...\n... Germany vs Brazil\n... %(germany)d : %(brazil)d',
 '__doc__': None, '__builtins__': <module 'builtins' (built-in)>, 'd': 4, 'a': 1, 'c': 3, 'b': 2, 
'__loader__': <class '_frozen_importlib.BuiltinImporter'>, '__name__': '__main__'}

可以看出来,会输出当前所有的对象的属性和值。

其实我们还可在格式化字符串中访问对象属性和字典键值

>>> import sys
>>> print('My {1[kind]} runs {0.platform}'.format(sys, {'kind': 'pc'}));
My pc runs win32




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值