Python--Print打印格式总结(从C借用&Format)

之前上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

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值