今日份快捷鍵學習,pycharm中按CTRL+ALT+L 自動規範化操做,不過和QQ的快捷鍵會有衝突,建議更改QQ的python
知識點:git
1.編碼api
2.while循環app
3.運算符ide
4.數字int學習
5.布爾值ui
6.字符串編碼
7.列表spa
8.元祖code
正文開始,果真提早預習的好處就是上課的時候更容易聽講,查漏補缺,繼續堅持,fighting!!!
1,編碼
1.1編碼歷史變動
編碼能夠理解爲諜戰片中電報的密碼本,若是要想讓電腦識別要輸入的文本,須要將文本轉換爲電腦能識別的機器語言
因爲發明計算機的是美國人,因此最開始的編碼表就是美國人所設定,所設定的這個表就爲ASCII碼,ASCII碼包含字母大小寫、數字以及特殊符號。ASCII碼使用8bit,一個字節表達一個字符,因此作多顯示爲2**8-1個字符,也就是255個字符,例如00000001 a
後面因爲計算機的普遍傳播,ASCII碼已經徹底不能知足人們的平常須要,這個時候就出現了萬國碼,unicode,使用16bit,2個字節表示一個字符,後面使用後發現並不能實現,這個時候就進行了升級,此時採用32bit,也就是四個字節表示一個字符,雖然基本包含了全部的字符,可是,使用這種編碼佔用空間就很大;最終在後期的升級下,採用瞭如今大範圍使用的UTF-8編碼格式,對於英文以及傳統的特殊字符采用ASCII編碼,也就是8bit,一個字節,對於歐洲地區採用16bit,也就是2字節表示一個字符,對於亞洲區域則採用24bit,也就是三個字節顯示一個字符。
過於國內的字符編碼,在unicode和utf-8沒有大規模使用的期間,我國有本身的一套獨立的編碼格式,由最開始的GB2312到後面的GBK在到最新的GB18130,對於國內的編碼的格式主要是,英文等傳統特殊符號採用ASCII碼就行,對於中文則採用16bit,也就是2字節表示,這樣就形成不一樣國家不一樣的字符規格。
實例
'old男孩'在GBK中是7字節,在utf-8是9字節
在python 2.7版本中,默認爲ASCII碼,不支持中文,若是須要輸入中文必須在文首輸入如下
# -*- encoding:utf-8 -*-
1.2進制的區別
進制主要有二進制,八進制,十進制,十六進制
二進制:只有01
八進制:0-7
十進制:0-9
十六進制:0-E
1.2.1二進制轉十進制以及十進制轉換二進制
二進制轉化成十進制 0010 1101 ---> 0*2**7+0*2**6+1*2**5+0*2**4+1*2**3+1*2**2+0*2**1+1*2**0 1*2**5+1*2**3+1*2**2+1*2**0 = 32 + 8 + 4 + 1 = 45 十進制轉化成二進制 : 對2取餘,逆向排列 42 ——-> 0010 1010
2.while循環
while循環是for循環以外另外的一種經常使用循環,主要使用方法以下,對於while循環主要是有三種退出方式,一爲有條件退出,二爲添加中斷標誌(break),三爲調用系統中斷,例如exit(),quit()
2.1 單while循環
#while簡單循環 count = 0 while count < 3: print(count) count += 1 #結果爲循環顯示0-2
2.2 循環中的break語句
break語句就是中斷的意思,碰到他則跳出循環
#while循環中的break語句 count = 0 while count <100: print('code',count) if count == 5: print('中斷!') break count +=1 #結果 code 0 code 1 code 2 code 3 code 4 code 5 中斷!
2.3循環中的continue語句
continue語句就是跳過本次循環進行下一次循環
#while循環中的continue語句 count = 0 while count < 100: count += 1 if count > 5 and count < 95: continue print('code', count) print('到底了!')
2.4 while與else循環
while與if循環一致都是有else循環的
#while與else循環 count = 0 while count <5 : count += 1 print('code',count) else: print('正常退出!') print('到底了!') #結果 code 1 code 2 code 3 code 4 code 5 正常退出! 到底了!
2.5 while中的特殊退出
若是在正常循環中加入break,則無論這個循環是否運行完畢,都會立刻終止。循環只要不被break打斷,都會執行else語句。
#while循環的特殊退出 count= 0 while count <5: count += 1 if count == 3:break print('code',count) else: print('正常退出!') print('到底了!') #結果 code 1 code 2 到底了!
3.運算符
3.1基本數學運算符:+(加) -(減) *(乘) /(除) //(取整) %(取餘) **(取冪)
3.2 比較運算: >(大於) <(小於) ==(等於) >=(大於) <=(小於) !=(不等於) <>(不等於)
3.3 賦值運算:=(賦值) +=(自加) -=(自減) *=(自乘) /=(自除) //=(自取整) **=(自冪運算) %=(自取餘)
重點3.4 邏輯運算:and(與) or(或) not(非)
3.4.1 運算符倆邊都爲不等式
1,3>4 or 4<3 and 1==1 F
2,1 < 2 and 3 < 4 or 1>2 T
3,2 > 1 and 3 < 4 or 4 > 5 and 2 < 1 T
4,1 > 2 and 3 < 4 or 4 > 5 and 2 > 1 or 9 < 8 F
5,1 > 1 and 3 < 4 or 4 > 5 and 2 > 1 and 9 > 8 or 7 < 6 F
6,not 2 > 1 and 3 < 4 or 4 > 5 and 2 > 1 and 9 > 8 or 7 < 6 F
3.4.2 運算符倆邊都是數字
規律是x or y , x爲真,值就是x,x爲假,值是y;x and y, x爲真,值是y,x爲假,值是x。
8 or 4 8
0 and 3 0
0 or 4 and 3 or 7 or 9 and 6 3
3.4.3 運算符倆邊是混合模式
print(0 or 2 < 1 and 2 , '...1') F
print(0 or 2 > 1 and 2 , '..2') 2
print(1 or 2 > 1 and 2 , '..3') 1
print(2 or 2 < 1 or 2 , '..4') 2
print(0 and 2 < 1 and 2 , '..5') 0
print(0 and 2 > 1 and 2 , '..6') 0
print(1 and 2 > 1 and 2 , '..7') 2
print(1 and 2 < 1 or 2 , '..8' ) 2
print(2 and 2 < 1 or 2 , '..9') 2 # 規律首先判斷大於小於,而後判斷and ,or
print(2 and 2 > 1 or 2 , '..10') T
print(False and 2) F
print(True and 2) 2
print(False or 2) 2
print(True or 2 ) T
3.5 成員運算:in(在裏面) not in(不能再裏面)
3.6 邏輯運算優先級:()>not>and>or
4.數據類型之int
int就是整數,在python3中沒有int和long的區分,所有都是int型,只要記住是整數運算就好
對於int的用法
bin(234)快速給出數字的二進制的表示形式
print(i.bit_length()) # 獲取十進制轉化成二進制的有效位數 *
5.數據類型之布爾值
對於布爾值只有倆個數值,真與假,對應的就是1和0
布爾值與str類型的轉換
# bool 值 True False # str ---> bool 非空即True # s1 = 'fdsa范德薩了f' # s2 = '' # print(bool(s2)) # s1 = '' # if s1: # print('非空') # else: # print('此數據爲空') # bool ---> str 無心義 # b1 = True # print(str(b1),type(str(b1)))
6.數據類型之字符串
6.1 字符串的定義:字符串是一個有序的字符的集合,用於存儲和表示基本的文本信息,通常引號內的內容稱之爲字符串,通常input獲得的內容都是字符串,對於數字若是須要作比較,須要對其進行強制轉換。
6.2 字符串的特性:有序,不可變,從新對其賦值,會開發新的內存地址,先後的內存地址不一致,例如
a ='我愛你!' print(id(a)) a = '我愛你中國!' print(id(a)) #結果 1276541360624 1276542558704 能夠明顯發現倆者的內存地址不一樣 #id()在python中是查看變量的內存地址
6.3 字符串的使用方法
6.3.1字符串的切片
字符串的切片原則上只有一個,顧頭不顧尾!!!!
msg = '真相永遠只有一個' print(msg[0])#打印第一個 print(msg[0:3])#打印前三個 print(msg[:8])#打印所有 print(msg[3:7])#打印第四個到第七個 print(msg[1:])#打印打二個到最後一個 print(msg[-1])#打印最後一個 print(msg[0:4:2])#打印前四個,按照步長2 print(msg[-7:-1])#從倒數第七個到倒數第二個 print(msg[-8:])#倒數第八個到最後一個 print(msg[-8:0])#打印爲空
print(msg[:5:-1])#第一個參數指向最後一個,第二個參數到正數第三個,倒序輸出
print(msg[-1:-9:-1])#倒着打印字符串 #結果 真 真相永 真相永遠只有一個 遠只有一 相永遠只有一個 個 真永 相永遠只有一 真相永遠只有一個 個一有隻遠永相真
重要 6.3.2 字符串的其餘經常使用方法
.upper與.lower #字符所有大寫或者字符所有小寫,驗證碼的不區分大小寫
#普通用法 >>> s = 'AlexB' >>> s.upper() 'ALEXB' >>> s.lower() 'alexb' #通常用的場景比較多的地方爲,驗證碼,不區分大小寫,將輸入的字符自動大寫或者小寫
.startwith與.endwith #字符串是否以什麼開頭或者結尾,能夠切片尋找
>>> s1='aleXhahuhu' >>> s1.startswith('al') True >>> s1.endswith('hu') True >>> s1.endswith('ha') False #用的比較多的就是判斷讀取或者是返回的值是否是指定的數值,結果返回布爾值
.splite和.join #一個是將字符串切分,一個是將字符串拼接在一塊兒,用法以下
#.splite的用法,將str分離成列表 #用法1 >>> s2 ='武漢 天津 成都' >>> s2.split() #默認使用空格切分 ['武漢', '天津', '成都'] #用法2 >>> s2 ='武漢|天津|成都' >>> s2.splite('|')#對於其餘分離也能夠,不過須要輸入對應的'字符' #用法3 >>> s2 ='武漢|天津|成都' >>> s2.split('|',1) ['武漢', '天津|成都'] #對於其餘分離,也能夠指定分離次數,例如只分離一次 #坑 >>> s2 ='|武漢|天津|成都' >>> s2.split('|') ['', '武漢', '天津', '成都'] #對於分離標誌符,若是爲空,前面也會分離出空
#.join的用法 將列表中的元素鏈接起來,用法恰好和.splite相反 >>> s ='abc' >>> msg = '-' >>> msg.join(s) 'a-b-c' #用法就是將s中每一個元素用join鏈接在一塊兒
.isdigitt()#判斷字符串中的數據是不是數字
msg = '2' print(msg.isdigit()) msg1 = 'abc' print(msg1.isdigit()) #結果 True False
還有其餘的判斷語句,isupper判斷是不是大寫字母,islower判斷是不是小寫字母
.replacce()#字符串的替換
msg = '0101010101010111' print(msg.replace('0','-1',3)) # .replace(old,new,count),能夠選擇替換次數 #結果 -11-11-110101010111
.find()#在字符串中查找一個字符,並返回其索引(可切片)與.index功能相似,只是.find找不到返回-1,.index報錯
msg = '0101010101010111' print(msg.find('0',3,9)) # .find(sub,the begin,the end) #結果 4 #只返回第一個查找到的值
.count()#統計字符
msg = '0101010101010111' print(msg.count('0')) print(len(msg))#計算字符串的長度 #結果 7 16
.strip()#默認字符串倆頭的空格換行符以及縮進符或者對特定的字符進行去除,input後默認加.strip,也能夠指定特殊字符,只去除左側用lstrip,去除右側用rstrip,指定分割次數
msg = ' ****11111**** ' msg1 = msg.strip() msg2 = msg1.strip('*') print(msg1) print(msg2) #結果 ****11111**** 11111
.center()#在字符左右加特定的字符
msg = '我愛你中國!' msg2 = msg.center(50,'*') print(msg2)#至關於把msg放在一個50字符的字符串的中間,其餘用*補齊 #結果 **********************我愛你中國!**********************
.format()#格式化字符串
#格式化輸出的三種方式
#第一種
msg = '我是{},我今年{}歲,性別{}'.formate{'gao','18','男'}
#第二種
name =input("Name:") age =int(input("Age:")) job = input("Job:") salary = input("Salary:") info = ''' -----info of {0}----- Name = {0}; Age = {1}; Job = {2}; Salary = {3} '''.format(name,name,age,job,salary) print(info) #結果爲 Name:jack Age:18 Job:student Salary:100 -----info of jack----- Name = jack; Age = jack; Job = 18; Salary = student
#第三種
msg = '我是{name},我今年{age}歲,性別{sex}'.formate{name ='gao',age ='18',sex = '男'}
str的很是用方法(只須要了解便可)
str.rslip() #與正常的切分不一樣是從右來切分,不過生成的列表仍是從左到右排序 str.swapcase () #大小寫反轉,小寫變大寫,大寫變小寫 str.capitalize() #首字母大寫,其餘所有變成小寫(這個是個坑,謹記) 其餘 str.isupper str.islower str.title
7.數據類型之列表
7.1列表的定義:一系列數據按照順序排放在一塊兒的集合叫列表,是python中的經常使用數據類型
7.2列表的特性:有序
7.3列表的經常使用方法
7.3.1列表的定義
空列表:li= []
li=['a','b','c','d','e']有5個索引值,爲0-4
列表可嵌套:li =['a',['b','c'],'d'] li[1][1]='c'
7.3.2 列表的切片
和字符串的切片同樣,都是顧頭不顧尾
li = ['li','alex','wusir','haoran','zixin'] print(li[0:3])#取值前三個 print(li[:3])#取前三個 print(li[-5:])#取後五個 print(li[:6:2])#以步長2取值前5個 print(li[-1:-6:-1])#反向取值, #結果 ['li', 'alex', 'wusir'] ['li', 'alex', 'wusir', 'haoran', 'zixin'] ['li', 'alex', 'wusir'] ['li', 'wusir', 'zixin'] ['zixin', 'haoran', 'wusir', 'alex', 'li']
7.3.2 列表的增長
list = ['1','2','3','4'] #列表直接追加,新增的內容放在列表最後的位置 list.append('5')#列表最後一個增長5 #根據列表位置插入,插入後不會替換已有的內容,其餘內容 list.insert(0,'abc')#列表第一個位置插入一個abc #迭代的對列表進行增長數據 a ='abc' li.extend(a) #將可迭代的數據添加到列表中
7.3.3 列表的刪除
list = ['a','b',4,'c','d',4] #list的指定位置刪除,默認刪除最後一個,有返回值 list.pop()#按照位置刪除,有返回值 #list的指定刪除,沒有返回值 list.remove('a')#指定刪除列表中的'a' list.remove(4)#指定刪除列表中的第一個4 #list的總體清除,不可逆,刪了就刪刪了 list.clear() #列表的清除,只是清除列表內的數據,列表繼續保持在內存中 #通用方法啊,全局刪除 del list[2]#全局刪除第三個 del list [1:3]#批量刪除2到3,也可切片加步長刪除 del list #全局刪除,屬於內存級別的刪除, 列表的刪除
7.3.4 列表的修改
#列表的按位修改 list[2]= 'abc'#列表第三個位置修改成abc #列表的切片批量修改 list[3:5]= 'abc'#列表批量修改,不夠位則建立,不佔用已有的位置 #列表的切片批量修改加步長 list[3:5:2] = 'ab'#若是有步長,則有幾個位置改幾個,不然就報錯
7.3.5 列表的查找
#列表的查找方法 #1.索引 2.切片 3.切片加步長 4.for循環 列表的索引值 li[2]#返回列表的第三個索引值的數值 li[-1]#返回列表的最後一個索引值的數值 li[0:3]#返回列表的前三個值 li[0:3:2]#按照列表的切片和步長取值 li.index('a')#返回指定元素在列表中的索引值,從左到右找到的第一個匹配值,沒有則返回報錯 li.count('a')#返回指定元素在列表中的數量
7.3.6列表的循環
for i in list : print('i') #循環打印一個列表
list = [1,2,3,4,5,6,7,8,9] for i in list: print(i) #結果 循環輸入列表
range(10)#建立一個0---9的列表
while循環爲死循環,for循環爲邊界循環
#打印列表的索引值 list =[1,2,3,4,5,6,7,8,9] #方法一 print('方法一') count =0 for i in list: print(count+1,i) count+=1 #方法二 print('方法二') for i in enumerate(list): print(i) #方法三 print('方法三') for index,i in enumerate(list): print(index,i) #結果 方法一 1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 方法二 (0, 1) (1, 2) (2, 3) (3, 4) (4, 5) (5, 6) (6, 7) (7, 8) (8, 9) 方法三 0 1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9
7.3.7列表的其餘用法
.sort #按照ASCII碼來排序,不支持‘int’與‘str’做排序,還能夠從大到小,若是要從大到小,則須要加入 reverse = True,若是有中文則按照unicode來排序
.reverse #列表翻轉
列表也是相加或者乘法 例如 l1+l2 或者是l1 *10這樣
l3 = l1.copy() #l3 copy l1 ,倆個列表在內存空間中徹底獨立,是淺copy
8.數據類型之元祖
8.1 元祖的特性:列表是有序的,可變的,元祖也是有序的,可是不可變,因此元祖也稱爲只讀列表,例如names =('alex','wuwu','qiqi')。元祖自己是不可變的,不過若是元祖中包含可變元素,則可變元素能夠改變。總結的話就是一句話,元祖的兒子不能改,孫子有可能更改。
8.2 元祖的功能:基本的index與count功能是有的,其餘沒有
#元祖的使用! >>> name =('alex','wuwu','qiqi') >>> print(type(name)) <class 'tuple'> >>> name[1] 'wuwu' >>> len(name) 3
8.3 元祖的使用場景:很明確顯示的告知他人,此處的數據不可修改。