如今有個須要咱們錄入咱們身邊好友的信息,格式以下:python
------------ info of Alex Li ---------- Name : Alex Li Age : 22 job : Teacher Hobbie: girl ------------- end ----------------
咱們如今能想到的辦法就是用一下方法:編程
name = input('請輸入姓名:') age = input('請輸入年齡:') job = input('請輸入職業:') hobby = input('請輸入愛好:') a = '------------ info of Alex Li ----------' b = 'Name:' c = 'Age:' d = 'Job:' e = 'Hobby:' f = '------------- end ----------------' print(a+ '\n'+ b+ name+ '\n'+ c+ age+ '\n'+ d+ job+ '\n'+ e+ hobby+ '\n'+ f) # 運行結果 ------------ info of Alex Li ---------- Name:meet Age:18 Job:it Hobby:3 ------------- end ----------------
這樣寫徹底沒有問題,可是會不會比較繁瑣呢,有些大佬確定會想這不都實現了嗎,還逼叨逼什麼啊,那是沒有體驗過格式化輸出有多霸道,咱們如今來體驗下霸道的姿式ide
name = input('請輸入姓名:') age = input('請輸入年齡:') job = input('請輸入職業:') hobby = input('請輸入愛好:') msg = ''' ------------ info of Alex Li ---------- Name : %s Age : %s job : %s Hobbie: %s ------------- end ---------------- ''' print(msg%(name,age,job,hobby))
咱們但從代碼的數量來看,這樣就比那樣的少,看到這裏有細心的老鐵們確定在想%s這是啥玩意?函數
% 是一個佔位, 回想下咱們小時候給朋友佔位子的場景,是的這個就是佔位.那s又是什麼呢? s代碼的字符串類型;學習
具體詳細參數以下,你們能夠參考一下優化
%cui |
轉換成字符(ASCII 碼值,或者長度爲一的字符串)編碼 |
%rspa |
優先用repr()函數進行字符串轉換設計 |
%s |
優先用str()函數進行字符串轉換 |
%d / %i |
轉成有符號十進制數 |
%u |
轉成無符號十進制數 |
%o |
轉成無符號八進制數 |
%x / %X |
轉成無符號十六進制數(x / X 表明轉換後的十六進制字符的大小寫) |
%e / %E |
轉成科學計數法(e / E控制輸出e / E) |
%f / %F |
轉成浮點數(小數部分天然截斷) |
%g / %G |
%e和%f / %E和%F 的簡寫 |
%% |
輸出% (格式化字符串裏面包括百分號,那麼必須使用%%) |
%s格式化示例:
name = input('>>>') s = '1234%s'%name print(s) 結果: >>>88 1234'88'
%r格式化示例:
name = input('>>>') s = '1234%r'%name print(s) 結果: >>>88 1234'88' # 注意看咱們輸入的88 用%r格式化後會有引號,這是由於調用了咱們內置的repr方法 repr這個方法是讓編程人員快速分辨數據類型的方法
%d|%i格式化示例:
name = input('>>>') s1 = '1234%d'%int(name) s2 = '1234%i'%int(name) print(s1) print(s2) 結果: >>>89 123489 123489 # %d和%i這種格式化只能用數字來填補佔位
%%格式化示例:
num = input('>>>') s= '目前學習進度:%s%%'%num print(s) 結果: >>>80 目前學習進度:80% # 若是咱們字符串中想要顯示單獨的%就須要用來個%%來轉義,否則程序會認爲那是一個佔位
%c格式化示例:
name = input('>>>') s = '1234%c'%name print(s) 結果: >>>5 12345 # 注意點是 %c這個只支持一位數的格式化
%u格式化示例:
name = input('>>>') s1 = '1234%u'%int(name) print(s1) 結果: >>>88 123488
%o格式化示例:
name = input('>>>') s1 = '1234%o'%int(name) print(s1) 結果: >>>444 1234674 # 注意看我輸入的444可是卻不是444由於這樣給轉換成了8進制的數
%x|%X格式化示例:
name = input('>>>') s1 = '1234%x'%int(name) s2 = '1234%X'%int(name) print(s1) print(s2) 結果: >>>78 12344e 12344E
%e|%E格式化示例:
name = input('>>>') s1 = '1234%e'%int(name) s2 = '1234%E'%int(name) print(s1) print(s2) 結果: >>>7777 12347.777000e+03 12347.777000E+03
%f|%F格式化示例:
name = input('>>>') s1 = '1234%F'%int(name) s2 = '1234%f'%int(name) print(s1) print(s2) 結果: >>>45 123445.000000 123445.000000
while 循環
在生活中,咱們遇到過循環的事情吧?好比循環聽歌。在程序中,也是存才的,這就是流程控制語句 while
一、基本循環
1
2
3
4
5
6
|
while
條件:
# 循環體
# 若是條件爲真,那麼循環則執行
# 若是條件爲假,那麼循環不執行
|
練習
使用while循環求出1-100全部數的和
輸出 1- 100內的全部奇數
輸出 1- 100內全部的偶數
二、break
break 用於退出當層循環
1
2
3
4
5
6
7
8
9
|
#!/usr/bin/env python
#-*- coding:utf-8 -*-
num
=
1
while
num <
6
:
print
(num)
num
+
=
1
break
print
(
"end"
)
|
練習
用戶登陸(三次機會重試)
三、continue
continue 用於退出當前循環,繼續下一次循環
#!/usr/bin/env python #-*- coding:utf-8 -*- num = 1 while num <6: print(num) num+=1 continue print("end")
練習
使用while循環打印 1 2 3 4 5 6 8 9 10
四、while else
while True: if 3 > 2: print('你好') break else: print('很差') while True: if 3 > 2: print('你好') print('很差') # 你們看到的這個是否是感受效果是同樣的啊,其實否則 # 當上邊的代碼執行到break的時候else縮進後的內容不會執行
練習
1.首先讓用戶輸入序號選擇格式以下: 0.退出 1.開始登陸 若是用戶選擇序號0 就提示用戶退出成功 若是用戶選擇序號1就讓用戶輸入用戶名密碼而後進行判斷,正確就終止循環,錯誤從新輸入
2.用戶可持續輸入(用while循環),用戶使用的狀況: 輸入A,則顯示走大路回家,而後在讓用戶進一步選擇: 是選擇公交車,仍是步行? 選擇公交車,顯示10分鐘到家,並退出整個程序。 選擇步行,顯示20分鐘到家,並退出整個程序。 輸入B,則顯示走小路回家,並退出整個程序。 輸入C,則顯示繞道回家,而後在讓用戶進一步選擇: 是選擇遊戲廳玩會,仍是網吧? 選擇遊戲廳,則顯示 ‘一個半小時到家,爸爸在家,拿棍等你。’並讓其從新輸入A,B,C選項。 選擇網吧,則顯示‘兩個小時到家,媽媽已作好了戰鬥準備。’並讓其從新輸入A,B,C選項。
計算機能夠進行的運算有不少種,可不僅加減乘除這麼簡單,運算按種類可分爲算數運算、比較運算、邏輯運算、賦值運算、成員運算、身份運算、位運算,今天咱們暫只學習算數運算、比較運算、邏輯運算、賦值運算
算數運算
如下假設變量:a=10,b=20
比較運算
如下假設變量:a=10,b=20
賦值運算
如下假設變量:a=10,b=20
邏輯運算
針對邏輯運算的進一步研究:
1,在沒有()的狀況下not 優先級高於 and,and優先級高於or,即優先級關係爲( )>not>and>or,同一優先級從左往右計算。
例題:
判斷下列邏輯語句的True,False。
3>4 or 4<3 and 1==1 1 < 2 and 3 < 4 or 1>2 2 > 1 and 3 < 4 or 4 > 5 and 2 < 1
not 2 > 1 and 3 < 4 or 4 > 5 and 2 > 1 and 9 > 8 or 7 < 6
2 , x or y , x爲真,值就是x,x爲假,值是y;
x and y, x爲真,值是y,x爲假,值是x。
例題:求出下列邏輯語句的值。
8 or 4 0 and 3 0 or 4 and 3 or 7 or 9 and 6
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
運行結果:
8
0
3
0
or
4
and
3
or
7
or
9
and
6
分解:
由於
and
的級別比
or
的級別高,因此先執行
and
就是
0
or
3
or
7
or
6
而後運算
or
3
or
7
or
6
3
or
6
由於
or
運算前邊條件成立就不考慮後邊的值了
因此最後的結果就是
3
|
in,not in :
判斷子元素是否在原字符串(字典,列表,集合)中:
例如:
#print('喜歡' in 'dkfljadklf喜歡hfjdkas') #print('a' in 'bcvd') #print('y' not in 'ofkjdslaf')
練習
有個字符串 s = "alex",若是alex在咱們輸入的內容中就提示:你說的對.不然就提示不存在
s = "alex" s_input = input("請輸入內容:") if s in s_input: print("你說的對") else: print("不存在")
python2解釋器在加載 .py 文件中的代碼時,會對內容進行編碼(默認ascill),而python3對內容進行編碼的默認爲utf-8。
ASCII(American Standard Code for Information Interchange,美國標準信息交換代碼)是基於拉丁字母的一套電腦編碼系統,主要用於顯示現代英語和其餘西歐語言,其最多隻能用 8 位來表示(一個字節),即:2**8 = 256,因此,ASCII碼最多隻能表示 256 個符號。
Bin(二進制)
|
Oct(八進制) |
Dec(十進制)
|
Hex(十六進制)
|
縮寫/字符
|
解釋
|
0000 0000
|
0
|
0
|
00
|
NUL(null)
|
空字符
|
0000 0001
|
1
|
1
|
01
|
SOH(start of headline)
|
標題開始
|
0000 0010
|
2
|
2
|
02
|
STX (start of text)
|
正文開始
|
0000 0011
|
3
|
3
|
03
|
ETX (end of text)
|
正文結束
|
0000 0100
|
4
|
4
|
04
|
EOT (end of transmission)
|
傳輸結束
|
0000 0101
|
5
|
5
|
05
|
ENQ (enquiry)
|
請求
|
0000 0110
|
6
|
6
|
06
|
ACK (acknowledge)
|
收到通知
|
0000 0111
|
7
|
7
|
07
|
BEL (bell)
|
響鈴
|
0000 1000
|
10
|
8
|
08
|
BS (backspace)
|
退格
|
0000 1001
|
11
|
9
|
09
|
HT (horizontal tab)
|
水平製表符
|
0000 1010
|
12
|
10
|
0A
|
LF (NL line feed, new line)
|
換行鍵
|
0000 1011
|
13
|
11
|
0B
|
VT (vertical tab)
|
垂直製表符
|
0000 1100
|
14
|
12
|
0C
|
FF (NP form feed, new page)
|
換頁鍵
|
0000 1101
|
15
|
13
|
0D
|
CR (carriage return)
|
回車鍵
|
0000 1110
|
16
|
14
|
0E
|
SO (shift out)
|
不用切換
|
0000 1111
|
17
|
15
|
0F
|
SI (shift in)
|
啓用切換
|
0001 0000
|
20
|
16
|
10
|
DLE (data link escape)
|
數據鏈路轉義
|
0001 0001
|
21
|
17
|
11
|
DC1 (device control 1)
|
設備控制1
|
0001 0010
|
22
|
18
|
12
|
DC2 (device control 2)
|
設備控制2
|
0001 0011
|
23
|
19
|
13
|
DC3 (device control 3)
|
設備控制3
|
0001 0100
|
24
|
20
|
14
|
DC4 (device control 4)
|
設備控制4
|
0001 0101
|
25
|
21
|
15
|
NAK (negative acknowledge)
|
拒絕接收
|
0001 0110
|
26
|
22
|
16
|
SYN (synchronous idle)
|
同步空閒
|
0001 0111
|
27
|
23
|
17
|
ETB (end of trans. block)
|
結束傳輸塊
|
0001 1000
|
30
|
24
|
18
|
CAN (cancel)
|
取消
|
0001 1001
|
31
|
25
|
19
|
EM (end of medium)
|
媒介結束
|
0001 1010
|
32
|
26
|
1A
|
SUB (substitute)
|
代替
|
0001 1011
|
33
|
27
|
1B
|
ESC (escape)
|
換碼(溢出)
|
0001 1100
|
34
|
28
|
1C
|
FS (file separator)
|
文件分隔符
|
0001 1101
|
35
|
29
|
1D
|
GS (group separator)
|
分組符
|
0001 1110
|
36
|
30
|
1E
|
RS (record separator)
|
記錄分隔符
|
0001 1111
|
37
|
31
|
1F
|
US (unit separator)
|
單元分隔符
|
0010 0000
|
40
|
32
|
20
|
(space)
|
空格
|
0010 0001
|
41
|
33
|
21
|
!
|
歎號 |
0010 0010
|
42
|
34
|
22
|
"
|
雙引號 |
0010 0011
|
43
|
35
|
23
|
#
|
井號 |
0010 0100
|
44
|
36
|
24
|
$
|
美圓符 |
0010 0101
|
45
|
37
|
25
|
%
|
百分號 |
0010 0110
|
46
|
38
|
26
|
&
|
和號 |
0010 0111
|
47
|
39
|
27
|
'
|
閉單引號 |
0010 1000
|
50
|
40
|
28
|
(
|
開括號
|
0010 1001
|
51
|
41
|
29
|
)
|
閉括號
|
0010 1010
|
52
|
42
|
2A
|
*
|
星號 |
0010 1011
|
53
|
43
|
2B
|
+
|
加號 |
0010 1100
|
54
|
44
|
2C
|
,
|
逗號 |
0010 1101
|
55
|
45
|
2D
|
-
|
減號/破折號 |
0010 1110
|
56
|
46
|
2E
|
.
|
句號 |
00101111
|
57
|
47
|
2F
|
/
|
斜槓 |
00110000
|
60
|
48
|
30
|
0
|
數字0 |
00110001
|
61
|
49
|
31
|
1
|
數字1 |
00110010
|
62
|
50
|
32
|
2
|
數字2 |
00110011
|
63
|
51
|
33
|
3
|
數字3 |
00110100
|
64
|
52
|
34
|
4
|
數字4 |
00110101
|
65
|
53
|
35
|
5
|
數字5 |
00110110
|
66
|
54
|
36
|
6
|
數字6 |
00110111
|
67
|
55
|
37
|
7
|
數字7 |
00111000
|
70
|
56
|
38
|
8
|
數字8 |
00111001
|
71
|
57
|
39
|
9
|
數字9 |
00111010
|
72
|
58
|
3A
|
:
|
冒號 |
00111011
|
73
|
59
|
3B
|
;
|
分號 |
00111100
|
74
|
60
|
3C
|
<
|
小於 |
00111101
|
75
|
61
|
3D
|
=
|
等號 |
00111110
|
76
|
62
|
3E
|
>
|
大於 |
00111111
|
77
|
63
|
3F
|
?
|
問號 |
01000000
|
100
|
64
|
40
|
@
|
電子郵件符號 |
01000001
|
101
|
65
|
41
|
A
|
大寫字母A |
01000010
|
102
|
66
|
42
|
B
|
大寫字母B |
01000011
|
103
|
67
|
43
|
C
|
大寫字母C |
01000100
|
104
|
68
|
44
|
D
|
大寫字母D |
01000101
|
105
|
69
|
45
|
E
|
大寫字母E |
01000110
|
106
|
70
|
46
|
F
|
大寫字母F |
01000111
|
107
|
71
|
47
|
G
|
大寫字母G |
01001000
|
110
|
72
|
48
|
H
|
大寫字母H |
01001001
|
111
|
73
|
49
|
I
|
大寫字母I |
01001010
|
112
|
74
|
4A
|
J
|
大寫字母J |
01001011
|
113
|
75
|
4B
|
K
|
大寫字母K |
01001100
|
114
|
76
|
4C
|
L
|
大寫字母L |
01001101
|
115
|
77
|
4D
|
M
|
大寫字母M |
01001110
|
116
|
78
|
4E
|
N
|
大寫字母N |
01001111
|
117
|
79
|
4F
|
O
|
大寫字母O |
01010000
|
120
|
80
|
50
|
P
|
大寫字母P |
01010001
|
121
|
81
|
51
|
Q
|
大寫字母Q |
01010010
|
122
|
82
|
52
|
R
|
大寫字母R |
01010011
|
123
|
83
|
53
|
S
|
大寫字母S |
01010100
|
124
|
84
|
54
|
T
|
大寫字母T |
01010101
|
125
|
85
|
55
|
U
|
大寫字母U |
01010110
|
126
|
86
|
56
|
V
|
大寫字母V |
01010111
|
127
|
87
|
57
|
W
|
大寫字母W |
01011000
|
130
|
88
|
58
|
X
|
大寫字母X |
01011001
|
131
|
89
|
59
|
Y
|
大寫字母Y |
01011010
|
132
|
90
|
5A
|
Z
|
大寫字母Z |
01011011
|
133
|
91
|
5B
|
[
|
開方括號 |
01011100
|
134
|
92
|
5C
|
\
|
反斜槓 |
01011101
|
135
|
93
|
5D
|
]
|
閉方括號 |
01011110
|
136
|
94
|
5E
|
^
|
脫字符 |
01011111
|
137
|
95
|
5F
|
_
|
下劃線 |
01100000
|
140
|
96
|
60
|
`
|
開單引號 |
01100001
|
141
|
97
|
61
|
a
|
小寫字母a |
01100010
|
142
|
98
|
62
|
b
|
小寫字母b |
01100011
|
143
|
99
|
63
|
c
|
小寫字母c |
01100100
|
144
|
100
|
64
|
d
|
小寫字母d |
01100101
|
145
|
101
|
65
|
e
|
小寫字母e |
01100110
|
146
|
102
|
66
|
f
|
小寫字母f |
01100111
|
147
|
103
|
67
|
g
|
小寫字母g |
01101000
|
150
|
104
|
68
|
h
|
小寫字母h |
01101001
|
151
|
105
|
69
|
i
|
小寫字母i |
01101010
|
152
|
106
|
6A
|
j
|
小寫字母j |
01101011
|
153
|
107
|
6B
|
k
|
小寫字母k |
01101100
|
154
|
108
|
6C
|
l
|
小寫字母l |
01101101
|
155
|
109
|
6D
|
m
|
小寫字母m |
01101110
|
156
|
110
|
6E
|
n
|
小寫字母n |
01101111
|
157
|
111
|
6F
|
o
|
小寫字母o |
01110000
|
160
|
112
|
70
|
p
|
小寫字母p |
01110001
|
161
|
113
|
71
|
q
|
小寫字母q |
01110010
|
162
|
114
|
72
|
r
|
小寫字母r |
01110011
|
163
|
115
|
73
|
s
|
小寫字母s |
01110100
|
164
|
116
|
74
|
t
|
小寫字母t |
01110101
|
165
|
117
|
75
|
u
|
小寫字母u |
01110110
|
166
|
118
|
76
|
v
|
小寫字母v |
01110111
|
167
|
119
|
77
|
w
|
小寫字母w |
01111000
|
170
|
120
|
78
|
x
|
小寫字母x |
01111001
|
171
|
121
|
79
|
y
|
小寫字母y |
01111010
|
172
|
122
|
7A
|
z
|
小寫字母z |
01111011
|
173
|
123
|
7B
|
{
|
開花括號 |
01111100
|
174
|
124
|
7C
|
|
|
垂線 |
01111101
|
175
|
125
|
7D
|
}
|
閉花括號 |
01111110
|
176
|
126
|
7E
|
~
|
波浪號 |
01111111
|
177
|
127
|
7F
|
DEL (delete)
|
刪除
|
隨着計算機的發展. 以及普及率的提升. 流⾏到歐洲和亞洲. 這時ASCII碼就不合適了. 好比: 中⽂漢字有幾萬個. 而ASCII 多也就256個位置. 因此ASCII不行了. 怎麼辦呢? 這時, 不同的國家就提出了不同的編碼用來適用於各自的語言環境. 好比, 中國的GBK, GB2312, BIG5, ISO-8859-1等等. 這時各個國家均可以使用計算機了.
GBK, 國標碼佔用2個字節. 對應ASCII碼 GBK直接兼容. 由於計算機底層是用英文寫的. 你不支持英文確定不行. 而英文已經使用了ASCII碼. 因此GBK要兼容ASCII.
這里GBK國標碼. 前⾯的ASCII碼部分. 因爲使⽤兩個字節. 因此對於ASCII碼⽽言. 前9位都是0
字母A:0100 0001 # ASCII 字母A:0000 0000 0100 0001 # 國標碼
國標碼的弊端:
只能中國用. 日本就垮了. 因此國標碼不知足咱們的使用. 這時提出了一個萬國碼Unicode一 開始設計是每一個字符兩個字節. 設計完了. 發現我大中國漢字依然沒法進行編碼.
只能進行擴充. 擴充成32位也就是4個字 節. 這回夠了. 可是. 問題來了. 中國字9萬多. 而unicode能夠表示40多億. 根本用不了. 太浪費了. 因而乎, 就提出了新的 UTF編碼.可變長度編碼
Unicode(統一碼、萬國碼、單一碼)是一種在計算機上使用的字符編碼。Unicode 是爲了解決傳統的字符編碼方案的侷限而產生的,
它爲每種語言中的每一個字符設定了統一而且惟一的二進制編碼,規定雖有的字符和符號最少由 16 位來表示(2個字節),即:2 **16 = 65536
注:此處說的是最少2個字節,可能更多
UTF-8,是對Unicode編碼的壓縮和優化,他再也不使用最少使用2個字節,而是將全部的字符和符號進行分類:ascii碼中的內容用1個字節保存、
歐洲的字符用2個字節保存,東亞的字符用3個字節保存...
UTF-16: 每一個字符最少佔16位.
GBK: 每一個字符佔2個字節, 16位.
8bit = 1byte 1024byte = 1KB 1024KB = 1MB 1024MB = 1GB 1024GB = 1TB 1024TB = 1PB 1024TB = 1EB 1024EB = 1ZB 1024ZB = 1YB 1024YB = 1NB 1024NB = 1DB 常⽤到TB就夠了