如何格式化列表中的多个元素?Python格式化报错问题求助
解决Python中单个元素的格式化输出问题
你已经搞定了总计部分的格式化,就差单个商品行的输出啦!问题出在当前代码是直接打印元组,没有对每个元素做格式化拼接。下面给你几种简单直观的解决方法:
方法1:使用f-string(推荐,语法最简洁)
f-string是Python 3.6+的特性,能直接在字符串里嵌入变量和格式化规则,可读性拉满:
把循环里的商品打印语句改成:
print(f"{item['number']} {item['name']} @ ${item['price']:.2f} ea ${item_total:.2f}")
拆解一下各部分的作用:
{item['number']}:直接输出商品数量(保持整数格式){item['name']}:原样输出商品名称${item['price']:.2f}:把单价格式化为带$符号的两位小数${item_total:.2f}:把商品总价同样处理为两位小数的货币格式
方法2:使用.format()方法
如果习惯旧写法,也可以用.format()实现:
print("{} {} @ ${:.2f} ea ${:.2f}".format(item['number'], item['name'], item['price'], item_total))
这里的占位符{}会按顺序对应后面的参数,:,.2f用来控制小数位数。
顺便优化总计的输出
你当前的总计语句可以简化,不用拼接字符串,直接格式化更清爽:
print(f"Grand total: ${grand_total:,.2f}")
修改后的完整循环代码
grand_total = 0 for item in grocery_history: item_total = item['number'] * item['price'] grand_total += item_total # 替换原来的元组打印语句 print(f"{item['number']} {item['name']} @ ${item['price']:.2f} ea ${item_total:.2f}") print(f"Grand total: ${grand_total:,.2f}")
运行后就能得到你期望的输出:
1 itemName @ $5.00 ea $5.00 Grand total: $5.00
内容的提问来源于stack exchange,提问作者Chris
相关产品推荐
相关产品推荐

