決戰Python之巔——第一模組總結
前言
本篇將對第一模組中的知識點做一個小總結。
知識總結
1.程式語言
程式語言分為三大類:
1.機器語言
2.組合語言
3.高階語言
其中,機器語言與組合語言是最底層語言,執行速度快,但開發效率低;高階語言開發效率高,但執行速度相對較慢,而高階語言又分為編譯型、解釋型兩種。
2.Python的輸入輸出與註釋
Python與使用者互動的輸入、輸出語言是:
輸入:input()
輸出:print()
註釋分為兩種,單行註釋與多行註釋。單行註釋直接跟在程式碼後或另起一行,以 # 開頭;多行註釋使用三對單引號或者三對雙引號,自己選擇。
3.基本資料型別
Python有三大基本資料型別:
int
string,字串;
bool,布林值,只有True 和 False兩個值。
另外還有float,Python中小數預設有6位。
4.格式化輸出
使用佔位符:
%s:string型
%d:整型
%f:浮點型
5.運算子
與基本數學一樣,Python中也有+ - * /(加減乘除),另外還有:
% :取模,返回餘數;
** :冪,返回x的y次冪
//:取整,除法返回整數部分
還有>、<、=等一些關係運算,就不在詳述。
6.流程控制(考點)
單流程:
if 條件1:
程式碼
雙流程:
if 條件1:
程式碼1
else:
程式碼2
多流程:
if 條件1:
程式碼1
elif 條件2:
程式碼2
......
else:
程式碼
多流程中你需要多少分支就可以寫多少分支,另外if…elif…else中還可以巢狀if…elif…else。
7.迴圈
(1)while…else…
while 條件:
程式碼1
else:
程式碼2
只有當條件為真,即條件為True時,才會進入while迴圈執行程式碼1,直至遇到break或者條件為False才會跳出while迴圈(注意:一定不要寫死迴圈)。
while中也可以用continue,continue只用來跳過當前迴圈,不執行continue之後的程式碼,直接執行下一次迴圈。
只有當while迴圈正常結束,而不是通過break結束,才會執行else中的程式碼,切記。
(2)for迴圈(考點)
for迴圈是一個遍歷迴圈,即:
for i in x:
程式碼
假設x中有n個元素,就將執行程式碼n次。
8.編碼(考點)
根據歷史事件,編碼從遠到近,依次是:
其中,ascii碼佔1個位元組,GBK佔2個位元組,UNICODE佔2個位元組,UTF-8分成3種:其中的ascii碼佔1個位元組,歐洲語言佔2個位元組,東亞語言佔3個位元組。
在計算機記憶體中,統一使用Unicode編碼,當需要儲存到硬碟或者需要傳輸的時候,就轉換為UTF-8編碼。
如果想把UTF-8轉為GBK,流程如下:
先將UTF-8解碼為Uniclde:
s1 = s.decode('UTF-8')
然後編碼為GBK:
s2 = s1.encode('GBK')
9.其它資料型別
Python中還有其他的資料型別:
(1)列表(list)
l = [] # 定義一個空列表
l = [1,2,3]
l = ['a','b','c']
注:列表中也可新增其他資料型別,如列表中巢狀列表。
列表操作 | 函式 |
---|---|
追加 | append |
索引 | index |
計數 | count |
切片 | [x:y:z]注1 |
插入 | insert |
刪除 | pop注2、remove、del注3 |
正序 | sort |
倒序 | reverse |
擴充套件 | extend |
複製 | cpoy注4 |
注1:x起始位置,y結束位置,z步長(預設為1),注意Python中永遠顧頭不顧尾。
注2:刪除最後一個
注3:用法為:
l = [1,2,3]
del l[0]
注4:淺層複製,具體請看深淺Copy。
(2)字串(string)
注意,字串是有序、不可變的。
(3)元組(tuple)
與列表相似,但一旦建立便不可修改。
初始化:
l = (1,2,3,4)
功能:
索引:index
計數:count
切片(同list)
注意:這裡有個坑,如果你初始化了:s = (1),接著你type(s),你會發現返回的是int而不是tuple,s=(1,)才是tuple。
(4)字典(dict)
字典是一種key-value的無序的資料型別。其中key必須是不可變資料型別,且必須唯一。
字典可存放多個值,可修改,可不唯一。
字典操作 | 函式 |
---|---|
查詢 | in注1 |
獲取 | get注2 |
獲取所有value | values |
獲取所有key | keys |
插入 | setdefault注3 |
更新 | update注4 |
items注5 |
注1:判斷字典的key中是否有當前值,有則返回True,反之返回False
注2:獲取有兩種方式,但另一種方式在遇到字典中沒有當前key的時候會報錯,get則會返回None
注3:setdefault:插入一堆key-value,加入字典中有該key就不插入且返回對應的value
注4:a.update(b),b中的key在a中存在,a中該key對應的value變為b中該key的value;b中的key在a中不存在,則a中新增一對這樣的key-value
注5:獲取當前字典的所有key,value,並返回一個list:[(key1,value1),(key2,value2),(key2,value2),(key3,value3)…]
(5)集合(set)
集合是一個無序的,不重複的資料集合。
集合三特徵:
1.確定性
2.互異性
3.無序性
集合操作 | 函式 |
---|---|
新增 | add注1 |
更新 | update注2 |
刪除 | discard、pop注3 |
清空 | clear |
複製 | copy |
注1:重複的元素不會被新增,只能新增不可變資料
注2:把多個值加入到集合
注3:discard集合中沒有該元素不會報錯,pop隨機刪,沒有會報錯
集合關係測試:
關係測試 | 符號 |
---|---|
交集 | & |
差集 | - |
並集 | ^ |
10.雜湊
11.二進位制、八進位制、十進位制、十六進位制
之間的轉換較好的方法是都轉為二進位制,再轉其他進位制。
2018.12.09補充:
先補充一下考核時遇到的問題及老師的答覆:
有這樣一道題:
#!/usr/bin/env python 3 這句話的作用是什麼?
剛看到這道題我一臉懵逼。。這句話哪來的?是不是超綱了?
…其實沒有,Pycharm檔案頭就有這一句話,只是我一直沒有注意:這句話的意思是,告訴系統執行這個指令碼時,呼叫Python 3直譯器。整體過程是,首先讓系統到環境變數(即env)中找Python 3安裝路徑,找到後呼叫Python 3直譯器。環境變數,我的理解是一個儲存庫,裡面存放都是一些安裝路徑,比如Python 3的,怎麼檢視本機的env呢(下面以windows為例):
右擊“我的電腦”——屬性——高階系統設定:
高階Tab頁——環境變數:
雙擊Path:
就能開啟編輯環境變數介面。
這裡還有另外一句話:
#!/usr/bin/python 3
這句話的意思是直接到usr/bin資料夾下找Python 3直譯器,是一個絕對路徑,如果你的Python 3沒有裝在這個資料夾下,就不會找到。
所以,還是推薦使用第一句。