2017-09-25 67 views
-1

我們的團隊在任何情況下都喜歡使用格式而不是str.format,並且在嘗試學習如何在Python中使用format()時遇到了一些我不知道爲什麼會發生的情況,這是問題:瞭解Python中的格式化功能

3.30以下代碼將顯示什麼? (注意?代表一個空格)

print(format("Welcome", "10s"), end = '#') 
    print(format(111, "4d"), end = '#') 
    print(format(924.656, "3.2f")) 
  1. ???Welcome#?111#924.66
  2. Welcome#111#924.66
  3. Welcome#111#.66
  4. Welcome???#?111#924.66

,然後回答是4莫名其妙。我覺得默認的對齊是在左側,每種格式,但

print(format("Welcome", "10s"), end = '#') 

是左對齊和

print(format(111, "4d"), end = '#') 

即someow是右對齊?

所以這是問題所在。

+0

默認情況下,數字是右對齊的,因此數字排隊。其他一切都默認爲左對齊。這在文檔中很明顯。請閱讀它們:https://docs.python.org/3/library/string.html#formatspec – jonrsharpe

回答

0

format文檔:

format(value, format_spec)調用被翻譯成 type(value).__format__(value, format_spec)

format內部調用每個類型的__format__函數。恰巧,字符串的理由是默認保留的,而整數是正確的。你會看到str.format顯示了同樣的事情,因爲它的引擎蓋下稱__format__

In [1]: '{:10s}|{:4d}'.format('Welcome', 111) 
Out[1]: 'Welcome | 111' 
0

當使用格式 爲你添加空格串是從右側和數字從左邊後,很有意義因爲右側的數字間距可能會與分數混淆。

  • 10S意味着,如果字符串小於10個數字會添加空格
  • 4D意味着整數值將是4個位數

檢查下面的代碼,看看如何縮進作品: print('{:10s}{:4d}'.format('Apple',10)) print('{:10s}{:4d}'.format('Orange',8))