Python 有三种输出值的方式:
- 表达式语句
- print() 函数
- 使用文件对象的 write() 方法,标准输出文件可以用 sys.stdout 引用。
① 将输出的值转成字符串,可以使用 repr() 或 str() 函数来实现:
- str(): 函数返回一个用户易读的表达形式。
- repr(): 产生一个解释器易读的表达形式
>>> s = 'Hello, Optimus Prime'
>>> str(s)
'Hello, Optimus Prime'
>>> repr(s)
"'Hello, Optimus Prime'"
>>> str(1/7)
'0.14285714285714285'
>>> x = 10 * 3.25
>>> y = 200 * 200
>>> s = 'x 的值为: ' + repr(x) + ', y 的值为:' + repr(y) + '...'
>>> print(s)
x 的值为: 32.5, y 的值为:40000...
>>> # repr() 函数可以转义字符串中的特殊字符
... hello = 'hello, Orion Pax\n'
>>> hellos = repr(hello)
>>> print(hellos)
'hello, Orion Pax\n'
>>> # repr() 的参数可以是 Python 的任何对象
... repr((x, y, ('Megatron', 'Optimus Prime')))
"(32.5, 40000, ('Megatron', 'Optimus Prime'))"
② 字符串对象的 rjust() 可以将字符串靠右, 并在左边填充空格。还有类似的方法, 如 ljust() 和 center()。 这些方法并不会写任何东西, 它们仅仅返回新的字符串。
>>> for x in range(1, 11):
... print(repr(x).rjust(2), repr(x*x).rjust(3), end=' ')
... # 注意前一行 'end' 的使用
... print(repr(x*x*x).rjust(4))
...
1 1 1
2 4 8
3 9 27
4 16 64
5 25 125
6 36 216
7 49 343
8 64 512
9 81 729
10 100 1000
>>> for x in range(1, 11):
... print('{0:2d} {1:3d} {2:4d}'.format(x, x*x, x*x*x))
...
1 1 1
2 4 8
3 9 27
4 16 64
5 25 125
6 36 216
7 49 343
8 64 512
9 81 729
10 100 1000
③ 方法 zfill() 会在数字的左边填充 0:
>>> '12'.zfill(5)
'00012'
>>> '-3.14'.zfill(7)
'-003.14'
>>> '3.14159265359'.zfill(5)
'3.14159265359'
④ 使用 str.format() 函数可以格式化输出值:括号及其里面的字符 (称作格式化字段) 将会被 format() 中的参数替换。
>>> print('{}身份: "{}!"'.format('D-16', '矿工'))
D-16身份: "矿工!"
在括号中的数字用于指向传入对象在 format() 中的位置:
>>> print('{0} 和 {1}'.format('Orion Pax', 'D-16'))
Orion Pax 和 D-16
>>> print('{1} 和 {0}'.format('Orion Pax', 'D-16'))
D-16 和 Orion Pax
可选项 : 和格式标识符可以跟着字段名,这允许对值进行更好的格式化。
>>> import math
>>> print('常量 PI 的值近似为 {0:.3f}。'.format(math.pi))
常量 PI 的值近似为 3.142。
在 : 后传入一个整数, 可以保证该域至少有这么多的宽度。
>>> table = {'OP': 1, 'Mega': 2, 'Jazz': 3}
>>> for name, number in table.items():
... print('{0:10} ==> {1:10d}'.format(name, number))
...
OP ==> 1
Mega ==> 2
Jazz ==> 3
通过在 table 变量前使用 ** 格式化字典键值输出:
>>> table = {'Optimus Prime': 1, 'Megatron': 2, 'Jazz': 3}
>>> print('Megatron: {Megatron:d}; Optimus Prime: {Optimus Prime:d}; Jazz: {Jazz:d}'.format(**table))
Megatron: 2; Optimus Prime: 1; Jazz: 3