Skip to content

Latest commit

 

History

History
239 lines (160 loc) · 5.07 KB

440-851732-str_format_字符串的格式化函数_对齐_宽度_填充_正负号.sy.md

File metadata and controls

239 lines (160 loc) · 5.07 KB
show version enable_checker
step
1.0
true

格式化字符串

回忆

  • 上次了解了 按数制 输出的方法
    • 使用% (modulo)
    • 这种方法参照于 c语言的 printf函数
    • 目前已被替代

图片描述

  • 新方法 是 str.format

    • 可以设置各种格式
    • 也可以使用参数
  • 可以 将九九乘法表用str.format重写吗??🤔

重写九九乘法表

for i in range(1, 10):
    for j in range(1, 10):
        str_exprssion = "{0}*{1}={2}".format(i, j, i * j)
        print(str_exprssion,end="")
    print()
  • 运行效果

图片描述

  • 看起来还是要处理
    • 空格
    • 数字宽度问题

帮助手册

  • 修改代码
for i in range(1, 10):
    for j in range(1, 10):
        str_exprssion = "{0:d}*{1:d}={2:2d} ".format(i, j, i * j)
        print(str_exprssion,end="")
    print()
  • 运行结果

图片描述

  • 结果成功了
    • 2显然是宽度
  • 这格式化还真有些门道

格式说明

  • 点击帮助手册中的
    • Format String Syntax
    • 格式字符串语法 观察

图片描述

修改宽度

print("{0:0}".format(42),0,sep="|")
print("{0:1}".format(42),1,sep="|")
print("{0:2}".format(42),2,sep="|")
print("{0:3}".format(42),3,sep="|")
print("{0:4}".format(42),4,sep="|")
print("{0:5}".format(42),5,sep="|")
print("{0:6}".format(42),6,sep="|")
  • 运行结果

图片描述

  • 确实可以控制宽度
    • 宽度宽了 就有对齐的问题
  • 如何对齐呢?

对齐

图片描述

  • 对齐是可选项

图片描述

  • 具体含义
符号 含义
< 左对齐
> 右对齐
^ 居中对齐
= 在符号后填充

对齐代码

value = "42"

# Left-align within width of 10
print("{:<10}".format(value),end="|\n")

# Right-align within width of 10
print("{:>10}".format(value),end="|\n")

# Center-align within width of 10
print("{:^10}".format(value),end="|\n")
  • 运行结果

图片描述

  • 这等于号如何理解?
    • 怎么在符号后填充
  • 我们首先要了解填充

填充

  • fill 写在所有 格式的最前面
    • 是 对齐的可选项

图片描述

  • 我们使用下划线作为填充(fill)
value = "42"

# Right-align within width of 10
print("{:_>10}".format(value))  # Output:         42

# Center-align within width of 10
print("{:_^10}".format(value))  # Output:    42
  • 填充符号为下划线(_)

图片描述

  • 这还是无法理解
    • =对齐方式
    • 在符号后填充

符号对齐

value = -42

# Left-align within width of 10
print("{:0>10}".format(value))  # Output: 42

# Align the number within a width of 10 by padding after the sign
print("{:=10}".format(value))  # Output: -       42

# Using '0' before the field width with the '=' alignment
print("{:=010}".format(value))  # Output: -000000042

  • 运行结果

图片描述

  • 实际上是符号对齐的效果
  • 可以显示正号+吗?

查询文档

图片描述

  • 在填充后面

图片描述

  • 理解
符号 含义
+ 正负号都显示
- 正号不显示,只显示负号
空格 正数符号为空格,负号显示
  • 结论:负号一定会被显示!
    • 废话!要不怎么知道是负的?!🥸

正符号

value = 42
print("{:0=-10}".format(value))
print("{:0=+10}".format(value))
print("{:0= 10}".format(value))
  • 格式理解

图片描述

  • 执行结果

图片描述

总结

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

图片描述

  • 顺序来自
    • 格式要求

图片描述

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