2020-10-11

一、格式化输出

 

1、整数的输出

直接使用'%d'代替可输入十进制数字:

>>> print 'i am %d years old'%25

i am 25 years old

%x —— hex 十六进制

%d —— dec 十进制

%o —— oct 八进制

>>> num=10

>>> print'dec=%d, oct=%o, hex=%x'%(num,num,num)

dec=10, oct=12, hex=a

​​​​​​​

2、浮点数输出

(1)格式化输出

正常情况下,与整数的输出一样,使用‘%f’替换,默认情况下,保留小数点后面6位有效数字,如:

>>> f=3.1415

>>> print 'pi=%f'%f

pi=3.141500

>>> f=3.141500000

>>> print 'pi=%f'%f

pi=3.141500

除‘%f’外,还可以用‘%e’、‘%g’表示浮点数, ‘%e’用指数形式输出,‘%g’根据实际情况输出,默认情况下最多保留6位有效数字。

具体使用如下所示:

>>> numb1=0.000033333

>>> print '%f, %e, %g'%(numb1,numb1,numb1)

0.000033, 3.333300e-05, 3.3333e-05

>>> numb2=0.3333

>>> print '%f, %e, %g'%(numb2,numb2,numb2)

0.333300, 3.333000e-01, 0.3333

上图可知,‘%f’和‘%e’默认情况下都会保留小数点后面六位有效数字,‘%g’在保证六位有效数字的前提下,使用小数方式,否则使用科学计数法。

另外上述几种输出方式都可以自定义精度,

>>> numb1=0.000003333333

>>> print '%.3f, %.3e, %.3g'%(numb1,numb1,numb1)

0.000, 3.333e-06, 3.33e-06

>>> numb3=1234567.1234567

>>> print '%f, %e, %g'%(numb3,numb3,numb3)

1234567.123457, 1.234567e+06, 1.23457e+06

>>> print '%.3f, %.3e, %.3g'%(numb3,numb3,numb3)

1234567.123, 1.235e+06, 1.23e+06

(2)内置round()

除了上面所示的格式化输出外,还可以使用内置函数round()控制浮点数的精度,如下图所示:

>>> round(2.3)

2.0

>>> round(2.5)

3.0

>>> round(2.7)

3.0

>>> round(2.567)

3.0

round()函数如果只有一个参数,不指定位数的时候,返回的是一个整数,而且是最靠近的整数,类似于四舍五入,当指定取舍的小数点位数的时候,一般情况也是使用四舍五入的规则,但是碰到.5的情况时,如果要取舍的位数前的小数是奇数,则直接舍弃,如果是偶数则向上取舍,如下图所示:​​​​​​​

>>> round(2.5555,3)

2.555

>>> round(2.456,2)

2.46

>>> round(2.665,2)

2.67

>>> round(2.675,2)

2.67

>>> round(2.655,2)

2.65

>>> round(2.635,2)

2.63

3、字符串输出

字符串可用'%s'输出,如:​​​​​​​

>>> print 'i love %s'%'python'

i love python

另外也对对字符串进行截取,只输出部分,如:

>>> print 'i love %.2s'%'python'

i love py

有时候在输出字符串时希望可以输出格式进行调整,此时可以利用占位符对格式进行调整,如:​​​​​​​

>>> print 'i love %s'%'python'

i love python

>>> print 'i love %.2s'%'python'

i love py

>>> print 'i love %3.2s'%'python'

i love py

>>> print 'i love %10.2s'%'python'

i love py

>>> print 'i love %-10.2s'%'python'

i love py

>>> print 'i love %-10.2s !'%'python'

i love py !

单独采用‘%s’时,直接输出字符串,‘%10s’表示在字符串前面添加占位符,并且字符串采用右对齐的方式,‘%-10s’同样道理,不过字符串采用左对齐的方式。​​​​​​​

>>> fmt='%10s%10s%10s'

>>> print fmt%('name','age','sex')

name age sex

>>> fmt='%-10s%-10s%-10s'

>>> print fmt%('name','age','sex')

name age sex

