1、什麼是格式化輸出
資料按照某種特殊的要求輸出,假如字串中有各種格式的資料,要拼接輸出:
- 如果輸入一個整數,希望整數按照十六進位制,八進位制輸出。
- 如果輸入一個小數,希望小數保留後面2位數然後輸出。
- 以科學計數法的方式來輸出小數。
- 字串的輸出希望在十個格子內輸出,或者左對齊,居中等等
即所謂的格式化輸出就是需要按照一定的格式輸出內容。
2、Python格式化輸出的五種方式
Python的字串變數有五種輸出方式,下面我們分別來介紹一下。
方式一:字串之間用+號拼接
# 字串之間也可以進行加法運算
# 如果將兩個字串進行相加,則會自動將兩個字串拼接為一個字串
a = 'abc' + 'haha' + '哈哈'
print("a = "+ a) # a = abchaha哈哈
# 字串只能和字串之間用+號進行拼接,
# 不能和其他的型別進行加法運算,如數值型變數。
# 如果做了會出現異常 TypeError: must be str, not int
a = 123
print("a = "+a) # 報錯
# 這種寫法在Python中不常見
方式二:print()
函式可同時輸出多個字串
# print()函式可同時輸出多個字串
print("hello","ptyhon") # hello ptyhon
# 這種寫法無論a是什麼型別變數,
# 都能進行拼接字串輸出了。
a = 123
print('a =',a) # a = 123
b = 18
print("我今年",b,"歲") # 我今年 18 歲
# 注意:這種輸出方式拼接的字串,拼接的位置會有空格。
# 這種方式在實際開發中也不常用。
方式三:佔位符方式
表示在建立字串時,可以在字串中指定佔位符。
1)常用格式化符號
格式符號 | 轉換 |
---|---|
%s (常用) |
字串 |
%d (常用) |
有符號的十進位制整數 |
%f (常用) |
浮點數 |
%c |
字元 |
%u |
無符號十進位制整數 |
%o |
八進位制整數 |
%x |
十六進位制整數(小寫ox ) |
%X |
十六進位制整數(大寫OX ) |
%e |
科學計數法(小寫e ) |
%E |
科學計數法(大寫E ) |
%g |
%f 和%e 的簡寫 |
%G |
%f 和%E 的簡寫 |
我們常用的格式化符號是前三個,剩下的不用去死記硬背,以後用到的時候可以來筆記中查詢即可。
2)示例:
"""
佔位符格式化輸出分為兩個步驟
1. 準備資料(定義輸出變數)
2. 格式化符號輸出資料(執行輸出)
"""
# 1. 今年我的年齡是x歲 -- 整數 %d
# 結果:今年我的年齡是18歲
age = 18
print('今年我的年齡是%d歲' % age)
#如果佔位符沒有新增內容,則原樣輸出佔位符。
#結果:今年我的年齡是%d歲
print('今年我的年齡是%d歲')
# 2. 我的名字是x -- 字串 %s
# 結果:我的名字是TOM
name = 'TOM'
print('我的名字是%s' % name)
# 3. 我的體重是x公斤 -- 浮點數 %f
# 結果:我的體重是75.500000公斤
weight = 75.5
print('我的體重是%f公斤' % weight)
# 說明%f預設顯示小數點後6位
# %.xf,表示小數點後顯示的小數位數。
# 結果:我的體重是75.50公斤
print('我的體重是%.2f公斤' % weight)
# 4. 我的學號是x -- %d
# 結果:我的學號是1
stu_id = 1
print('我的學號是%d' % stu_id)
# %03d,表示輸出的整數顯示位數,不足以0補全,超出當前位數則原樣輸出
stu_id2 = 1000
print('我的學號是%03d' % stu_id) # 001
print('我的學號是%03d' % stu_id2) # 1000
# 5. 我的名字是x,今年x歲了
# 把前邊的佔位符,按順序在()小括號內進行賦值,用逗號分隔。
# 結果:我的名字是TOM,今年18歲了
print('我的名字是%s,今年%d歲了' % (name, age))
# 我的名字是x,明年x歲了
# 結果:我的名字是TOM,今年19歲了
print('我的名字是%s,明年%d歲了' % (name, age + 1))
# 說明在給佔位符賦值的時候是可以進行運算的。
3)擴充示例:
# 接上面練習
# 6. 我的名字是x,今年x歲了,體重x公斤
# 結果:我的名字是TOM,今年18歲了,體重75.50公斤
name = 'TOM'
age = 18
weight = 75.5
print('我的名字是%s,今年%d歲了,體重%.2f公斤,學號是%06d' % (name, age, weight))
# 擴充
# 因為最終結果是以字串輸出完整句子
# 那字串中所有的資料都可以用字串進行佔位輸出
# 我的名字是x,今年x歲了,體重x公斤
# 結果:我的名字是TOM,今年18歲了,體重75.5公斤
print('我的名字是%s,今年%s歲了,體重%s公斤' % (name, age, weight))
# 總結:如果你不太確定應該用什麼,%s永遠起作用,它會把任何資料型別轉換為字串。
# 7、%d佔位符,如果傳入的是小數,只保留整數部分
print('hello %d' % 123.95) # hello 123
# 8、%3.5s字串的長度限制在3-5之間,多了擷取,少了補空格
print('hello %3.5s' % 'abcdefg') # hello abcde
print('hello%3.5s' % 'abc') # helloabc
print('hello%3.5s' % 'ab') # hello ab
# 9、左對齊、右對齊
# 右對齊,取20位,不夠則空格補位
print('%20s' % 'hello python')
# 左對齊,取20位,不夠則空格補位
print('%-20s' % 'hello python')
# 上面兩句程式碼執行結果如下
hello python
hello python
方式四:f
格式化方式(推薦)
格式化字串除了%s
,還可以寫為f'{表示式}'
。
f
格式化字串是Python3.6中新增的格式化方法,該方法更簡單易讀,效能更高效。
# 在f格式化字串中可以直接嵌入變數,{ }內就是變數的名稱,也可以進行運算賦值。
age = 18
name = 'TOM'
# 我的名字是TOM,明年19歲了
# 結果:我的名字是TOM,明年19歲了
print('我的名字是%s,明年%d歲了' % (name, age + 1))
# 我的名字是TOM,明年19歲了
# 結果:我的名字是TOM,明年19歲了
print(f'我的名字是{name},明年{age + 1}歲了')
# 注意:
# 在格式化字串中,所引用的變數一定是被定義過的。
# 如果引用的變數沒有被定義,就會報錯NameError: name 'xx' is not defined
print(f'我的名字是{name},明年{age + 1}歲了,體重{weight}公斤')
# NameError: name 'weight' is not defined
方式五:format()
函式方式
通過字串的format()
方法進行格式化輸出。
# 1、順序填坑:{} 佔位符
# 輸出結果:姓名是Tom,年齡是20
print('姓名是{},年齡是{}'.format('Tom',20))
# 2、下標填坑(自定義順序匹配):
# format方法裡引數的腳標從0開始。
# 輸出結果:姓名是:Tom,年齡是:20
print('姓名是:{1},年齡是:{0}'.format(20,'Tom'))
# 3、變數填坑(鍵值匹配):
# 佔位符中的變數名和引數中定義的變數名一一對應。
# 輸出結果:姓名是:Tom,年齡是:20
print('姓名是:{name},年齡是:{age}'.format(name='Tom',age=20))
1)format()
函式對齊方式說明
數字 | 格式 | 輸出 | 描述 |
---|---|---|---|
5 | {:0>2} |
05 | 數字補零 (靠右填充左邊, 寬度為2) |
5 | {:x<4} |
5xxx | 補x (靠左,填充右邊, 寬度為4) |
10 | {:x^4} |
x10x | 補x (居中填充, 寬度為4) |
13 | {:10} |
13 | 右對齊 ( 寬度為10),預設對齊方式 |
13 | {:<10} |
13 | 左對齊 (寬度為10) |
13 | {:^10} |
13 | 中間對齊 (寬度為10) |
說明:
- 對齊方式直白語法
(1):(2)補全的內容(符號)(3)補全方向 (4)字串總寬度
- (1)冒號:固定寫法
- (2)補全的內容(符號):自己定義,就是長度不夠的時候,可以補0或者
*
等。- (3)補全方向:
<
填充右邊,>
填充左邊,也就是口向哪邊,就向哪個方向填充,^
表示居中。- (3)字串總寬度:就是佔位符變數的字元長度,字元長度不夠總寬度,按方向補全(2)定義的符號。
- 冒號前可定義上邊所說的下標
{1:x<4}
,也可以是變數名{name:x^4}
.
2)示例:
# 輸出結果
# 姓名是:Tom********
# 年齡是:*********20
print('姓名是:{0:*<11}\n年齡是:{1:*>11}'.format('Tom',20))
# 輸出結果
# 姓名是:****Tom****
# 年齡是:****20*****
print('姓名是:{0:*^11}\n年齡是:{1:*^11}'.format('Tom',20))
3、print()
函式結束符
如果設定了print()
函式的結束符號,我們可以控制格式化輸出資料的各種展示方式。
print()
是Python的一個內建函式,它有哪些具體的引數呢?
如下圖所示:
簡單說明:
print()
函式的作用:列印相應的內容。print()
函式的返回值為None
。(None
的內容可以看之前的總結)file
引數:原始的sys.stdout指向控制檯。(其他的看錶中描述,更多的自己去擴充套件。)flush
引數:flush
值為True或者False,預設為Flase。表示是否立刻將輸出語句輸入到引數file
指向的物件中(預設是sys.stdout
)。
(1)sep
引數
sep
引數用來間隔多個物件,預設值是一個空格。
# 使用print()函式,同時輸出多個引數,多個引數之間是預設用空格分隔的。
# 輸出結果:
# hello python
print("hello","python")
# 輸出結果:
# hello***python
# www.baidu.com
print("hello","python",sep="***")
print("www","baidu","com",sep=".")
(2)end
引數:結束符
想一想,為什麼兩個print()
函式之間會換行輸出?
在Python中print()
函式, 預設自帶end="\n"
這個換行結束符,所以導致每兩個print()
函式之間直接會換行展示,使用者可以按需求更改結束符。
總結:
end =
什麼就會在輸出的末尾新增什麼,預設值是換行符\n
,我們可以換成其他字串。
# print()函式預設結束符end="\n"
# 輸出結果:
# hello
# python
print("hello",end="\n")
print("python",end="\n")
# end引數可以換任何符號,如製表符或者自定義符號
# 輸出結果:
# hello python***
print("hello",end="\t")
print("python",end="***")
4、補充:Python的輸入函式input()
(1)Python的輸入說明
- 在Python中,程式接收使用者輸入的資料的功能即是輸入。
input()
函式是Python中的一個內建函式。Python3.x
中input()
函式接受一個標準輸入資料,返回為String
型別資料。
提示:如何檢視Python的內建函式。
我們安裝好Python的直譯器就在本地有一份官方文件了。
官方文件位置:[開始] —> [所有程式] —> [ Python 3.7] —> [Python 3.7 Manuals (64-bit)]。
開啟文件:[The Python Standard Library] —> [Built-in Functions] 即可檢視。
如下圖所示:
跳轉介面就能夠看到,如下圖:
(2)輸入的語法
使用input()
函式接收使用者輸入的資訊。
# input()函式中可以設定一個字串作為引數,
# 這個字串將會作為提示文字顯示。
input("input函式給使用者的提示資訊")
(3)輸入的特點
- 當程式執行到
input()
函式的時候,需要等待使用者輸入,輸入完成回車之後才繼續向下執行。 - 在Python中,
input()
函式接收使用者輸入後,一般儲存到變數,方便使用。 - 在Python中,
input()
函式會把接收到的任意使用者輸入的資料都當做字串處理,進行返回。
(4)示例
# 用password變數接收鍵盤輸入的值
password = input('請輸入您的密碼:')
# 輸出接收到的資料到控制檯檢視
print(f'您輸入的密碼是{password}')
# 檢視接到的收資料的資料型別
print(type(password))
控制檯輸出結果如下圖: