之前上Workshop的时候,被VBA小小的虐了一下,之前感觉很简单的东西,过了很久使用不熟练就会忘记,然后就被虐。。。
老师是一个CS专业的local,感觉很好玩
最后送给我了一句话, Focus more on basic thing.
我觉得大概需要把python再好好捡一遍,加油哟~
写这个总结是因为在基础的打印的时候,突然想起是不是可以用C里面的格式化打印,查了一下果然从C里借用了这部分,且还有更好用的format函数,笔芯!
从我的jupyter notebook 同步过来一波
千万要记得保存!!!!!不要问我怎么知道的。。。
#这里要想一下 python里有没有花式打印
python花式打印
缩进要使用4个空格(这不是必须的,但你最好这么做),缩进表示一个代码块的开始,非缩进表示一个代码的结束。没有明确的大括号、中括号、或者关键字。这意味着空白很重要,而且必须要是一致的。第一个没有缩进的行标记了代码块,意思是指函数,if 语句、 for 循环、 while 循环等等的结束。
#输入很简单,加上 input("Press Enter")就可以让程序运行完后停一下
x = input("Please input x:")
input("Press Enter")
输出的 print 函数总结:
1. 字符串和数值类型
可以直接输出
2.变量
无论什么类型,数值,布尔,列表,字典...都可以直接输出
3.格式化输出
类似于C中的 printf
(1). %字符:标记转换说明符的开始
(2). 转换标志:-表示左对齐;+表示在转换值之前要加上正负号;“”(空白字符)表示正数之前保留空格;0表示转换值若位数不够则用0填充
(3). 最小字段宽度:转换后的字符串至少应该具有该值指定的宽度。如果是*,则宽度会从值元组中读出。
(4). 点(.)后跟精度值:如果转换的是实数,精度值就表示出现在小数点后的位数。如果转换的是字符串,那么该数字就表示最大字段宽度。如果是*,那么精度将从元组中读出
(5).字符串格式化转换类型
转换类型 含义
d,i 带符号的十进制整数 *
o 不带符号的八进制
u 不带符号的十进制
x 不带符号的十六进制(小写)
X 不带符号的十六进制(大写)
e 科学计数法表示的浮点数(小写)
E 科学计数法表示的浮点数(大写)
f,F 十进制浮点数
g 如果指数大于-4或者小于精度值则和e相同,其他情况和f相同
G 如果指数大于-4或者小于精度值则和E相同,其他情况和F相同
C 单字符(接受整数或者单字符字符串)
r 字符串(使用repr转换任意python对象)
s 字符串(使用str转换任意python对象)
4.如何让 print 不换行
在Python中总是默认换行的
要想换行你应该写成 print(x,end = '' )
然后很重要一点是类型可以自由地转换,你赋什么值,变量就是什么类型,python会自动帮你管理
整数的输出
直接使用'%d'代替可输入十进制数字:
Python支持将值格式化为字符串。将值插入到%s 占位符的字符串中
(这个用法 从C借用)
%s%d%f
print("Hello %s, my name is %s" % ('john', 'mike'))
```
Hello john, my name is mike
```python
#如果您使用int而不是字符串,请使用%d而不是%s
print("My name is %s, and I'm %d years old" %('lulu', 15))
#%s 字符串
string=("hello")
#%s打印时结果是hello
print ("string=%s" % string) # output: string=hello
#%2s意思是字符串长度为2,当原字符串的长度超过2时,按原长度打印,所以%2s的打印结果还是hello
print ("string=%2s" % string) # output: string=hello
#%7s意思是字符串长度为7,当原字符串的长度小于7时,在原字符串左侧补空格,
#所以%7s的打印结果是 hello
print ("string=%7s" % string) # output: string= hello
#%-7s意思是字符串长度为7,当原字符串的长度小于7时,在原字符串右侧补空格,
#所以%-7s的打印结果是 hello
print( "string=%-7s!" % string) # output: string=hello !
#%.2s意思是截取字符串的前2个字符,所以%.2s的打印结果是he
print ("string=%.2s" % string)# output: string=he
#%.7s意思是截取字符串的前7个字符,当原字符串长度小于7时,即是字符串本身,
#所以%.7s的打印结果是hello
print ("string=%.7s" % string) # output: string=hello
#%a.bs这种格式是上面两种格式的综合,首先根据小数点后面的数b截取字符串,
#当截取的字符串长度小于a时,还需要在其左侧补空格
print ("string=%7.2s" % string)# output: string= he
print ("string=%2.7s" % string)# output: string=hello
print ("string=%10.7s" % string) # output: string= hello
#还可以用%*.*s来表示精度,两个*的值分别在后面小括号的前两位数值指定
print ("string=%*.*s" % (7,2,string) ) # output: string= he
```
string=hello
string=hello
string= hello
string=hello !
string=he
string=hello
string= he
string=hello
string= hello
string= he
```python
#%d 整型
num=14
#%d打印时结果是14
print ("num=%d" % num) # output: num=14
#%1d意思是打印结果为1位整数,当整数的位数超过1位时,按整数原值打印,所以%1d的打印结果还是14
print ("num=%1d" % num) # output: num=14
#%3d意思是打印结果为3位整数,当整数的位数不够3位时,在整数左侧补空格,所以%3d的打印结果是 14
print ("num=%3d" % num ) # output: num= 14
#%-3d意思是打印结果为3位整数,当整数的位数不够3位时,在整数右侧补空格,所以%3d的打印结果是14_
print ("num=%-3d" % num) # output: num=14_
#%05d意思是打印结果为5位整数,当整数的位数不够5位时,在整数左侧补0,所以%05d的打印结果是00014
print ("num=%05d" % num) # output: num=00014
#%.3d小数点后面的3意思是打印结果为3位整数,
#当整数的位数不够3位时,在整数左侧补0,所以%.3d的打印结果是014
print ("num=%.3d" % num) # output: num=014
#%.0003d小数点后面的0003和3一样,都表示3,意思是打印结果为3位整数,
#当整数的位数不够3位时,在整数左侧补0,所以%.3d的打印结果还是014
print ("num=%.0003d" % num) # output: num=014
#%5.3d是两种补齐方式的综合,当整数的位数不够3时,先在左侧补0,还是不够5位时,再在左侧补空格,
#规则就是补0优先,最终的长度选数值较大的那个,所以%5.3d的打印结果还是 014
print ("num=%5.3d" % num) # output: num= 014
#%05.3d是两种补齐方式的综合,当整数的位数不够3时,先在左侧补0,还是不够5位时,
#由于是05,再在左侧补0,最终的长度选数值较大的那个,所以%05.3d的打印结果还是00014
print ("num=%05.3d" % num) # output: num=00014
#还可以用%*.*d来表示精度,两个*的值分别在后面小括号的前两位数值指定
#如下,不过这种方式04就失去补0的功能,只能补空格,只有小数点后面的3才能补0
print ("num=%*.*d" % (4,3,num)) # output: num= 014
```
num=14
num=14
num= 14
num=14
num=00014
num=014
num=014
num= 014
num=00014
num= 014
```python
# %f 浮点型
import math
#%a.bf,a表示浮点数的打印长度,b表示浮点数小数点后面的精度
#只是%f时表示原值,默认是小数点后5位数
print ("PI=%f" % math.pi) # output: PI=3.141593
#只是%9f时,表示打印长度9位数,小数点也占一位,不够左侧补空格
print ("PI=%9f" % math.pi) # output: PI=_3.141593
#只有.没有后面的数字时,表示去掉小数输出整数,03表示不够3位数左侧补0
print ("PI=%03.f" % math.pi) # output: PI=003
#%6.3f表示小数点后面精确到3位,总长度6位数,包括小数点,不够左侧补空格
print ("PI=%6.3f" % math.pi) # output: PI=_3.142
#%-6.3f表示小数点后面精确到3位,总长度6位数,包括小数点,不够右侧补空格
print ("PI=%-6.3f" % math.pi) # output: PI=3.142_
#还可以用%*.*f来表示精度,两个*的值分别在后面小括号的前两位数值指定
#如下,不过这种方式06就失去补0的功能,只能补空格
print ("PI=%*.*f" % (6,3,math.pi)) # output: PI=_3.142
```
PI=3.141593
PI= 3.141593
PI=003
PI= 3.142
PI=3.142
PI= 3.142
使用format函数来自定义格式
这里的% 被 {}替换了
不过也更容易被理解Python中格式化输出字符串使用format()函数, 字符串即类, 可以使用方法;
Python是完全面向对象的语言, 任何东西都是对象;字符串的参数
1. 使用{NUM}进行表示,0, 表示第一个参数,1, 表示第二个参数, 以后顺次递加;
2. 使用“:”, 指定代表元素需要的操作, 如”:.3”小数点三位, “:8”占8个字符空间等;
3. 还可以添加特定的字母, 如:
foramt函数更常见的用法其实是str.format(),其基本语法是通过{}和:来代替以前的%
数字 格式 输出 描述
3.141592 {:.2f} 3.14 保留小数点后两位
3.141592 {:+.2f} +3.14 带符号保留小数点后两位
3.141592 {:.0f} 3 不带小数,四舍五入
3 {:0>2d} 03 数字补零 (填充左边, 宽度为2)
3 {x<4d} 3xxx 数字补x (填充右边, 宽度为4)
123456789 {:,} 123,456,789 千分位隔开
0.38 {:.2%} 38% 百分比格式
1000000000 {:.2e} 1.00e+09 指数记法
11 {:b} 1011 二进制转化
b、d、o、x 分别是二进制、十进制、八进制、十六进制。
如果我们希望保留想要的小数位数,需要这样子:
>>> "{:,.2f}".format(12345678.90)
'12,345,678.90'
>>> "{:,.4f}".format(12345678.90) #任意几位都行
'12,345,678.9000'
^、<、>分别是居中、左对齐、右对齐,后面带宽度,默认用0 填充,可指定填充方式```python
age = 25
name = 'Caroline'
print('{0} is {1} years old. '.format(name, age)) # 输出参数
print('{0} is a girl. '.format(name))
print('{0:.3} is a decimal. '.format(1 / 3)) # 小数点后三位
print('{0:_^11} is a 11 length. '.format(name)) # 使用_补齐空位
print('{first} is as {second}. '.format(first=name, second='Wendy')) # 别名替换
print('My name is {0.name}'.format(open('out.txt', 'w'))) # 调用方法
print('My name is {0:8}.'.format('Fred')) # 指定宽度
```
Caroline is 25 years old.
Caroline is a girl.
0.333 is a decimal.
_Caroline__ is a 11 length.
Caroline is as Wendy.
My name is out.txt
My name is Fred .
```python
>>> print("{:,.2f}".format(12345678.90))
>>> print("{:,.4f}".format(12345678.90) ) #任意几位都行
```
12,345,678.90
12,345,678.9000