概述 電腦二級在近兩年新加了python的選擇,趁機考了一下,順便記錄一下學習的一些所獲 第一章 程式設計語言概述 考綱考點: 這一部分主要是介紹電腦語言的公共常識,一些嘗試我就按照自己的理解方式來記憶: 程式設計語言——電腦與人類之間的翻譯官,所以稱為交互體系,翻譯官用的語言稱為電腦程式, ...
概述
電腦二級在近兩年新加了python的選擇,趁機考了一下,順便記錄一下學習的一些所獲
第一章 程式設計語言概述
考綱考點:
這一部分主要是介紹電腦語言的公共常識,一些嘗試我就按照自己的理解方式來記憶:
程式設計語言——電腦與人類之間的翻譯官,所以稱為交互體系,翻譯官用的語言稱為電腦程式,就像人類的語言有語法等等規則一樣。
高級編程語言包括靜態語言和腳本語言,python是解釋語言,就是直接跟電腦對話的那種,也就是腳本語言;Java那種是需要編譯才能執行的語言,就相當於需要二次翻譯,是靜態語言,因為靜態(懶),還需要一個傳話的才行。
官方用語的話,編譯是將源代碼轉換成目標代碼的過程,解釋是將源代碼逐條轉換成目標代碼的同時逐條運行目標代碼的過程。二者區別可見下圖來理解:
編譯是一次性翻譯,再傳話,經過傳話人以後,就不需要翻譯官再翻譯一遍了,所以一旦程式被編譯,就不需要再次編譯,所以重覆執行速度更快,當然這個目標代碼也就不再需要編譯器。
解釋是每次都需要解釋,因為翻譯一遍的外語容易忘,告訴傳話人以後,傳話人就不容易忘自己母語記憶的內容,但是解釋是翻譯官兼職傳話人,所以只要翻譯官存在,程式就可以執行。無論是那種系統,而且一個人乾,程式糾錯和維護也非常方便。
Python語言概述
這是python的最小程式了。
至於python的開發環境配置這裡就不介紹了,環境變數可以直接添加,比jdk方便多了
python的解釋器有兩個重要工具:IDLE——python集成開發環境(相當於人類、翻譯官、電腦組成的整體),pip——python第三方庫安裝工具(邀請翻譯官的功能)
Python程式的運行方式——互動式(命令行)、文件式(非命令行)
程式的基本編寫方法
IPO程式編寫方法——Input(輸入,相當於人類編寫代碼這個過程),process(處理,相當於翻譯),output(電腦得到翻譯官給的信息做出響應)
Python程式的特點
Python具有通用性,因為應用領域廣,所以才要學習,當作工具用也好
Python語法簡潔,只有33個保留字,看起來就像英語正常表達一樣
Python生態高產,庫特別多,也就是翻譯官特別充足,很多荒誕無理的要求都可以被翻譯官聽懂
除了Python語法的三個重要特點外,Python程式還 有一些具體特點。
•平臺無關:前面說到過,只要有翻譯官就可以,在任何系統都可以運行
•強制可讀 :也就是利用縮進來表明邏輯關係,相當於句子之間沒有停頓,使用縮進來強制理解
•支持中文:看下圖
第二章 Python語言基本語法元素
考綱考點:
程式的格式框架
縮進:
Python語言採用嚴格的“縮進”來表明程式的 格式框架,用來表示代碼之間的包含和層次關係。 1個縮進 = 4個空格 =1個退格。但是空格和退格不能混用。而且縮進是Python語言中表明程式框架的唯一手段。其重要性可見一斑。
註釋:
註釋就是在輸入的時候加入一些不想讓翻譯官翻譯的東西,但是翻譯官如何去區分哪些是要的,哪些是不要的呢?所以就有了註釋,單行註釋用井號。多行註釋用三對引號,三隊引號之間的內容就是被註釋掉了。單引號雙引號無所謂。
1
|
'''
|
變數:
變數就是一個一個的小房子,用來存放東西的,經常用一個等號把東西放進變數(房子)里,也就是賦值。
1
|
a=3 #把3放進了a中
|
命名:
Python語言允許採用大寫字母、小寫字母、數 字、下劃線(_)和漢字等字元及其組合給變數命 名,但名字的首字元不能是數字,中間不能出現空格,長度沒有限制 n。註意:標識符對大小寫敏感,python和Python 是兩個不同的名字
保留字:
python中你蓋的房子是變數,早就存在的名勝建築就是叫做保留字了,自己的房子愛咋咋地,名勝古跡可不能亂動,而且還不能建一個和名勝建築一樣的房子,要不然就侵權了,要坐牢(出bug)的!
數據類型
Python語言支持多種數據類型,最簡單的包括數字類型、字元串類型,略微複雜的包括元組類型、集合類型、列表類型、字典類型等。
數字類型
表示數字或數值的數據類型稱為數字類型,Python語言提供3種數字類型:整數、浮點數和複數,分別對應數學中的整數、實數和複數。
一個整數值又可以表示為十進位、十六進位、八進位和二進位等不同進位形式。一個浮點數可以表示為帶有小數點的一般形式,也可以採用科學計數法表示。
1
|
舉個例子,看不懂也沒關係
|
字元串
至於字元串, Python語言中,字元串是用兩個雙引號“ ”或者單 引號‘ ’括起來的一個或多個字元。
1
|
"hello world"[1]
|
可以採用[N: M](左閉右開區間)格式獲取字元串的子串,這個操作被形象地稱為切片。
1
|
"hello world"[1:4]
|
可以通過Python預設提供的len()函數獲取字元串 的長度,一個中文字元和西文字元的長度都記為1。
1
|
len("hello")
|
程式的語句元素
表達式
產生或計算新數據值的代碼片段稱為表達式,簡單說就是連接在一起的一個句子/短句
賦值
前面提到過了,一個等號是賦值,而且是從右往左賦值,如a=3
引用
Python程式會經常使用當前程式之外已有的功能 代碼,這個過程叫“引用”。Python語言使用 import保留字引用當前程式以外的功能庫,使用方 式如下: import <功能庫名稱>
其實說白了就是請翻譯官
分支語句
分支語句是控製程序運行的一種語句,它的作用是根據判斷 條件選擇程式執行路徑。分支語句包括:單分支、二分支和 多分支。如:
1
|
a=3 #一開始告訴你a裡面放的是3
|
迴圈語句
迴圈語句是控製程序運行的一類重要語句,與分支 語句控製程序執行類似,它的作用是根據判斷條件 確定一段程式是否再次執行一次或者多次。
1
|
|
基本輸入輸出函數
直接演示了
1
|
a=input("預設會輸入字元串噢") #輸入函數input(),就算是輸入數字也會當成字元串
|
print
函數還有個重要的地方:print
函數輸出講道理是直接就換行了,因為print()
裡面自帶換行,舉個例子:
1
|
print(3,end="") #不換行
|
第三章 基本數據類型
考綱考點
數字類型
前面提到過,python提供的數字類型有三種,整數、浮點、複數,翻譯一下就算整數、實數、複數。
整數嘛,在前面加0b
或者0B
,就意味著你在寫二進位數字,b代表binary
,其他英文可自行查閱。
浮點和整數的區別就算10.10是浮點,10.0也是浮點,都不是整數。浮點數還可以用科學計數法來寫,如1010.0
, -1010.
, 1.01e3
, -1.01E-3
至於複數,電腦可不像人變通那麼多,10+0j
是複數,10
就不是複數,所以只要帶j
的數就算複數。
1
|
(1.23e4+5.67e4j).real #.real是用來獲取實部,點翻譯成“的”,real翻譯為實部
|
數字類型的運算
操作符 | 功能 |
---|---|
x+y | 求和 |
x-y | 求差 |
x*y | 求積 |
x/y | 求商 |
x//y | x與y之整數商,即:不大於x與y之商的最大整數 |
x**y | x的y次冪,即:xy |
+x | x |
-x | -x |
x % y | x與y之商的餘數,也稱為模運算 |
x+=y | x=x+y |
x*=y | x=x*y |
依次類推 | …… |
abs(x) | x的絕對值 |
divmod(x, y) | (x//y, x%y),輸出為二元組形式(也稱為元組類型) |
pow(x, y[, z]) | (xy)%z,[..]表示該參數可以省略,即:pow(x,y),它與xy相同 |
round(x[, ndigits]) | 對x四捨五入,保留ndigits位小數。round(x)返回四捨五入的整數值 |
max(x1, x2, …, xn) | x1, x2, …, xn的最大值,n沒有限定 |
min(x1, x2, …, xn) | x1, x2, …, xn的最小值,n沒有限定 |
浮點數與整數運算,產生結果是浮點數 ,另外int(10.10)
得到整數10,int("10")
也會得到10,但是int(“10.10”)就會報錯,打個比方就是你把10.10放進int
的房子里時,int首先接待第一個字元,也就是1,他知道這是數字,就收下了,但是只能收下整數,當第一個字元是"
時,他知道是字元串,就收下了,當然只要是整數就沒問題,結果字元串給他一個浮點,他int就被撐炸了。
字元串類型及格式化
1
|
print('這是"單行字元串"')
|
重點,這個好像在考試經常會挖坑:Python語言轉義符: \ ,例如:\n表示換行、\表示反斜杠、'表示單引 號、"表示雙引號、\t表示製表符(TAB)等。
然後這個叫字元串的索引,切片,字面意思
1
|
"hello world"[1]
|
重點,format()方法的基本使用,舉幾個例子,自己理解比書面用於可能會好理解一點
1
|
"{}曰:學而時習之,不亦說乎。".format("孔子")
|
然後我總結一下:大括弧就相當於座位,format裡面就是即將入座的學生,大括弧里沒數字的就代表座位沒寫名字,誰排前面誰坐,有數字就按數字坐,當然最前的數字是第0,當然如果大括弧里本來就有東西,那些代表刻在桌子上的其他字,照例輸出就行
除此之外,format還有控制格式的作用:
1
|
s = "等級考試"
|
這個讀者自行總結好了吧,適合自己的記憶才是有用的,官方解釋以後遇到再說,反正能看懂
其實常用的就幾個
1
|
"{:.2f}".format(3.1415926)
|
字元串類型的操做
操作符 | 翻譯 |
---|---|
x + y | 連接兩個字元串x與y |
x * n 或 n * x | 複製n次字元串x |
x in s | 如果x是s的子串,返回True,否則返回False,’Y’ in name →False |
字元串處理函數
函數 | 描述 |
---|---|
len(x) | 返回字元串x的長度,也可返回其他組合數據類型的元素個數 |
str(x) | 返回任意類型x所對應的字元串形式 |
chr(x) | 返回Unicode編碼x對應的單字元 |
ord(x) | 返回單字元x表示的Unicode編碼 |
hex(x) | 返回整數x對應十六進位數的小寫形式字元串 |
oct(x) | oct(x) |
在學習類型這一塊,type()
函數是個好東西,他能幫你得到你想要知道的東西的類型。比如print(type(123))
就會列印出int,其他的也都可以用。
第四章 程式的控制結構
考綱考點
程式的基本結構
任何程式最多由三種基本結構組成:順序結構、分支結 構和迴圈結構。 一條一條向下進行的翻譯就是順序結構,向下翻譯時遇到需要跳過的部分就是分支(if\swich
語句),翻譯到下麵某處又返回到上面的就是迴圈(while\for
語句)、
在這種邏輯語句中,縮進要特別註意,與程式邏輯相關很大,冒號也要重視,這是格式要求
分支結構
1
|
|
有時候需要很多條岔路口,那就是else 後面再加一句 if,但是這種寫法有規定,拼寫成elif
,然後有幾個if就算幾分支語句
操作符 | 含義 |
---|---|
< | 小於 |
> | 大於 |
<= | 小於等於 |
>= | 大於等於 |
== | 等於 |
!= | 不等於 |
迴圈結構
1
|
for c in "Python": #這種也成為for的迴圈遍歷
|
迴圈控制
迴圈的時候如果遇到在一範圍內不想繼續運行的情況,就需要用到迴圈控制了——break
和continue
,break
跳出整個迴圈,continue
跳出當此迴圈
以for迴圈為例:
1
|
for i in range(6):
|
程式的異常處理
Python語言使用保留字try和except進行異常處理,try後面如果遇到錯誤了,就執行except後面的,有點像if分支語句的感覺,舉個例子
1
|
try:
|
上面例子中,當i
迴圈時,會從0開始,這樣就出現除數為0的情況,這樣講道理是要報錯的,但是遇到錯誤會執行except後面的代碼,所以最後知識輸出一句“某種原因,出錯了!”醬紫。
第五章 函數和代碼復用
考點考綱
函數的基本使用
首先是定義函數,如下就定義完了,要註意的只有縮進和冒號
1
|
def 函數(一些函數需要用到的參數):
|
定義了就要用,如下
1
|
def multiply(x, y): #定義函數
|
變數的作用域
在誰的冒號下麵的縮進下就是作用於誰的變數,除了那個冒號和縮進的範圍就沒用了。
1
|
def hanshu():
|
如果想要訪問局部變數,科研在前面加上global
用來強調是全局變數
1
|
n=2
|
組合數據類型
考綱考點
組合數據類型的基本概念
集合
集合是無序組合,用大括弧({})表示,它沒有 索引和位置的概念,集合中元素可以動態增加或刪除。集合中元素不可重覆,元素類型只能是固定數據類型,也就是說只能放你想賦值的東西,賦值過的房子是不能放進集合這種房子的。
1
|
S = {1010, "1010", 78.9}
|
集合類型有4個操作符,交集(&)、並集(|)、差集 (-)、補集(^),操作邏輯與數學定義相同。比如S-T
得到一個新集合包括在集合S中但不在集合T中的元素 。
函數或方法 | 描述 |
---|---|
S.add(x) | 如果數據項x不在集合S中,將x增加到s |
S.remove(x) | 如果x在集合S中,移除該元素;不在產生 KeyError異常 |
S.clear() | 移除S中所有數據項 |
len(S) | 返回集合S元素個數 |
x in S | 如果x是S的元素,返回True,否則返回False |
x not in S | 如果x不是S的元素,返回True,否則返回False |
集合類型主要用於元素去重,適合於任何組合數據類型。
1
|
T = {1010, "1010", 12.3, 1010, 1010}
|
序列
理解以下字元串就行,字元串就是一種字元序列
列表
列表也是一種序列,參考一下字元串,這裡寫一下不同的地方
方法 | 描述 |
---|---|
ls.append(x) | 在列表ls最後增加一個元素x |
ls.insert(i, x) | 在列表ls第i位置增加元素x |
ls.clear() | 刪除ls中所有元素 |
ls.pop(i) | 將列表ls中第i項元素取出並刪除該元素 |
ls.remove(x) | 將列表中出現的第一個元素x刪除 |
ls.reverse() | 列表ls中元素反轉 |
ls.copy() | 生成一個新列表,複製ls中所有元素 |
字典
其實字典也是序列,但是字元串和列表都是把索引預設按[0,len(list)-1]
來確定順序,而字典的區別就是自己把確定順序的東西寫出來
1
|
d = {"201801":"小明", "201802":"小紅", "201803":"小白"}
|
稍微瞭解一點:排序的東西叫做keys,被排序的東西叫做values
操作方法 | 描述 |
---|---|
d.keys() | 返回所有的鍵信息 |
d.values() | 返回所有的值信息 |
d.items() | 返回所有的鍵值對 |
d.get(key, default) | 鍵存在則返回相應值,否則返回預設值 |
d.pop(key, default) | 鍵存在則返回相應值,同時刪除鍵值對,否則返回預設值 |
d.popitem() | 隨機從字典中取出一個鍵值對,以元組(key, value)形式返回 |
d.clear() | 刪除所有的鍵值對 |
第七章 文件和數據格式化
考綱考點
文件的使用
首先,讀文件,分三個步驟,打開文件——讀取文件——關閉文件
1
|
file1 = open('/Users/Ted/Desktop/test/abc.txt','r',encoding='utf-8')
|
路徑有絕對路徑和相對路徑,相對當前文件夾的路徑叫做相對路徑,相對於我的電腦的路徑是絕對路徑。
文件打開時的狀態是由“讀read”“寫write”“追加append”,以及與位元組組合作用的效果,下圖表示的是以二進位文件打開,把b換成t就算以文本文件方式打開,除了r、w、a還有x,表示如果文件不存在,則自行創建,如果存在就報錯,而w是覆蓋原文件的寫,存在就覆蓋,不存在就新建。
1
|
f = open(“a.txt”,“rb”) #b表示二進位文件方式
|
用完文件一定要給關掉,要不然會造成記憶體泄漏、占用資源啥的。當然也可以用with open('abc.txt','a') as file1:
這樣的句子來打開文件,程式調用結束後文件會自動關閉。
方法 | 含義 |
---|---|
f.read(size=-1) | 從文件中讀入整個文件內容。參數可選,如果給出,讀入 前size長度的字元串或位元組流 |
f.readline(size = -1) | 從文件中讀入一行內容。參數可選,如果給出,讀入該行 前size長度的字元串或位元組流 |
f.readlines(hint=-1) | 從文件中讀入所有行,以每行為元素形成一個列表。參數 可選,如果給出,讀入hint行 |
f.seek(offset) | 改變當前文件操作指針的位置,offset的值: 0:文件開頭; 2: 文件結尾 |
f.write(s) | 向文件寫入一個字元串或位元組流 |
f.writelines(lines) | 將一個元素為字元串的列表寫入文件 |
數據組織的維度
1、2、3、4這樣叫一維數據
下表是二維數據:
1 | 2 |
---|---|
小紅 | 小明 |
高維數據:
1
|
"本書" : [
|
那麼這樣的數據怎麼存入文件呢?上面說的寫入都是將列表中的元素原封不動的存入txt文件中,通過向元素中加入換行符等等對寫入進行格式調整,其實我們也可以用其他方法。
其中用逗號分割的存儲格式叫做csv
格式(Comma-Separated Values,即逗號分隔值)