首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐

【编程27--python学习21】print格式化输出

  • 25-03-03 18:03
  • 3461
  • 7756
blog.csdn.net

文章目录

  • 1、`%`格式化输出用法
    • 1.1、整数的输出(不同进制)
    • 1.2、浮点数输出
      • (1)格式化输出
      • (2)内置round()
    • 3、字符串输出
    • 4、 其他
      • (1)字符串格式代码
      • (2)常用转义字符
  • 2、format用法
    • 2.1 位置匹配
    • 2.2 格式转换
    • 2.3 进阶用法
      • 2.3.1 进制转换
      • 2.3.2 左中右对齐及位数补全
      • 2.3.3 正负符号显示
      • 2.3.4 百分数%
      • 2.3.5 时间
      • 2.3.6 逗号","分隔金钱,每一千进位
      • 2.3.7 占位符嵌套
      • 2.3.8 占位符%s和%r
  • 3、format的用法变形
  • 4、注意问题
  • LAST、参考文献

1、%格式化输出用法

字符串中%用于定位

如果只有单个变量被包含在%的字符串中,%字符串结束之后,直接加上变量

如果有多个变量的输出加入变量构成的元组

image-20210622110241195

1.1、整数的输出(不同进制)

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

print('八进制:%o\n十进制:%d\n十六进制:%x\n' % (20, 20 ,20))
  • 1

image-20210622110907619

1.2、浮点数输出

(1)格式化输出

%f ——保留小数点后面六位有效数字
%.3f——保留3位小数位
%e ——保留小数点后面六位有效数字,指数形式输出
%.3e——保留3位小数位,使用科学计数法
%g ——在保证六位有效数字的前提下,使用小数方式,否则使用科学计数法
%.3g——保留3位有效数字,使用小数或科学计数法

# 默认保留6位小数,超过6位的时候四舍五入保存,不足6位的时候补零
print('%f' % 1.11)  
print('%f' % 1.1111115)  
print('%f' % 1.1111114)  
print('%.1f' % 1.11)  # 取1位小数 也是四舍五入
print('%5.1f' % 1.11)  
print('%5.1f' % 100) 
print('%5.1f' % 1000) 
# 左边设置补空的空间   5代表加上小数和小数点还有整数部分一共五位,如果没有到5位在左边补空,如果超过正常显示
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

image-20210622110849789

print('%e' % 1.11)  # 默认6位小数,用科学计数法
print('%.3e' % 1.11)  # 取3位小数,用科学计数法
print('%g' % 1111.1111)  # 默认6位有效数字
print('%.7g' % 1111.1111)  # 取7位有效数字
print('%.2g' % 1111.1111)  # 取2位有效数字,自动转换为科学计数法
  • 1
  • 2
  • 3
  • 4
  • 5

image-20210622110833663

(2)内置round()

round(number[, ndigits])
参数:
number - 需要处理的数字表达式。
ndigits - 表示从小数点到最后四舍五入的位数。默认值为0。
返回值:
该方法返回number的小数点舍入为ndigits位数后的值。

round()函数只有一个参数,不指定位数的时候,返回一个整数,而且是最靠近的整数,类似于四舍五入,当指定取舍的小数点位数的时候,一般情况也是使用四舍五入的规则,但是碰到.5的情况时,如果要取舍的位数前的小数是奇数,则直接舍弃,如果是偶数则向上取舍。

注:“.5”这个是一个“坑”,且python2和python3出来的接口有时候是不一样的,尽量避免使用round()函数吧

print(round(1.1125))  # 四舍五入,不指定位数,取整
print(round(1.1135,3))  # 取3位小数,由于3为奇数,则向下“舍”
print(round(1.1125,3))  # 取3位小数,由于2为偶数,则向上“入”
print(round(1.5))  # 无法理解,查阅一些资料是说python会对数据进行截断,没有深究
print(round(2.5))  # 无法理解
print(round(1.675,2))  # 无法理解
print(round(2.675,2))  # 无法理解
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

3、字符串输出

%s
%10s——右对齐,占位符10位
%-10s——左对齐,占位符10位
%.2s——截取2位字符串
%10.2s——10位占位符,截取两位字符串

print('%s' % 'hello world')  # 字符串输出
print('%20s' % 'hello world')  # 右对齐,取20位,不够则补位
print('%-20s' % 'hello world')  # 左对齐,取20位,不够则补位
print('%.2s' % 'hello world')  # 取2位
print('%10.2s' % 'hello world')  # 右对齐,取2位
print('%-10.2s' % 'hello world')  # 左对齐,取2位
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

