1. 程式人生 > 其它 >大爽Python入門教程 5-2 格式化輸出

大爽Python入門教程 5-2 格式化輸出

大爽Python入門公開課教案 點選檢視教程總目錄

雖然之前我寫過一篇文章:
python 格式化輸出詳解(佔位符:%、format、f表示式)——上篇 理論篇

其中詳細討論過輸入輸出,但是講的過於細緻,對於新手來講過於繁瑣,很多地方用不到。
這裡做了一定的簡化,只針對具體的一部分功能來講實現方法。

以下均使用佔位符實現,
三種佔位符%sformatf string都會展示。
大家掌握自己最熟悉的一種即可,不然容易混亂。

1 按精度輸出小數float

比如3.1415

>>> pi = 3.1415

保留三位小數輸出

>>> "%.3f" % pi
'3.142'
>>> "{:.3f}".format(pi)
'3.142'
>>> f"{pi:.3f}"
'3.142'

保留2位小數輸出, 如下

>>> "%.2f" % pi
'3.14'
>>> "{:.2f}".format(pi)
'3.14'
>>> f"{pi:.2f}"
'3.14'

說明

  • f是輸出浮點數的格式
  • .2.3 表示精度,點.後面接精度
  • formatf表示式,此時都要在之前有個冒號:

2 對齊

場景

比如有個學生的成績資訊如下

scores = {
    "math": 80,
    "history": 70,
    "chemistry": 75
}

希望按以下格式輸出

math      : 80
history   : 70
chemistry : 75

%s實現

程式碼如下

for course in scores:
    score = scores[course]
    print("%-10s: %s" %(course, score))

%-10s

  • 10 是設定寬度為10
  • %s 預設右對齊
  • -10-是設定左對齊

format實現

程式碼如下

for course in scores:
    score = scores[course]
    print("{:10s}: {}".format(course, score))

{:10s}

  • s 是設定輸出型別為字串
  • 10 是設定寬度為10
  • format 絕大多數物件預設左對齊(數字物件預設右對齊)。

設定對其方式為

  • <: 強制左對齊
  • >: 強制右對齊
  • ^: 強制居中對齊

使用示例

>>> name = "jack"
>>> "{:<10s}".format(name)
'jack      '
>>> "{:^10s}".format(name)
'   jack   '
>>> "{:>10s}".format(name)
'      jack'

f string實現

程式碼如下

for course in scores:
    score = scores[course]
    print(f"{course:10s}: {score}")

f表示式的裡面的設定語法和format差不多。

>>> name = "jack"
>>> f"{name:<10s}"
'jack      '
>>> f"{name:^10s}"
'   jack   '
>>> f"{name:>10s}"
'      jack'

3 填充

對齊時,一般會自動使用空格作為填充,
如果不想用空格,用其他字元填充,語法為:
:和對齊符號(此時必須要有對齊符號)之間指定。
注:%s好像不支援靈活的填充

示例如下

>>> name = "jack"
>>> "{:-<10s}".format(name)  # 指定用-來填充
'jack------'
>>> "{:-^10s}".format(name)
'---jack---'
>>> "{:->10s}".format(name)
'------jack'
>>> f"{name:-<10s}"
'jack------'
>>> f"{name:=<10s}"  # 指定用=來填充
'jack======'

4 綜合

混合使用注意次序:

  • 填充設定在:和對齊符號之間。
  • 精度設定在對其數字之後。

示例如下

>>> pi = 3.1415
>>> "{:0>10.2f}".format(pi)
'0000003.14'
>>> f"{pi:0>10.2f}"
'0000003.14'

:0>10.2f

  • 0是填充符
  • >是右對齊(靠右)
  • .2f 是精度設定為保留兩位小數