print()
基本用法
- 自动换行
print("hello world!")
print(a,b,"hello world!")
print("www", "snh48", "com", sep=".")
print(*objects, sep=' ', end='\n', file=sys.stdout)
- objects —表示输出的对象。输出多个对象时,需要用 , (逗号)分隔。
- sep — 用来间隔多个对象。
- end — 用来设定以什么结尾。默认值是换行符 \n,我们可以换成其他字符。
- file — 要写入的文件对象。
数据的格式化输出
print('The length of %s is %d' %(s,x))
%
字符:标记转换说明符的开始
PI = 3.141592653
print('%10.3f'%PI) #字段宽10,精度3
# 3.142
#精度为3,所以只显示142,指定宽度为10,所以在左边需要补充5个空格,以达到10位的宽度
PI=3.1415926
print("PI=%.*f"%(3,PI))
#用*从后面的元组中读取字段宽度或精度,可以读取出来精度是3位
#PI=3.142
#没有指定宽度,所以不需要缩进
print("PI=%*.3f"%(10,PI)) #精度为3,总长为10.
# PI= 3.142
转换标志
- 转换标志:-表示左对齐;+表示在数值前要加上正负号;” “(空白字符)表示正数之前保留空格();0表示转换值若位数不够则用0填充。
PI=3.1415926
print('%-10.3f' %PI) #左对齐,还是10个字符,但空格显示在右边。
#3.142
PI=3.1415926
print('%+f' % PI) #显示正负号 #+3.141593
# 类型f的默认精度为6位小数。
PI=3.1415926
print('%010.3f'%PI) #字段宽度为10,精度为3,不足处用0填充空白
#000003.142 0表示转换值若位数不够则用0填充
格式字符归纳
格式字符 | 说明 | 格式字符 | 说明 |
---|---|---|---|
%s | 字符串采用str()的显示 | %x | 十六进制整数 |
%r | 字符串(repr())的显示 | %e | 指数(基底写e) |
%c | 单个字符 | %E | 指数(基底写E) |
%b | 二进制整数 | %f,%F | 浮点数 |
%d | 十进制整数 | %g | 指数(e)或浮点数(根据显示长度) |
%i | 十进制整数 | %G | 指数(E)或浮点数(根据显示长度) |
%o | 八进制整数 | %% | 字符% |
换行与防止换行
在python中,输出函数总是默认换行,比如说:
for x in range(0,5):
print(x)
'''
0
1
2
3
4
'''
- 而显然,这种输出太占“空间”,我们可以进行如下改造:
- 参考文本第一部分对end参数的描述:end — 用来设定以什么结尾。默认值是换行符 \n,我们可以换成其他字符。
for x in range(0, 5):
print(x, end=' ')
#0 1 2 3 4
for x in range(0, 5):
print(x, end=',')
#0,1,2,3,4,
- 但如果,我们同时运行上面两段代码,结果会如下所示,可知:我们需要在两次输出间,实现换行。
for x in range(0, 5):
print(x, end=' ')
for x in range(0, 5):
print(x, end=',')
#0 1 2 3 4 0,1,2,3,4,
- 我们比较以下几种方式
- 方式一:
for x in range(0, 5):
print(x, end=' ')
print('\n')
for x in range(0, 5):
print(x, end=',')
'''
0 1 2 3 4
0,1,2,3,4,
'''
之所以出现上面这种情况,是因为print()本身就是默认换行的,再加上换行符,相当于换行两次。
- 方式二:
for x in range(0, 5):
print(x, end=' ')
print() #本身自带换行,完美输出
for x in range(0, 5):
print(x, end=',')
'''
0 1 2 3 4
0,1,2,3,4,
'''