• 生活就是这样,需要去灌溉!
    • 谢谢您的关注,欢迎您的注册与写作!
    • 循环往复,生生不息,或许这就是生命的意义吧!生命是插曲的产品吧!
    • 古今多少事,都付笑言中!
    • 风住尘香花已尽,日晚倦梳头。物是人非事事休,欲语泪先流。
    • 闻说双溪春尚好,也拟泛轻舟,只恐双溪舴艋舟,载不动许多愁。

Python 格式化输出 —— 小数转化为百分数

Python 柳叶扉鸿 2年前 (2023-05-04) 1874次浏览 已收录 扫描二维码
内容目录

本文大部分内容来源于此链接的文章 ef="https://www.cnblogs.com/qinchao0317/p/10699717.html”>)
,我对部分内容做了一些改动,方便自己日后复习,若有侵权,请联系我,我会将此文删除,谢谢)

话说在看上面链接的文章时,并没有将所有知识学习到位,略过了部分内容,算是偷懒吧,因为看的确实烦。这篇文章(笔记)对 Python 的格式化输出的讲解并不完整,不过以后再遇到此类知识时,先看这篇文章,若未找到需要的内容后,再重新百度就好。

1 %用法
1.1 整数的输出

%o:oct 八进制
%d:dec 十进制
%x:hex 十六进制

>>> print('%o' % 20)
24
>>> print('%d' % 20)
20
>>> print('%x' % 20)
14

1.2 浮点数输出

%f:保留小数点后面六位有效数字
%.3f:保留小数点后面三位有效数字

%e:保留小数点后面六位有效数字,使用科学计数法
%.3e:保留小数点后面三位有效数字,使用科学计数法

>>> print('%f' % 1.11) # 默认保留 6 位小数
1.110000
>>> print('%.1f' % 1.11) # 保留 1 位
1.1
>>> print('%e' % 100.01) # 默认保留 6 位小数,用科学计数法
1.000100e+02
>>> print('%.3e' % 100.01) # 保留 3 位小数,用科学计数法
1.000e+02

1.3 字符串输出

%s:默认的字符串输出格式
%10s:右对齐,占位符 10 位
%-10s:左对齐,占位符 10 位
%.2s:截取 2 位字符串
%10.2s:10 位占位符,截取 2 位字符串

>>> print('%s' % 'Hello World')
Hello World
>>> print('%20s' % 'Hello World') # 右对齐,取 20 位,不够的话以空格补位
         Hello World
>>> print('%-20s' % 'Hello World') # 左对齐,取 20 位,不够的话以空格补位
Hello World
>>> print('%.2s' % 'Hello World') # 从左到右截取两位字符串
He
>>> print('%10.2s' % 'Hello World') # 右对齐,占位符 10 位,从左到右截取 2 位字符串
        He
>>> print('%-10.2s' % 'Hello World') # 左对齐,占位符 10 位,从左到右截取 2 位字符串
He

1.4 其他
字符串格式代码
Python 格式化输出 —— 小数转化为百分数
常用转义字符

Python 格式化输出 —— 小数转化为百分数

2 format
相比于%,format()功能更强大。format()函数将字符串当成一个模板,通过传入的参数进行格式化,使用{}作为特殊字符来代替%。

2.1 位置匹配
不带编号,即"{}"
带数字编号,可调换顺序,如,"{1}"、"{2}"
带关键字,如"{name}"、"{age}"

>>> print('{} {}'.format('Hello', 'world'))
Hello world
>>> print('{0} {1}'.format('Hello', 'world')) # 带数字编号
Hello world
>>> print('{0} {1} -- {1} {0}'.format('Hello', 'world')) # 打乱
Hello world -- world Hello
>>> print('{name} {age} {sex}'.format(name='xw', age='23', sex='male')) # 使用关键字
xw 23 male

