本帖最后由 WindRoa 于 2020-6-28 23:02 编辑 # 根据指定的宽度打印格式良好的价格列表
width = int(input('Please enter width: '))
price_width = 10
item_width = width - price_width
header_fmt = '{{:{}}}{{:>{}}}'.format(item_width, price_width)
fmt = '{{:{}}}{{:>{}.2f}}'.format(item_width, price_width)
print('=' * width)
print(header_fmt.format('Item', 'Price'))
print('-' * width)
print(fmt.format('Apples', 0.4))
print(fmt.format('Pears', 0.5))
print(fmt.format('Cantaloupes', 1.92))
print(fmt.format('Dried Apricots (16 oz.)', 8))
print(fmt.format('Prunes (4 lbs.)', 12))
print('=' * width)
好吧,换一种问法……为什么第5、6行代码是3层花括号?
为什么我用pycharm调试 运行完5、6行代码之后就只剩一层花括号了?
本帖最后由 Twilight6 于 2020-6-28 23:16 编辑
在 Python format格式化中 如果你想打印花括号 就只能多嵌套个花括号进行转义,而不是使用转义字符
所以这里的花括号你多括一次,就会导致打印的是花括号本身里面的内容,而不是你后面的格式化想传入的参数哈
当你三层花括号 比如 '{{:{}}}'.format(25) 就会因为 最外层的花括号是为了转义第二层的花括号,所以你打印出来的花括号此时就是第二层被转义的花括号
因为第二层的花括号被转义了,导致最内层花括号还是有起到作用的 所以此时把 25 替换了最内的花括号 所以打印的结果是 {:25}
|