>>> print fmt%('sqxu',25,'boy')

sqxu 25 boy

上述为基本的格式化输出,其中 字符串格式代码如下所示:

%s     字符串

%c     字符

%d     十进制(整数)

%i     整数

%u    无符号整数

%o     八进制整数

%x    十六进制整数

%X     十六进制整数大写

%e     浮点数格式1 

%E     浮点数格式2 

%f     浮点数格式3 

%g    浮点数格式4 

%G    浮点数格式5 

%%     文字% 

另外在格式转换时,可能会用到转移字符,常用的转移字符如下所示:

转义字符描述
\(在行尾时)续行符
\\反斜杠符号
\'单引号
\"双引号
\a响铃
\b退格(Backspace)
\e转义
\000
\n换行
\v纵向制表符
\t横向制表符
\r回车
\f换页
\oyy八进制数yy代表的字符,例如:\o12代表换行
\xyy十进制数yy代表的字符,例如:\x0a代表换行
\other其它的字符以普通格式输出

 

 

二、format()函数

相对基本格式化输出采用‘% ’的方法,format()功能更强大,该函数把字符串当成一个模板,通过传入的参数进行格式化,并且使用大括号‘{}’作为特殊字符代替‘% ’。

(1)通过位置替换​​​​​​​

>>> print '{0} {1}'.format('hello','world')

hello world

>>> print '{} {}'.format('hello','world')

hello world

>>> print '{0} {1} {0}'.format('hello','world')

hello world hello

在字符串模板中确定位置,并且位置可以不按顺序,format()可传入任意数目的参数。

(2)关键字替换

也可以采用关键字替换的方法。

>>> print 'i love {python}'.format(python='you')

i love you

(3)其他使用方法如:

可以指定输出长度和输出的对齐方式,其中对齐方式有一下几种:

< (默认)左对齐

> 右对齐

^ 中间对齐

= (只用于数字)在小数点后进行补齐​​​​​​​

 

>>> print format('string','2s')

string

>>> print format(3.14151617,'.5f')

3.14152

>>> print '{0:>10}'.format('sqxu') #10个占位符,右对齐

sqxu

>>> print '{0:4.2f}'.format(3.141516)

3.14

>>> print '{0:6.2f}'.format(3.141516)

3.14

>>> print '{0:>6.2f}'.format(3.141516)

3.14

>>> print '{1:<10},{0:<15}'.format('sqxu','USTC')

USTC ,sqxu

>>> print 'name={name},age={age}'.format(name='sqxu',age=25)

name=sqxu,age=25

同上述格式化输出一样,也可以通过格式化指示符来控制格式。

例如,浮点数可以被格式化为一般格式或用幂来表示。

'b' - 二进制。将数字以2为基数进行输出。

'c' - 字符。在打印之前将整数转换成对应的Unicode字符串。

'd' - 十进制整数。将数字以10为基数进行输出。

'o' - 八进制。将数字以8为基数进行输出。

'x' - 十六进制。将数字以16为基数进行输出,9以上的位数用小写字母。

'e' - 幂符号。用科学计数法打印数字。用'e'表示幂。

'g' - 一般格式。将数值以fixed-point格式输出。当数值特别大的时候,用幂形式打印。

'n' - 数字。当值为整数时和'd'相同,值为浮点数时和'g'相同。不同的是它会根据区域设置插入数字分隔符。

'%' - 百分数。将数值乘以100然后以fixed-point('f')格式打印,值后面会有一个百分号。

>>> print '{0:b}'.format(3)
11
>>> print '{0:c}'.format(30)

>>> print '{0:d}'.format(3)
3
>>> print '{0:o}'.format(10)
12
>>> print '{0:x}'.format(30)
1e
>>> print '{0:e}'.format(3)
3.000000e+00
>>> print '{0:f}'.format(3)
3.000000
>>> print '{0:g}'.format(3)
3
>>> print '{0:n}'.format(3)
3
>>> print '{0:n}'.format(3.1415)
3.1415
>>> print '{0:%}'.format(3.15)
315.000000%
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值