該程式的目的是根據指定的寬度列印格式正確的價目表。
這是代碼:
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)
以下是問題:
花括號
'{{:{}}}{{:>{}}}'.format(item_width, price_width)是什么意思?item_width 和 price_width 最后插入到哪里了?
在
print(header_fmt.format('Item', 'Price'))中,當我像上一個問題一樣已經插入了 item_width 和 price_width 時, Item 和 Price 插入哪里?
Ps:當我試圖找到存盤插入專案(如 item_width、price_width、Item 和 Price)的確切位置時,我洗掉了一對花括號,它顯示了我TypeError。
我只是想知道每對花括號的含義?
另外,我想知道在item_widthand之后再次格式化 header_fmt 時發生了什么price_width?
uj5u.com熱心網友回復:
花括號
'{{:{}}}{{:>{}}}'.format(item_width, price_width)是什么意思?
這是 Python 檔案必須說的:
格式字串包含用花括號包圍的“替換欄位”
{}。大括號中未包含的任何內容都被視為文字文本,將原封不動地復制到輸出中。如果您需要在文字文本中包含大括號字符,可以通過加倍來轉義:{{和}}。
換句話說,每個{}都是一個“替換欄位”,它將按format()順序替換為 , 的引數之一。{{和}}是單大括號(分別是{和);}重復是必要的,這樣他們就不會被誤解。
請注意,格式字串的解釋是從左到右的,與格式字串處理的其余部分一樣。這會影響在}}}您顯示的格式字串中解釋的方式。因為{在那一點上有一個開放,第一個}被視為結束替換欄位。其他兩個}}成為單身}。所以格式化字串的解釋如下:
{{ Literal {
: Literal :
{} Replacement field (item_width)
}} Literal }
{{ Literal {
:> Literal :>
{} Replacement field (price_width)
}} Literal }
目的是構建一個格式字串供以后使用。例如,如果item_width分別為 12 和price_width7,結果將是:
{:12}{:>7}
這是一個格式字串,只包含兩個替換欄位,沒有其他文本。當該格式字串隨后與 一起使用時print(header_fmt.format('Item', 'Price')),它會產生:
Item Price
在這里,字串Item被放置在一個 12 個字符的欄位的左側(所以它后面跟著 8 個空格),并且Price被放置在一個 7 個字符的欄位的右側(因為>)(所以它前面有 2 個空格).
格式字串的檔案可以在 Python 參考手冊中找到(上面引述的來源)。但是,您可能想先閱讀Python 教程中有關格式化的部分,這可能更容易理解,并且包含示例。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/535274.html
下一篇:在json物件中查找所有Id