2.2 格式转换
‘b’ – 二进制。将数字以 2 为基数进行输出。
‘c’ – 字符。在打印之前将整数转换成对应的 Unicode 字符串。
‘d’ – 十进制整数。将数字以 10 为基数进行输出。
‘o’ – 八进制。将数字以 8 为基数进行输出。
‘x’ – 十六进制。将数字以 16 为基数进行输出,9 以上的位数用小写字母。
‘e’ – 幂符号。用科学计数法打印数字。用’e’表示幂。

>>> print('{:b}'.format(5))
101
>>> print('{:c}'.format(65))
A
>>> print('{:d}'.format(20))
20
>>> print('{:o}'.format(20))
24
>>> print('{:x}'.format(20))
14
>>> print('{:e}'.format(20))
2.000000e+01

2.3 进阶
进制转换

>>> "int:{0:d}, hex:{0:x}, oct:{0:o}, bin:{0:b}".format(42)
'int:42, hex:2a, oct:52, bin:101010'
>>> "int:{0:d}, hex:{0:#x}, oct:{0:#o}, bin:{0:#b}".format(42) # 若进制前有#号,则输出带进制前缀
'int:42, hex:0x2a, oct:0o52, bin:0b101010'

左中右对齐及位数补全

<是左对齐(默认状态就是左对齐),>是右对齐,^是居中。

>>> print('{} and {}'.format('hello', 'world')) # 默认左对齐
hello and world
>>> print('{:10s} and {:>10s}'.format('hello', 'world')) # 第一个取 10 位左对齐,第二个取十位右对齐
hello and world
>>> print('{:^10s} and {:^10s}'.format('hello', 'world')) # 两个位置均取长 10 位且居中对齐
hello and world
>>> print('{} is {:.2f}'.format(1.123, 1.123)) # 第二个位置取 2 位小数
1.123 is 1.12
>>> print('{0} is {0:>10.2f}'.format(1.123)) # 第二个位置取 10 位,2 位为小数,右对齐
1.123 is 1.12
>>>
>>>
>>> '{:<30s}'.format('left aligned') # 左对齐,30 位长度 'left aligned ' >>> '{:>30s}'.format('right aligned') # 右对齐,30 位长度
' right aligned'
>>> '{:^30s}'.format('centerd') # 居中
' centerd '
>>> '{:*^30}'.format('centerd') # 居中,空白处用*填充
'***********centerd************'

正负符号显示

>>> '{:+f} {:+f}'.format(3.14, -3.14) # 总是显示正负号
'+3.140000 -3.140000'
>>> '{: f} {: f}'.format(3.14, -3.14) # 若是正数,则在前面留一个空格;若为负数,则显示负号即可
' 3.140000 -3.140000'
>>> '{:-f} {:-f}'.format(3.14, -3.14) # 若为负数,则显示负号;若为正数,则不显示正号。简单说来,与'{:f} {:f}'一致
'3.140000 -3.140000'

百分数

>>> '{:.2%}'.format(0.981) # 以百分数表示,数字部分的小数点后保留 2 位
'98.10%'

2.4 format 的用法变形
直接上代码

>>> '{0} {1}'.format('hello', 'world') # 普通用法
'hello world'

>>> a = 'hello'
>>> b = 'world'
>>> f'{a} {b}' # f'...',可在字符串前加‘f’符号,以达到格式化的目的,在{}里加入对象,这种为 format 的另一种形式
'hello world'

>>> name = 'xw'
>>> age = 23
>>> sex = 'man'
>>> salary = 1234
>>> print(f'My name is {name.capitalize()}.') # 将名字大写
My name is Xw.
>>> print(f'I am {age:*^10} years old.') # 居中,共占 10 个字符,空白处用*填充
I am ****23**** years old.
>>> print(f'I am a {sex}')
I am a man
>>> print(f'My salary is {salary:10.3f}') # 共占 10 个字符,小数点后面保留三位
My salary is 1234.000

柳叶扉鸿 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明Python 格式化输出 —— 小数转化为百分数
相关文章
喜欢 (0)