小甲魚《零基礎入門學習》Python(15)--格式化
阿新 • • 發佈:2018-12-14
前言
上節課我們介紹了字串N多種奇葩方法的用法,但是我們唯獨漏掉了format方法,那為何不把format方法和上節課的內容一起講呢?
因為小甲魚覺得format方法,跟今天的主題是如出一轍的,都是討論字串的格式問題。哎呀,那有些朋友聽到格式化就來勁了,那格式化跟我們的硬碟格式化有關係嗎? 沒有關係的。
那什麼是字串的格式化呢?又為什麼需要對字串進行格式化呢? 我們舉個小例子,給大家講一下:
某天小甲魚召開了魚c國際安全大會,到會的朋友有來自世界各方各地的精英人士, 有這個小烏龜啦,有喵星人啦,有汪星人啦,當然還有這個米奇和唐老鴨,哇塞,那氣勢 簡直就像小甲魚開了個動物園一樣,但是呢,那問題來了,那真是雞同鴨講,驢脣不對馬嘴, 不知所云,但是呢,小甲魚還是聰明,想辦法把問題解決了,什麼辦法呢? 小甲魚在各界找一個翻譯,翻譯成普通話之後,再開會,最後呢,大會完美舉行成功。
舉這個例子,是想跟大家說,格式化字串,就是按照統一的規格去輸出,成為一個字串。如果規格不統一,就可能會造成誤會。
例如說,十六進位制的10
,十進位制的10
,二進位制的10
完全就是不同的概念。
十六進位制的10 對於 10進位制是等於16
十進位制的10 對於 10進位制等於10
二進位制的10 對於 10進位制等於2
所以他們是完全不同概念。字串格式化就是幫助我們糾正規範這類可能出現的問題。
知識點
format 方法,有兩個引數,分別是 位置引數
,關鍵字引數
位置引數:
>>> "{0} love {1}.{2}".format("I","FishC","com") 'I love FishC.com' #欄位0,欄位1,欄位2,分別用'{}'括起來,表示'欄位', #它通過位置引數"I","FishC","com"傳遞給我們的format方法, #然後再用format方法對字串進行格式化處理,得到了我們最終的目標:'I love FishC.com'
關鍵字引數
>>> "{a} love {b}.{c}".format("I","FishC","com") Traceback (most recent call last): File "<pyshell#2>", line 1, in <module> "{a} love {b}.{c}".format("I","FishC","com") KeyError: 'a' #必須新增關鍵字賦值 >>> "{a} love {b}.{c}".format(a="I",b="FishC",c="com") 'I love FishC.com'
位置引數
與關鍵字引數
一起使用
>>> "{a} love {b}.{c}".format(a="I",b="FishC",c="com")
'I love FishC.com'
>>> "{0} love {b}.{c}".format("I",b="FishC",c="com")
'I love FishC.com'
#【注意】同時使用時,
#必須位置引數在前,關鍵字引數在後,否則會報錯:
>>> "{a} love {b}.{0}".format(a="I",b="FishC","com")
SyntaxError: positional argument follows keyword argument
如果想把{}
打印出來,有沒有辦法呢?
>>> "{{0}}".format("不列印")
'{0}'
>>>
看如下例子:
>>> '{0:.1f}{1}'.format(27.658,'GB')
'27.7GB'
#為什麼不是列印27.658GB,而是27.7GB呢?
#位置引數跟以前的不一樣,化了點小妝,
#後邊多了一個冒號,在替換域中,
#冒號:表示格式化符號的開始,後邊接的就是格式化符號。
符串格式化符號含義
符號 |
說明 |
%c |
格式化字元及其 ASCII 碼
|
%s |
格式化字串
|
%d |
格式化整數
|
%o |
格式化無符號八進位制數
|
%x |
格式化無符號十六進位制數
|
%X |
格式化無符號十六進位制數(大寫)
|
%f |
格式化浮點數字,可指定小數點後的精度
|
%e |
用科學計數法格式化浮點數
|
%E |
作用同 %e,用科學計數法格式化浮點數
|
%g |
根據值的大小決定使用 %f 或 %e
|
%G |
作用同 %g,根據值的大小決定使用 %f 或者 %E
|
格式化操作符輔助命令
符號 |
說明 |
m.n |
m 是顯示的最小總寬度,n 是小數點後的位數
|
- |
用於左對齊
|
+ |
在正數前面顯示加號(+)
|
# |
在八進位制數前面顯示 '0o',在十六進位制數前面顯示 '0x' 或 '0X'
|
0 |
顯示的數字前面填充 '0' 取代空格
|
Python 的轉義字元及其含義
符號 |
說明 |
\' |
單引號
|
\" |
雙引號
|
\a |
發出系統響鈴聲
|
\b |
退格符
|
\n |
換行符
|
\t |
橫向製表符(TAB)
|
\v |
縱向製表符
|
\r |
回車符
|
\f |
換頁符
|
\o |
八進位制數代表的字元
|
\x |
十六進位制數代表的字元
|
\0 |
表示一個空字元
|
\\ |
反斜槓
|
課後習題
測試題
請問以下程式碼會列印什麼內容?
>>> "{{1}}".format("不列印","列印")
執行結果:
'{1}'
如果想要顯示Pi=3.14,format前邊的字串應該怎麼填寫?
''.format('Pi = ', 3.1415)
>>> '{0}{1:.2f}'.format('pi= ',3.1415)
'pi= 3.14'
動動手
編寫一個進位制轉換程式,程式演示如下(提示,十進位制轉換二進位制可以用bin()這個BIF)
while True:
temp=input("請輸入一個整數:")
if temp=='Q':
break
else:
if temp.isdigit():
int_num=int(temp)
print('十進位制->十六進位制:',int_num,'->','%#x' % int_num)
print('十進位制->八進位制: ',int_num,'->','%#o' % int_num)
print('十進位制->二進位制: ',int_num,'->','->',bin(int_num))
else:
print('抱歉',end="")