width = int(input('Please enter width: '))
price_width = 20
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('Pears', 0.5))
print(fmt.format('Cantaloupes', 1.92))
print(fmt.format('Dried Apricots(16 oz.)', 8))
print(fmt.format('Prunes(4 1bs.', 12))
print('=' * width)
有朋友发邮件过来说代码里有两句看不懂:
header_fmt = '{{:{}}}{{:>{}}}'.format(item_width, price_width)
fmt = '{{:{}}}{{:>{}.2f}}'.format(item_width, price_width)
正常,我看着也发晕
为了少晕点,用实际数字替换掉那些变量:
width = 60
price_width = 20
item_width = 60 - 20 = 40
header_fmt = '{{:{}}}{{:>{}}}'.format(item_width, price_width)
换成'{{:{}}}{{:>{}}}'.format(40, 20),把数字填进占位符的位置:'{{:40}}{{:>20}}'
找到对格式控制的引用语句:
print(header_fmt.format('Item', 'Price')),替换下:
'{{:40}}{{:>20}}'.foramt('Item', 'Price'),占位符内的数字40制定'Item'占位40个字符,字符串缺省靠左输出,空格补缺;'Price'占位20个字符,缺省靠左输出,符号>指定靠右输出。
两个参数填进两个占位符,在作为整个字符串填进最外层占位符,这样header_fmt的输出就为:
'Item Price'
fmt = '{{:{}}}{{:>{}.2f}}'.format(item_width, price_width)
----> '{{:{}}}{{:>{}.2f}}'.format(40, 20)
----> '{{:40}}{{:>20.2f}}'
print(fmt.format('Apples', 0.4))
----> '{{:40}}{{:>20.2f}}'.format('Apples', 0.4))
'Apples'占位40,靠左;
0.4占位20,浮点数(f),两位小数点(.2),靠右(>)
两个参数填进两个占位符,在作为整个字符串填进最外层占位符,这样fmt的输出就为:
'Apples 0.40'
这个程序的最后输出是:
Please enter width: 60
============================================================
Item Price
------------------------------------------------------------
Pears 0.50
Cantaloupes 1.92
Dried Apricots(16 oz.) 8.00
Prunes(4 1bs. 12.00
============================================================