如何在不使用嵌套大括号的前提下,对需额外格式化的变量进行字符串格式化以实现薪资汇总的精准排版
解决思路:合并格式说明符,无需嵌套大括号
嘿,你完全不用纠结嵌套大括号的问题——Python的字符串格式化语法本来就支持把对齐规则、宽度限制和小数精度整合在同一个格式字符串里!
具体修改方法
你原来对hours_worked的格式是{:>15}(右对齐,宽度15),现在要加上保留两位小数的要求,只需要在格式说明符里追加.2f即可,也就是改成{:>15.2f}。这个写法的逻辑是:
>:指定右对齐15:设置占用15个字符的宽度.2f:要求以保留两位小数的浮点数格式显示
修改后的完整代码如下:
print(formatted_work_date + '{:>15.2f}'.format(float(hours_worked)) + ' ' + '{:^7}'.format(user_input_line_2_list[1]) + '{:>11}'.format(str(empl_hourly_payrate)) + '{:>16}'.format(str(round(gross_pay, 2))))
修改后的输出效果
运行后,hours_worked就会以两位小数的形式右对齐显示,同时完全保留原有排版的间距要求:
Workdate Hours Premium Rate Gross Pay 12/23/2020 13.30 0% 71.45 950.29
额外小优化建议
你还可以把所有格式项整合到一个大的格式字符串里,减少零散的字符串拼接,让代码更易维护(同样不需要嵌套大括号):
print(f"{formatted_work_date} {:>15.2f} {:^7} {:>11} {:>16.2f}".format( float(hours_worked), user_input_line_2_list[1], empl_hourly_payrate, gross_pay ))
内容的提问来源于stack exchange,提问作者Katie Hudak
相关产品推荐
相关产品推荐

