文章目录
一、占位符%格式化输出
1.作用
在输出字符串是用占位符%和一个变量的代号来占位。
2.数据类型代号表格
数据类型代号 | 含义 |
---|---|
%s | 格式化字符串 |
%c | 格式化字符及ASCII码 |
%d | 格式化有符号整数 |
%f | 格式化浮点数,可以指定小数点后的位数,如%.2f |
%i | 格式化有符号整数,老式写法 |
%u | 格式化无符号整数 |
%o | 格式化无符号八进制数 |
%x | 格式化无符号十六进制数 |
%X | 格式化无符号十六进制数(大写) |
%e | 科学计数法格式化浮点数 |
%E | 同%e,用科学计数法格式化浮点数 |
%g | %f和%e的简写 |
%G | %f和%E的简写 |
%p | 用十六进制数格式化变量的地址 |
3.基本语法实例
变量名数据类型要与前面占位符号一一对应
name = "编程小白"
time = 150
feeling = "happy"
print("我是%s。"% name)
print("我是%s。"% (name,))
print("我是%s,我已经学习Python%d天了。"%(name, time))
print("我是%s,我已经学习Python%d天了,学习使我%s。"%(name, time, feeling)) #
输出结果为:
我是编程小白。
我是编程小白。
我是编程小白,我已经学习Python150天了。
我是编程小白,我已经学习Python150天了,学习使我happy。
当变量名与占位符类型不匹配时会报错
name = "编程小白"
time = 150
feeling = "happy"
print("我是%s,我已经学习Python%d天了,学习使我%s。"%(time, name, feeling))
输出结果为:
print("我是%s,我已经学习Python%d天了,学习使我%s。"%(time, name, feeling))
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
TypeError: %d format: a real number is required, not str #%d 格式:需要实数,而不是 str
二、format方法格式化输出
1.基本语法及实例
name = "编程小白"
time = 150
feeling = "happy"
print("我是{}。".format(name))
print("我是{x}。".format(x = name)) #创建变量传参
print("我是{0},我已经学习Python{1}天了。".format(name, time))
print("我是{2},我已经学习Python{0}天了,学习使我{1}。".format(time, feeling, name)) #使用下标索引传参
print("我是{},我已经学习Python{}天了,学习使我{}。".format(name, time, feeling)) #默认位置与前面的占位符{}一一对应
输出结果为:
我是编程小白。
我是编程小白。
我是编程小白,我已经学习Python150天了。
我是编程小白,我已经学习Python150天了,学习使我happy。
我是编程小白,我已经学习Python150天了,学习使我happy。
2.format()方法格式化
样式{<参数序号>:<格式控制标记>}
: | <填充> | <对齐> | <宽度> | <,> | <.精度> | <类型> |
---|---|---|---|---|---|---|
引导符号 | 用于填充的单个字符 | '<‘左对齐 ,’>‘右对齐,’^'中间对齐 | 槽的设定输出宽度 | 数字的千位分隔符适用于整数和浮点数 | 浮点数小数部分的精度或字符串的最大输出长度 | 整数类型b,c,d,o,x,X浮点数类型e,E,f,% |
实例操作
用符号做填充,居中对齐,字符宽度为30*
name = "编程小白"
print("我是{0:*^30}".format(name,))
输出结果为:
我是*************编程小白*************
输出的数字保留两位小数的浮点数
time = 150
print("我学习Python{0:.2f}天了。".format(time))
输出结果为:
我学习Python150.00天了。
3.注意
注意:当格式化的字符宽度小于实际字符串宽度,以实际字符串宽度输出;当格式化字符串宽度大于实际字符串宽度默认情况下在左边补空格键
例:
格式化字符串宽度大于实际字符串宽度
time = 150
print("我学习Python{0:10}天了。".format(time))
输出结果为:
我学习Python 150天了。#数字左边补充了空格
格式化的字符宽度小于实际字符串宽度
time = 150
print("我学习Python{0:1}天了。".format(time))
输出结果为:
我学习Python150天了。
此处还有很多比较有趣的细节,值得各位码友自己去慢慢尝试,欢迎在评论区留言。
三、f-string格式化输出
1.基本语法与实例
name = "编程小白"
time = 150
feeling = "happy"
print(f"我是{name}。")
print(f"我是{name},我已经学习Python{time}天了。")
print(f"我是{name},我已经学习Python{time}天了,学习使我{feeling}。")
输出结果为:
我是编程小白。
我是编程小白,我已经学习Python150天了。
我是编程小白,我已经学习Python150天了,学习使我happy。
f-string的便利之处
- 相比于占位符格式化,f-string使用花括号加变量的方式,更加容易理解可读性更强。
- 由于f-string直接使用到了变量进行标记,所以可以不用关心变量占位的顺序,避免了可能的顺序错乱的问题。
- f-string在花括号中可以使用可执行的程序语句,这使得在格式化占位时更加灵活方便。
- Python版本在3.6以上,推荐多使用f-string这种新的字符串格式化方法。