image-20210622110819225

4、 其他

(1)字符串格式代码

符号说明
%s字符串
%c字符
%d十进制整数
%i整数
%u无符号整数
%o八进制整数
%x十六进制整数
%X十六进制整数大写
%e浮点数格式5
%E浮点数格式5
%f浮点数格式5
%g浮点数格式5
%G浮点数格式5
%%文字%

(2)常用转义字符

转义字符描述
\(在行尾时)续行符
\\反斜杠符号
\’单引号
\"双引号
\a响铃
\b退格(backspace)
\e转义
\000空
\n换行
\v纵向制表符
\t横向制表符
\r回车
\f换页
\oyy八进制数yy表示的字符,例如:\o12代表换行
\xyy十进制数yy表示的字符,例如:\x0a代表换行
\other其他字符以普通格式输出

大括号

2、format用法

相对基本格式化输出采用‘%’的方法,format()功能更强大,该函数把字符串当成一个模板,通过传入的参数进行格式化,并且使用大括号‘{}’作为特殊字符代替‘%’

2.1 位置匹配

(1)不带编号,即“{}”

(2)带数字编号,可调换顺序,即“{1}”、“{2}”

(3)带关键字,即“{a}”、“{tom}”

print('{} {}'.format('hello','world'))  # 不带字段
print('{0} {1}'.format('hello','world'))  # 带数字编号
print('{0} {1} {0}'.format('hello','world'))  # 打乱顺序
print('{1} {1} {0}'.format('hello','world')) #可重复
print('{a} {tom} {a}'.format(tom='hello',a='world'))  # 带关键字
  • 1
  • 2
  • 3
  • 4
  • 5

image-20210622110424661

2.2 格式转换

‘b’ - 二进制。将数字以2为基数进行输出。

‘c’ - 字符。在打印之前将整数转换成对应的Unicode字符串。

‘d’ - 十进制整数。将数字以10为基数进行输出。

‘o’ - 八进制。将数字以8为基数进行输出。

‘x’ - 十六进制。将数字以16为基数进行输出,9以上的位数用小写字母。

‘e’ - 幂符号。用科学计数法打印数字。用’e’表示幂。

‘g’ - 一般格式。将数值以fixed-point格式输出。当数值特别大的时候,用幂形式打印。

‘n’ - 数字。当值为整数时和’d’相同,值为浮点数时和’g’相同。不同的是它会根据区域设置插入数字分隔符。

‘%’ - 百分数。将数值乘以100然后以fixed-point(‘f’)格式打印,值后面会有一个百分号。

print('{0:b}'.format(3))
print('{:c}'.format(20))
print('{:d}'.format(20))
print('{:o}'.format(20))
print('{:x}'.format(20))
print('{:e}'.format(20))
print('{:g}'.format(20.1))
print('{:f}'.format(20))
print('{:n}'.format(20))
print('{:%}'.format(20))
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

image-20210622110449054

2.3 进阶用法

2.3.1 进制转换

2进制、8进制、10进制、16进制

print("int: {0:d};  hex: {0:x};  oct: {0:o};  bin: {0:b}".format(42))
# 'int: 42;  hex: 2a;  oct: 52;  bin: 101010'
print("int: {0:d};  hex: {0:#x};  oct: {0:#o};  bin: {0:#b}".format(42))  # 在前面加“#”,则带进制前缀
# 'int: 42;  hex: 0x2a;  oct: 0o52;  bin: 0b101010'
  • 1
  • 2
  • 3
  • 4

image-20210622105418036

2.3.2 左中右对齐及位数补全

(1)< (默认)左对齐、> 右对齐、^ 中间对齐、= (只用于数字)在小数点后进行补齐

(2)取位数“{:4s}”、"{:.2f}"等

左中右对齐及位数补齐

print('{} and {}'.format('hello','world'))  # 默认左对齐
# hello and world
print('{:10s} and {:>10s}'.format('hello','world'))  # 取10位左对齐,取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))  # 取2位小数,右对齐,取10位
# 1.123 is       1.12

