練習題 Python語法入門

2022-01-29 22:52:30 字數 3803 閱讀 1683

直接用「0」和「1」構成的指令去編寫程式,即用計算機能夠直接理解的二進位制指令編寫程式,計算機可以無障礙理解。

優點:執行效率最高

缺點:開發效率最低

用英文標籤取代二進位制去編寫程式。

優點:執行效率高

缺點:開發效率低

用人的語言區寫程式,計算機無法直接理解,需要翻譯,按照翻譯方式的不同分為兩種:編譯型 和 解釋型

編譯型(例如c):類似於谷歌翻譯(編譯器)

優點:執行效率高於解釋型

缺點:開發效率低於解釋型

解釋型(例如python):類似於同聲傳譯(直譯器)

優點:開發效率高於編譯型

缺點:執行效率低於編譯型

開發效率:機器語言 > 組合語言 > 編譯型語言 > 解釋型語言

執行效率:解釋型語言 > 編譯型語言 > 組合語言 > 機器語言

跨平台性:機器語言 > 解釋型語言 > 編譯型語言 > 組合語言

python直譯器是專門用來執行python語言,並且解釋執行的
1.互動式

可以即使得到程式的執行結果,主要用於除錯

2.指令碼的方式

把程式寫到檔案裡(約定俗稱檔名字尾為.py),然後用python直譯器解釋執行其中的內容

python3.8 c:\a\b\c.py 執行python程式經歷三個步驟

1.先啟動python3.8直譯器,此時相當於啟動了乙個文字編輯器

2.直譯器會傳送系統呼叫,把c.py的內容從硬碟讀入記憶體,此時c.py中的內容全部為普通字元,沒有任何語法意義

3.直譯器開始解釋執行剛剛讀入記憶體的c.py的**,開始識別python語法

對比文字編輯器讀取c:\a\b\c.py檔案內容也經歷了三個步驟

1.先啟動文字編輯器

2.文字編輯器會傳送系統呼叫,把c.py的內容從硬碟讀入記憶體

3.文字編輯會將剛剛讀入記憶體的內容控制輸出到螢幕上,讓使用者看到結果

總結: 二者在前兩個階段做的事情完全一致

唯一不同的就是第三個階段對讀入記憶體的python**的處理方式不同

注釋是對關鍵**的解釋說明

被注釋的**不會被執行

單行注釋:#

# 我被注釋了,不會被執行

多行注釋:'''''' """"""

'''注釋1

注釋2注釋3

'''"""

注釋1注釋2

注釋3"""

變數就是可以變化的量,量指的是事物的狀態,比如人的年齡、性別,遊戲角色的等級、金錢等等

為了讓計算機能夠像人一樣去記憶事物的某種狀態,並且狀態是可以發生變化的

原則:先定義,後引用

name = 'egon' # 定義變數 ---> 存

print(name) #引用變數 ---> 取

變數值:代表記錄的事物的狀態

原則:變數名的命名應該見名知意

1.變數名只能是 字母、數字或下劃線的任意組合

2.變數名的第乙個字元不能是數字

3.關鍵字不能宣告為變數名,常用關鍵字如下

['and', 'as', 'assert', 'break', 'class', 'continue', 'def',

'del', 'elif', 'else', 'except', 'exec', 'finally', 'for', 'from',

'global', 'if', 'import', 'in', 'is', 'lambda', 'not', 'or', 'pass',

'print', 'raise', 'return', 'try', 'while', 'with', 'yield']

ps:不要用拼音,不要用中文,在見名知意的前提下盡可能短

1.純小寫加下劃線的方式(在python中,關於變數名的命名推薦使用這種方式)

age_of_alex=73

print(age_of_alex)

2.駝峰體

ageofalex=73

print(ageofalex)

type:不同型別的值用來表示記錄不同的狀態

value:值本身

變數的值不同,id不同

變數的值相同,id可以相同,也可以不同

id相同,值一定相同(同一塊記憶體位址,全都相同)

id不同,值可以相同,也可以不同(不同的記憶體位址,可以放一樣的,也可以不一樣)

