1. 程式人生 > >Python 基礎之階段測試(一)

Python 基礎之階段測試(一)

1、執行 Python 指令碼的兩種方式:
① 進入 Python 直譯器執行;
② 通過 Python + .py 檔案的全路徑執行 Python 程式;
③ 在 Linux 中還可以通過給 .py 檔案新增執行許可權並 ./*.py 的方式執行。
2、簡述位、位元組的關係:
八位是一個位元組。
3、簡述 ascll、unicode、utf-8、gbk 的關係:
① 通過圖示歸納關係:

② 描述四者之間的關係:
        最早的 ASCII 編碼只有 2**8-1=255 個字元被編碼到計算機裡,也就是大小寫英文字母、數字和一些符號。但是要處理中文顯然一個位元組是不夠的,至少需要兩個位元組,而且還不能和 ASCII 編碼衝突。所以,中國製定了一套 GB2312 編碼,用來把中文編進去。


        但是全世界有上百種語言,日本把日文編到 Shift_JIS 裡,韓國把韓文編到 Euc-k r裡,各國有各國的標準,就會不可避免地出現衝突,結果就是,在多語言混合的文字中,顯示出來會有亂碼。因此,Unicode 應運而生,Unicode把所有語言都統一到一套編碼裡,這樣就不會再有亂碼問題了。
        Unicode 標準也在不斷髮展,但最常用的是用兩個位元組表示一個字元(至少為 16 個二進位制位)。現代作業系統和大多數程式語言都直接支援Unicode。新的問題又出現了:如果統一成 Unicode 編碼,亂碼問題從此消失了。但如果你寫的文字基本上全部是英文的話,用 Unicode 編碼比 ASCII 編碼需要多一倍的儲存空間,在儲存和傳輸上就十分不划算。

       所以又出現了把 Unicode 編碼轉化為“可變長編碼”的 UTF-8 編碼。UTF-8 編碼把一個 Unicode 字元根據不同的數字大小編碼成 1-6 個位元組,常用的英文字母被編碼成 1 個位元組,漢字通常是 3 個位元組,只有很生僻的字元才會被編碼成 4-6 個位元組。如果你要傳輸的文字包含大量英文字元,用 UTF-8 編碼就能節省空間。
        UTF-8 編碼有一個額外的好處,就是 ASCII 編碼實際上可以被看成是 UTF-8 編碼的一部分,所以,大量只支援 ASCII 編碼的歷史遺留軟體可以在 UTF-8 編碼下繼續工作。

4、請寫出 “李傑” 分別用 utf-8 和 gbk 編碼所佔的位數:
在 UTF8 佔用 6 位元組,48 個二進位制位;在 GBK 中佔用 4 個位元組,32 個二進位制位。
5、Pyhton 單行註釋和多行註釋分別用什麼:
單行註釋:#
多行註釋:''' ''' 或 """ """ (在要註釋的行兩端加三個雙引號或三個單引號)
6、宣告變數注意事項有哪些:
① 數字、字母、下劃線,不能以數字開頭;
② 不能跟關鍵字重複;
③ 不能跟內建內容重複。
7、以下變數 n1 = 5,請使用 int 的提供的方法,得到該變數最少可以用多少個二進位制位表示:
提示:通過字串的 bit_length 可以得到結果(答案略)
8、布林值分別有什麼:
True、False( Python 中首字母大寫 )
知識補充 ① 布林值的運用:
#   "" (引號中什麼都沒有) ==========> 假(False)
#   " " (空格字串)          ==========> 真(True)
#    0 (數字零)                  ==========> 假(False)
#    其他數字                        ==========> 真(True)
知識補充 ② 資料型別的轉換:
# a = "123" 轉換為數字:b = int(a)
# a = 123 轉換為字串:b = str(a)
# a = 123 轉換為布林值:b = bool(a)
# a = "zxl" 轉換為布林值:b = bool(a)
9、閱讀程式碼,請寫出執行結果:

a    =    "alex"
b    =    a.capitalize()
print(a)
print(b)

請寫出輸出結果:

D:\pycharmfiles\first\venv\Scripts\python.exe D:/pycharmfiles/first/day2/buer.py
alex
Alex

10、寫程式碼,有如下變數,請按照要求實現每個功能:【略,詳見上篇文章中字串的魔法】
name = " aleX"
a. 移除 name 變數對應的值兩邊的空格,並輸入移除後的內容。
b. 判斷 name 變數對應的值是否以 "al" 開頭,並輸出結果。
c. 判斷 name 變數對應的值是否以 "X" 結尾,並輸出結果。
d. 將 name 變數對應的值中的 “l” 替換為 “p”,並輸出結果
e. 將 name 變數對應的值根據 “l” 分割,並輸出結果。
f. 請問,上一題 e 分割之後得到值是什麼型別(可選)?
g. 將 name 變數對應的值變大寫,並輸出結果。
h. 將 name 變數對應的值變小寫,並輸出結果。
i. 請輸出 name 變數對應的值的第 2 個字元?
j. 請輸出 name 變數對應的值的前 3 個字元?
k. 請輸出 name 變數對應的值的後 2 個字元?
l. 請輸出 name 變數對應的值中 “e” 所在索引位置?
m. 獲取子序列,僅不包含最後一個字元。如:oldboy 則獲取 oldbo; root 則獲取 roo。
11、字串是否可迭代物件,如可以請使用 for 迴圈每一個元素?
① 可迭代物件:暫時認為能夠被 for 迴圈進行獲取的就是可迭代物件,又稱迭代器。
② Python 中字串是可迭代物件,可以用 for 迴圈每一個元素。
12、請用程式碼實現:
a. 利用下劃線將列表的每一個元素拼接成字串,li = "alexericrain" 。

li= "alexericrain"
v = "_".join(li)
print(v)
D:\pycharmfiles\first\venv\Scripts\python.exe D:/pycharmfiles/first/day2/buer.py
a_l_e_x_e_r_i_c_r_a_i_n

b. 利用下劃線將列表的每一個元素拼接成字串,li = ['alex', 'eric', 'rain'] 。

li= ['alex', 'eric', 'rain']
v = "_".join(li)
print(v)
D:\pycharmfiles\first\venv\Scripts\python.exe D:/pycharmfiles/first/day2/buer.py
alex_eric_rain

13、Python2 中的 range 和 Python3 中的 range 的區別:
Python 2:range 立即建立;Python 2 中的 xrange 和 Python 3 的 range 效果一樣;
Python 3:for 迴圈時才會一個一個建立。
① 正序建立從 1 到 100,步長為 5:

for i in range(1,100,5):
print(i)

② 倒序建立從 100 到 1,步長為 5:

for i in range(100,1,-5):
print(i)

14、實現一個整數加法計算器:
如:content = input('請輸入內容:') # 如: 5+9 或 5+ 9 或 5 + 9

content = input('請輸入內容:') # 將使用者輸入的內容賦值給 content。
v1,v2 = content.split('+') # 將 content 內容以 “+” 分割並賦值給 v1、v2。
v1 = int(v1) # 重新賦值。
v2 = int(v2) # 重新賦值。
equel = v1 + v2 # 求和賦值給 equel。
print(equel) # 列印求得的結果。
D:\pycharmfiles\first\venv\Scripts\python.exe D:/pycharmfiles/first/day2/buer.py
請輸入內容:5 + 13
18

15、計算使用者輸入的內容中有幾個十進位制小數,幾個字母:
如:val = input('請輸入內容:') # 如:asduiaf878123jkjsfd-213928
解答思路:

num = 0
string = 0
val = input('請輸入內容:')
for item in val:
# 如果 item 是數字:
num += 1
# 如果 item 是字母:
string += 1
print(num)
print(string)

16、簡述 int 和 9 等數字以及 str 和 "xxoo" 等字串的關係:
int 和 srt 是類,9 和 “ooxx” 是類的物件,所以它們是類和物件的關係。
17、製作趣味模板程式:等待使用者輸入名字、地點、愛好,根據使用者的名字和愛好進行任意實現:
如:敬愛可親的 xxx,最喜歡在 xxx 地方幹 xxx。
提示:定義模板,通過 format 實現。

name = input("姓名>>>")
place = input("地址>>>")
hobby = input("愛好>>>")
temp = "敬愛可親的{0},最喜歡在{1}{2}"
v = temp.format(name,place,hobby)
print(v)
D:\pycharmfiles\first\venv\Scripts\python.exe D:/pycharmfiles/first/day2/buer.py
姓名>>>張雷
地址>>>籃球場
愛好>>>打籃球
敬愛可親的張雷,最喜歡在籃球場打籃球

18、製作隨機驗證碼,不區分大小寫:
流程:
- 使用者執行程式
- 給使用者顯示需要輸入的驗證碼
- 使用者輸入的值
使用者輸入的值和顯示的值相同時現實正確資訊,否則繼續生成隨機驗證碼繼續等待使用者輸入

生成隨機驗證碼程式碼示例:

19、開發敏感詞語過濾程式,提示使用者輸入內容,如果使用者輸入的內容中包含特殊的字元:
如 "蒼老師" "東京熱",則將內容替換為 ***

v = input("請說出你的故事>>>")
v = v.replace('蒼井空',"***")
v = v.replace('東京熱',"***")
print(v)
D:\pycharmfiles\first\venv\Scripts\python.exe D:/pycharmfiles/first/day2/buer.py
請說出你的故事>>>我喜歡在東京熱看蒼井空
我喜歡在***看***

20、製作表格
迴圈提示使用者輸入:使用者名稱、密碼、郵箱 (要求使用者輸入的長度不超過 20 個字元,如果超過則只有前 20 個字元有效)
如果使用者輸入 q 或 Q,表示不再繼續輸入,將使用者輸入的內容以表格形式列印。
提示:涉及到的知識點:expandtabs、len、分片 [0:20] 及 while 迴圈等知識點。