print('{:<30}'.format('left aligned'))  # 左对齐
# 'left aligned                  '
print('{:>30}'.format('right aligned'))  # 右对齐
# '                 right aligned'
print('{:^30}'.format('centered'))  # 中间对齐
# '           centered           '
print('{:*^30}'.format('centered'))  # 使用“*”填充
# '***********centered***********'
print('{:0=30}'.format(11))  # 还有“=”只能应用于数字,这种方法可用“>”代替
# '000000000000000000000000000011'
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21

image-20210622105448642

2.3.3 正负符号显示

正负符号显示 %+f, %-f, 和 % f的用法

print('{:+f}; {:+f}'.format(3.14, -3.14))  # 总是显示符号
# '+3.140000; -3.140000'
print('{: f}; {: f}'.format(3.14, -3.14))  # 若是+数,则在前面留空格
# ' 3.140000; -3.140000'
print('{:-f}; {:-f}'.format(3.14, -3.14))  # -数时显示-,与'{:f}; {:f}'一致
# '3.140000; -3.140000'
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

image-20210622105505308

2.3.4 百分数%

百分数%

points = 19
total = 22
print('Correct answers: {:.2%}'.format(points/total))
# 'Correct answers: 86.36%'
  • 1
  • 2
  • 3
  • 4

image-20210622105522402

2.3.5 时间

时间

import datetime
d = datetime.datetime(2010, 7, 4, 12, 15, 58)
print('{:%Y-%m-%d %H:%M:%S}'.format(d))
# '2010-07-04 12:15:58'
  • 1
  • 2
  • 3
  • 4

2.3.6 逗号","分隔金钱,每一千进位

逗号","分隔金钱

print('{:,}'.format(1234567890))
# '1,234,567,890'
  • 1
  • 2

image-20210622105555542

2.3.7 占位符嵌套

占位符嵌套

for align, text in zip('<^>', ['left', 'center', 'right']):
    print('{0:{fill}{align}16}'.format(text, fill=align, align=align))

# 'left<<<<<<<<<<<<'
# '^^^^^center^^^^^'
# '>>>>>>>>>>>right'
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

image-20210622105609696

octets = [192, 168, 0, 1]
print('{:02X}{:02X}{:02X}{:02X}'.format(*octets))
# 'C0A80001'
  • 1
  • 2
  • 3

image-20210622105624394

width = 5
for num in range(5,12):
    for base in 'dXob':
        print('{0:{width}{base}}'.format(num, base=base, width=width), end=',')
    print()
  • 1
  • 2
  • 3
  • 4
  • 5

image-20210622110725537

2.3.8 占位符%s和%r

占位符%s和%r

"""
replacement_field ::= "{" [field_name] ["!" conversion] [":" format_spec] "}"
conversion ::= "r" | "s" | "a"
这里只有三个转换符号,用"!"开头。
"!r"对应 repr();"!s"对应 str(); "!a"对应ascii()。
"""

print("repr() shows quotes: {!r}; str() doesn't: {!s}".format('test1', 'test2'))
# "repr() shows quotes: 'test1'; str() doesn't: test2"  
# # 输出结果是一个带引号,一个不带
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

image-20210622110712937

3、format的用法变形

# a.format(b)
print("{0} {1}".format("hello","world"))
#'hello world'

# 适用于3.6以后的版本
# f"xxxx"# 可在字符串前加f以达到格式化的目的,在{}里加入对象,此为format的另一种形式:
a = "hello"
b = "world"
print(f"{a} {b}")
# 'hello world'

name = 'jack'
age = 18
sex = 'man'
job = "IT"
salary = 9999.99
print(f'my name is {name.capitalize()}.')
print(f'I am {age:*^10} years old.')
print(f'I am a {sex}')
print(f'My salary is {salary:10.3f}')

# 结果
# my name is Jack.
# I am ****18**** years old.
# I am a man
# My salary is   9999.990
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26

4、注意问题

当想要在format这种格式化的字符串输出中输出大括号{}

请参考这一篇文章

【编程53–python学习27】使用format格式化字符串的过程中,输出大括号问题解决_呆呆象呆呆的博客-CSDN博客

LAST、参考文献

python基础_格式化输出(%用法和format用法) - fat39 - 博客园

(待参考)Python格式化字符串f-string概览

文章知识点与官方知识档案匹配,可进一步学习相关知识
Python入门技能树首页概览416632 人正在系统学习中
注:本文转载自blog.csdn.net的呆呆象呆呆的文章"https://blog.csdn.net/qq_41554005/article/details/103964670"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2491) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

101
推荐
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2025 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top