is:比較左右兩個值身份id是否相等

==:比較左右兩個值他們的值是否相等

垃圾**機制(garbage collection)簡稱gc, 是python直譯器自帶的一種機制, 專門用來**不可用的變數值所占用的記憶體空間。
程式在執行的過程中會申請記憶體空間, 而對於一些無用的記憶體空間如果不及時清理的話會一直占用記憶體空間, 進而造成記憶體溢位, 最終導致程式gg。

但是記憶體管理是一件麻煩事, python則提供了垃圾**機制來釋放不必要的記憶體空間。

1.引用計數:

python中,每乙個東西都是物件,底層實現中都是乙個pyobject。

其中,ob_refcnt屬性記錄著該物件的引用次數,當有東西引用該物件時,該屬性會加1,引用該物件被刪除時,該屬性會減1,如果引用次數為0,就會觸發垃圾**機制。

優點:簡單、實時(將處理垃圾時間分攤到執行**時,而不是等到一次**)

缺點:1.儲存物件引用數會占用一點點記憶體空間

2.每次執行語句都可能更新引用數,不再使用大的資料結構時,會引起大量物件被**

3.不能處理迴圈引用的情況

2.標記\清除:

此方式主要用來處理迴圈引用的情況,只有容器物件(list、dict、tuple,instance)才會出現迴圈引用的情況。

過程:1.標記階段,遍歷所有的物件,如果是可達的(reachable),也就是還有物件引用它,那麼就標記該物件為可達。

2.清除階段,再次遍歷物件,如果發現某個物件沒有標記為可達,則就將其**。

3.分代**:

在迴圈引用物件的**中,整個應用程式會被暫停,為了減少應用程式暫停的時間,python 通過「分代**」(generational collection)以空間換時間的方法提高垃圾**效率。

過程:1.將所有容器物件放到乙個雙向鍊錶中(鍊錶為了方便插入刪除),這些物件為0代

2.迴圈遍歷鍊錶,如果被本鍊錶內的物件引入,自身的被引用數-1,如果被引用數為0,則觸發引用計數**條件,被**掉

3.未被**的物件,公升級為1代

簡化理解:

以班級為例,可以把學生分為三類:學霸、普通學生、學渣

學霸:過於優秀,一周查一次作業

普通學生:一般般,三天查一次

學渣:不用多說,每天都查

雖然分級檢查了,檢查的時間效率變高了,但是存在著缺陷,如果學霸不交作業,要下一周才能查出來,那他的學霸地位就不保了,存在漏洞。

從python直譯器啟動那一刻開始,就會在記憶體中事先申請好一系列記憶體空間存放好常用的整數

範圍是:[-5,256]

常量 就是不變的量

注意:python語法中沒有常量的概念,但是在程式的開發過程中會涉及到常量的概念

age_of_alex=73 # 小寫字母全為大寫代表常量,這只是一種約定、規範

python入門練習題

1.使用者鍵盤輸入一年份,判斷是否為閏年?如果是閏年,則輸出 是閏年 如果不是閏年,則輸出 不是閏年 判斷閏年的方法 1 能被4整除但不能被100整除 2 能被400整除 2.for迴圈巢狀 列印9 9乘法表 3.輸入兩個數,求這兩個數的最大公約數和最小公倍數 1.企業發放的獎金根據利潤提成。利潤 ...

Python基礎語法練習題

1 在python中列印如下圖形 不用使用迴圈語句,使用基礎print語句即可 print print print 2 輸入乙個數字,列印按位取反後的結果 num int input 請輸入乙個整數 num num 1 print 按位取反的結果為 num 3 輸入兩個數分別為正方形的長和寬,列印長...

python語法基礎練習題

1,互動器執行,在控制台上執行臨時輸入的 2,檔案操作,執行乙個儲存好的py檔案 兩者的區別是 乙個是記憶體操作,乙個是硬碟操作,記憶體的特點是 讀取速度快,但是斷電就丟失資料 硬碟的特點是 速度慢,但可以儲存資料 基本資料型別 可變資料型別 列表,字典,集合 不可變資料型別 字串,元組,數字 擴充...