Python f-string 格式化详解:对齐、精度与补零技巧
本文详细介绍 Python 3.6 引入的 f-string 字符串格式化功能。通过具体示例演示如何在 f-string 中指定字段宽度、实现左对齐与右对齐、控制小数点后位数以及使用零填充不足位数的方法,帮助开发者编写更直观、整洁的代码。
f-string 基础用法
f-string 格式化
f-string 格式化即在字符串模板前添加前缀 f,并将占位符设为大括号 {},内部直接放入对应的数据对象。
具体示例如下所示
f'税前薪资是:{salary}元, 缴税:{tax}元, 税后薪资是:{aftertax}元'
完整的代码如下
salary = input('请输入薪资:')
# 计算出缴税额,存入变量tax
tax = int(salary) *25/100
# 计算出税后工资,存入变量aftertax
aftertax = int(salary) *75/100
print(f'税前薪资是:{salary}元, 缴税:{tax}元, 税后薪资是:{aftertax}元')
运行上述代码,输出结果与预期一致。这种方式是否更加直观明了?
需要注意的是,这种写法要求 Python 解释器版本为 3.6 或更高版本才支持。
指定字段宽度
指定宽度
同样,为了实现输出对齐,我们需要指定填入字符串的宽度。
方法是在大括号内的变量名后添加冒号及宽度值。
例如
salary = 10000 print(f'{salary:10}')
f'{salary:10}' 指定了宽度为 10 个字符,若填入的字符串不足 10 个字符,则在前面补空格。例如上面的输出结果就是
>>> salary = 10000 >>> print(f'{salary:10}') 10000
完整的一个示例程序如下
# 员工 1
salary = 8000
tax = int(salary) *25/100
aftertax = int(salary) *75/100
print(f'税前薪资是:{salary:8}元, 缴税:{tax:8}元, 税后薪资是:{aftertax:8}元')
# 员工 2
salary = 15000
tax = int(salary) *25/100
aftertax = int(salary) *75/100
print(f'税前薪资是:{salary:8}元, 缴税:{tax:8}元, 税后薪资是:{aftertax:8}元')
# 员工 3
salary = 100000
tax = int(salary) *25/100
aftertax = int(salary) *75/100
print(f'税前薪资是:{salary:8}元, 缴税:{tax:8}元, 税后薪资是:{aftertax:8}元')
运行一下结果如下:
税前薪资是: 8000元, 缴税: 2000.0元, 税后薪资是: 6000.0元 税前薪资是: 15000元, 缴税: 3750.0元, 税后薪资是: 11250.0元 税前薪资是: 100000元, 缴税: 25000.0元, 税后薪资是: 75000.0元
这样,整体就显得很清爽。
当然上面的代码 有很多重复的部分。聪明的你想到怎么优化一下了吗?
对了,用函数。像这样
def calcTax(salary):
tax = int(salary) *25/100
aftertax = int(salary) *75/100
print(f'税前薪资是:{salary:8}元, 缴税:{tax:8}元, 税后薪资是:{aftertax:8}元')
# 员工 1
calcTax(8000)
# 员工 2
calcTax(15000)
# 员工 3
calcTax(100000)
实现左对齐
左对齐
上面的输出结果是不足在前面补空格,最终的结果就是右边对齐。 如果我们想左对齐,可以在括号里使用 < 符号
像这样 {salary:<8}
def calcTax(salary):
tax = int(salary) *25/100
aftertax = int(salary) *75/100
print(f'税前薪资是:{salary:<8}元, 缴税:{tax:<8}元, 税后薪资是:{aftertax:<8}元')
calcTax(8320)
calcTax(15023)
calcTax(100030)
运行结果如下:
税前薪资是:8320 元, 缴税:2080.0 元, 税后薪资是:6240.0 元 税前薪资是:15023 元, 缴税:3755.75 元, 税后薪资是:11267.25元 税前薪资是:100030 元, 缴税:25007.5 元, 税后薪资是:75022.5 元
控制小数精度
小数点后位数
如果我们想指定小数点后保留几位,可以像这样 {salary:<8.1f}
后面的.1f就表示小数点后面保留1位
def calcTax(salary):
tax = int(salary) *25/100
aftertax = int(salary) *75/100
print(f'税前薪资是:{salary:8.1f}元, 缴税:{tax:8.1f}元, 税后薪资是:{aftertax:8.1f}元')
calcTax(8320)
calcTax(15023)
calcTax(100030)
运行结果如下:
税前薪资是: 8320.0元, 缴税: 2080.0元, 税后薪资是: 6240.0元 税前薪资是: 15023.0元, 缴税: 3755.8元, 税后薪资是: 11267.2元 税前薪资是:100030.0元, 缴税: 25007.5元, 税后薪资是: 75022.5元
不足补零技巧
不足补零
如果我们想在不足指定宽度的时候不是补空格,而是补数字0,可以像这样 {salary:08}
def calcTax(salary):
tax = int(salary) *25/100
aftertax = int(salary) *75/100
print(f'税前薪资是:{salary:08}元, 缴税:{tax:08.1f}元, 税后薪资是:{aftertax:08.1f}元')
calcTax(8320)
calcTax(15023)
calcTax(100030)
运行结果如下:
税前薪资是:00008320元, 缴税:002080.0元, 税后薪资是:006240.0元 税前薪资是:00015023元, 缴税:003755.8元, 税后薪资是:011267.2元 税前薪资是:00100030元, 缴税:025007.5元, 税后薪资是:075022.5元
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持本站。
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













