格式說明符/占位符:%
目的:格式與內容分離,制作復雜的公共字符串模板,讓某些位置變成動態可輸入的。
用法:' %[datatype] ' % (data, data, ...)
%前設置輸出格式,用引號括起來;%后設置輸出內容,格式部分有幾個%,內容部分就有幾個數據,多個數據時用小括號括起來,並用逗號分隔。
需要輸出%時,可以用%%轉義,就取消了占位符的作用
print('3%%%s' % 'gg')
結果:
3%gg
整型
%o 八進制 ,%d (或%i)十進制,%x 十六進制
print('%d' % 30) print('%o' % 30) print('%x' % 30)
執行結果:
30
36
1e
浮點數
%f 普通輸出,默認小數點后6位,
%e 科學計數法輸出 ,默認同上
%g 默認6位有效數字,默認普通輸出,當整數部分超過有效數字位數時,改為科學計數法輸出
%.3f 保留3位有效數字
print('%f' % 1.22221233) print('%e' % 1.11287631812) print('%.8g' % 682632894.85982379)
結果:
1.222212
1.112876e+00
6.8263289e+08
字符串輸出
%s
%20s 右對齊,20位寬度,超過沒事兒,不夠補空格
%-20s 左對齊,同上
%.5s 截取5位
%10.5 右對齊,10位寬度,截取5位
在%與s中間,可選項
[-]對齊方式
[num]占位寬度
[.num]截取位數
print('%s' % 'ok') print('%20s' % 'interpreter') print('%-20s' % 'interpreter') print('%.5s' % 'interpreter') print('%20.5s' % 'interpreter') msg = " %s %s %s " %('hello','world','!') name = input('請輸入姓名') age = input('請輸入年齡') job = input('請輸入職業') hobby = input('請輸入興趣') msg = '''------------ info of %s ------------ Name : %s Age : %d Job : %s Hobby : %s ------------ end ------------''' % (name,name,int(age),job,hobby) print(msg)
結果:
ok
_________interpreter
interpreter_________
inter
inter_______________
轉義字符
| 轉義字符 | 描述 |
|---|---|
| \(在行尾時) | 續行符 |
| \\ | 反斜杠符號 |
| \' | 單引號 |
| \" | 雙引號 |
| \a | 響鈴 |
| \b | 退格(Backspace) |
| \e | 轉義 |
| \000 | 空 |
| \n | 換行 |
| \v | 縱向制表符,將光標移動到下一行的開頭 |
| \t | 橫向制表符,將光標向右移動一個制表符位 |
| \r | 回車 |
| \f | 換頁 |
format()
格式化輸出,還有另一種方法,那就是format()函數。
基本語法是通過 {} 和 : 來代替以前的 % 。與%同理,可以用{{}}來轉義輸出{}。
輸出數字
: 后面寫格式說明,形如{:.3f},表示小數點后3位有效數字的浮點數;{:.2%}表示百分數小數點后兩位。
最前面是要填充的字符,只能是單個字符,默認是空格。
^, <, > 分別是居中、左對齊、右對齊,后面帶寬度
+ 表示在正數前顯示 +,負數前顯示 -
.表示有效數字位數
輸出字符串
用法一:使用位置參數
print('{} {}'.format('hello', 'world')) print('{0}{1}{2}{3}{4}{3}{2}{1}{0}'.format('上', '海', '自', '來', '水'))
可以使用list作為參數,列表對象前要加*,如下(可以和用法三中索引列表進行比較)
list1 = ['A', 'B', 'C'] print('{} {} {}'.format(*list1)) # 可以用索引號隨意選擇輸出的元素,結果:A B A list1 = ['A', 'B', 'C'] print('{0} {1} {0}'.format(*list1)) # 當傳入兩個列表參數時,索引號會依次排列下去,結果:A B A c a list1 = ['A', 'B', 'C'] list2 = ['a', 'b', 'c'] print('{0} {1} {0} {5} {3}'.format(*list1, *list2))
用法二:使用關鍵字參數,在{}內寫變量名,用format()參數傳入相應變量
print('''地區:{area} 人口數:{people}'''.format(area='上海', people='24000000')) # 必須在format()參數內對關鍵字進行賦值。 print('''地區:{area} 人口數:{people}'''.format(area='上海', people='24000000')) # 必須在format()參數內對關鍵字進行賦值。 # 但是,如果使用另一種方式(3.6以上版本),可以讓關鍵字在外面賦值 area = '阿拉斯加' people = '100' print(f'''地區:{area} 人口數:{people}''')
可以使用dict作為參數,字典對象前要加**,如下
dict1 = {'area': '北京', 'people': '22000000'}
print('''地區:{area}
人口數:{people}'''.format(**dict1))
用法三:使用索引
# A 90 B 80 C 70 list1 = ['A', 'B', 'C'] list2 = ['90', '80', '70'] print('{0[0]} {1[0]} {0[1]} {1[1]} {0[2]} {1[2]}'.format(list1, list2)) # 參數只要是能索引的對象就行
