Skip to content

Commit 0b702e3

Browse files
authored
Create print.md
1 parent 65e6a0a commit 0b702e3

1 file changed

Lines changed: 132 additions & 0 deletions

File tree

‎CorePythonProgramming/print.md‎

Lines changed: 132 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,132 @@
1+
# 格式化输出
2+
Python的print语句,与字符串操作符(%)组合使用,可实现字符串替换功能,类似于C语言的printf()函数。
3+
4+
>>>"%s is number %d" % ('Python', 1)
5+
Python is number 1
6+
>>> "%s price is %f" % ('Core Python Programming', 31.25)
7+
Core Python Programming price is 31.250000
8+
9+
## 字符串格式化符号
10+
11+
* `%c` 转换成字符(ASCII 码值,或者长度为一的字符串)
12+
* `%r` 优先用repr()函数进行字符串转换
13+
* `%s` 优先用str()函数进行字符串转换
14+
* `%d / %i` 转成有符号十进制数
15+
* `%u` 转成无符号十进制数
16+
* `%o` 转成无符号八进制数
17+
* `%x/%X` (Unsigned)转成无符号十六进制数(x/X 代表转换后的十六进制字符的大小写)
18+
* `%e/%E` 转成科学计数法(e/E 控制输出e/E)
19+
* `%f/%F` 转成浮点数(小数部分自然截断)
20+
* `%g/%G` %e 和%f/%E 和%F 的简写
21+
* `%%` 输出%
22+
23+
## 格式化操作符辅助指令
24+
25+
* `*` 定义宽度或者小数点精度
26+
* `-` 用做左对齐
27+
* `+` 在正数前面显示加号( + )
28+
* `<sp>` 在正数前面显示空格
29+
* `#` 在八进制数前面显示零('0'),在十六进制前面显示'0x'或者'0X'(取决于用的是'x'还是'X')
30+
* `0` 显示的数字前面填充‘0’而不是默认的空格
31+
* `(var)` 映射变量(字典参数)
32+
* `m.n` m 是显示的最小总宽度,n 是小数点后的位数(如果可用的话)
33+
34+
十六进制输出:
35+
36+
>>> "%x" % 108
37+
'6c'
38+
>>> "%X" % 108
39+
'6C'
40+
>>> "%#X" % 108
41+
'0X6C'
42+
>>> "%#x" % 108
43+
'0x6c'
44+
45+
浮点数和科学记数法形式输出:
46+
47+
>>> '%f' % 1234.567890
48+
'1234.567890'
49+
>>>
50+
>>> '%.2f' % 1234.567890
51+
'1234.57'
52+
>>>
53+
>>> '%E' % 1234.567890
54+
'1.234568E+03'
55+
>>>
56+
>>> '%e' % 1234.567890
57+
'1.234568e+03'
58+
>>>
59+
>>> '%g' % 1234.567890
60+
'1234.57'
61+
>>>
62+
>>> '%G' % 1234.567890
63+
'1234.57'
64+
>>>
65+
>>> "%e" % (1111111111111111111111L)
66+
'1.111111e+21'
67+
68+
整数和字符串输出:
69+
70+
>>> "%+d" % 4
71+
'+4'
72+
>>>
73+
>>> "%+d" % -4
74+
'-4'
75+
>>>
76+
>>> "we are at %d%%" % 100
77+
'we are at 100%'
78+
>>>
79+
>>> 'Your host is: %s' % 'earth'
80+
'Your host is: earth'
81+
>>>
82+
>>> 'Host: %s\tPort: %d' % ('mars', 80)
83+
'Host: mars Port: 80'
84+
>>>
85+
>>> num = 123
86+
>>> 'dec: %d/oct: %#o/hex: %#X' % (num, num, num)
87+
'dec: 123/oct: 0173/hex: 0X7B'
88+
>>>
89+
>>> "MM/DD/YY = %02d/%02d/%d" % (2, 15, 67)
90+
'MM/DD/YY = 02/15/67'
91+
>>>
92+
>>> w, p = 'Web', 'page'
93+
>>> 'http://xxx.yyy.zzz/%s/%s.html' % (w, p)
94+
'http://xxx.yyy.zzz/Web/page.html'
95+
96+
上面的例子都是使用的元组类型的参数作转换.下面我们将把字典类型的参数提供给格式化操作符.
97+
98+
>>> 'There are %(howmany)d %(lang)s Quotation Symbols' % \
99+
... {'lang': 'Python', 'howmany': 3}
100+
'There are 3 Python Quotation Symbols'
101+
102+
print语句默认会给每一行添加一个换行符。
103+
104+
```python
105+
for eacnNum in range(3):
106+
print eacnNum
107+
```
108+
109+
输出:
110+
111+
0
112+
1
113+
2
114+
115+
只要在print语句的最后添加一个逗号(,),就可以改变它这种行为。但带逗号的print语句输出的元素之间会自动添加一个空格。
116+
117+
```python
118+
for eacnNum in range(3):
119+
print eacnNum,
120+
```
121+
122+
输出:
123+
124+
0 1 2
125+
126+
在按行读文件时,尤其需要注意这一点。下面使用了逗号来抑制自动生成换行符,因为按行读文件本身也会自动添加换行符。如果不添加逗号,会出现读出来的每行内容中间都会空一行的情况。
127+
128+
```python
129+
with open('test_main.py', 'r') as f:
130+
for line in f:
131+
print line,
132+
```

0 commit comments

Comments
 (0)