Skip to content

Latest commit

 

History

History
306 lines (203 loc) · 6.68 KB

441-2053481-字符串函数str_format_数字进制_有效数字_精度.sy.md

File metadata and controls

306 lines (203 loc) · 6.68 KB
show version enable_checker
step
1.0
true

格式化字符串

回忆

  • 上次了解了字符串格式中的四种变量
名称 英文 作用
填充 fill 空位填充符号
对齐 align 左右对齐符号
符号 sign 正负号
宽度 width 输出宽度

图片描述

  • 顺序来自
    • 格式要求

图片描述

  • 原来的%(modulo)运算符可以按照不同进制来显示
  • str.format可以吗??🤔

整型的格式

图片描述

  • 各种进制形式都有
    • 方式和%(modulo)相似

图片描述

  • x和X 可以区分 十六进制的大小写
    • 前缀0x 可以自动加上 吗?

前缀控制

  • 观察帮助手册

图片描述

  • #的作用就是给加上前缀

图片描述

具体测试

  • 默认类型 为d
    • 十进制 整型

图片描述

print("int: {0:d}; hex: {0:x}, oct: {0:o}, bin: {0:b}".format(42))
print("int: {0:d}; hex: {0:#x}, oct: {0:#o}, bin: {0:#b}".format(42))

前缀

print("{}".format(42))
print("{:d}".format(42))
print("{:b}".format(42))
print("{:o}".format(42))
print("{:x}".format(42))
print("{:X}".format(42))
  • 没有前缀

图片描述

print("{:#b}".format(42))
print("{:#o}".format(42))
print("{:#x}".format(42))
print("{:#X}".format(42))
  • 加上前缀

图片描述

  • 可以做一个 十六进制 对应关系了

进制列表

width = 5
for num in range(17):
    for base in 'dXob':
        print('{0:{width}{base}}'.format(num, base=base, width=width), end=' ')
    print()
  • 运行效果

图片描述

转化ipv4地址

  • 更多应用

图片描述

  • 可以 让很长的数字 分段显示吗?

成组选项

图片描述

  • 千分位符 共 两种
    • 下划线(_)
    • 逗号(,)

具体效果

图片描述

print("{:_d}".format(2024))
print("{:#10_d}".format(2024))
print("{:#10,d}".format(2024))
  • 结果

图片描述

  • 其中10是宽度(width)
  • 可以显示浮点型小数吗?

浮点型的格式

图片描述

  • 具体什么意思?

具体含义

print("e===={:e}".format(3.14))
print("E===={:E}".format(3.14))
print("f===={:f}".format(3.14))
print("F===={:F}".format(3.14))
print("g===={:g}".format(3.14))
print("G===={:G}".format(3.14))
print("n===={:n}".format(3.14))
print("%===={:%}".format(3.14))
print("{}".format(3.14))
  • 运行结果

图片描述

  • 含义分析
符号 来源 含义
e exponent of 10 科学计数法
E Exponent of 10 大写科学计数法
f float 浮点小数
F Float 大写浮点小数
g general 通用格式
G General 大写通用格式
n number 数字格式
% percent 百分比
None 默认格式
  • 浮点型可以控制精度吗?

浮点型精度控制

图片描述

  • 可以控制宽度吗?

回忆宽度控制

图片描述

  • 可以控制对齐方式吗?

回忆对齐方式

图片描述

  • 对齐方式再总结

图片描述

关于对齐

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

图片描述

  • 可以有正负号吗?

正负号

图片描述

      • 正号+ 明确显示
  • 空格
    • 正号+ 用空格显示
      • 正号+ 不显示

图片描述

图片描述

  • 正负号
    • 占用宽度吗?

正负号

  • 验证结果

图片描述

  • 正负号
    • 应该是占用宽度的

格式变量

  • 将 参数传入 字符串格式

图片描述

  • 有点嵌套
    • 那个意思了

坐标

print('Coordinates: {latitude}, {longitude}'.format(latitude='37.24N', longitude='-115.81W'))
coord = {'latitude': '37.24N', 'longitude': '-115.81W'}
print('Coordinates: {latitude}, {longitude}'.format(**coord))
  • 访问字典项

图片描述

访问元组项

print("{} and {}".format(3,8))
print("{0} and {0}".format(3,8))
print("{0[0]} and {0[1]}".format([3,8]))
print("{0[0]: {0[1]}}".format([3,8]))
  • 运行结果

图片描述

  • 这真的很有意思
  • str.format还能干点什么?

宽度

print("{:08b}".format(ord("a")))
  • 显示a字符对应序号的字节形态

图片描述

  • 可以把数字的字节形态
    • 以二进制的形态显示出来
  • 也许可以做些更好玩的事!

总结

  • 这次深入了解了str.format
参数 含义 选项
[[fill]align] [填充]对齐] <>=#
[sign] 正负号 +-空
["#"] 前缀
[width] 宽度 数值
[grouping_option] 千位分隔符 ,_
["." precision] [.精度] 数值
[type] 类型 bodxefgn
  • 我们还可以输出 数字的二进制形态
    • 让我们再深入一下
    • 二进制运算
  • 看看还有什么好玩的?🤔
  • 下次再说👋