1. 程式人生 > >Python 考試題及答案彙總(填空,判斷,問答,單選及多選)

Python 考試題及答案彙總(填空,判斷,問答,單選及多選)

前段時間進行了Python的兩場考試,分別是python基礎和python高階。
我覺得只能給自己打80分,這個成績與我的目標還差很遠,還有進步的必要。
所以,我先將考試題中非問答題部分貼出來,以供自己隨時溫習。
相信掌握這些知識,不僅僅是為了應付面試,更是為了以後能在python資料分析和人工智慧的道路上走的更遠。
加油!

填空

第一部分:

1、python屬於_____________________語言(解釋型、強、動態)。
2、Python的內建函式在__________檔案中。(buildins.py
3.python提供了兩個物件身份比較的操作符____________和____________,測試一兩個變數是否指向同一個物件,也可以通過內建函式____________來測試物件的記憶體地址。(is is not id)
4、字典物件的___________方法可以獲取指定“鍵”對應的“值”,並且可以在指定“鍵”不存在的時候返回指定值,如果不指定則返回None。(get())
5、已知 x = {‘a’:‘b’, ‘c’:‘d’},那麼表示式 ‘b’ in x 的值為______________。(False)
6、表示式 [x for x in [1,2,3,4,5] if x<3] 的值為_____________________。([1, 2])
7、表示式 isinstance(‘abcdefg’, str) 的值為____________。(True)表示式 isinstance(‘abcdefg’, object) 的值為_____________。(True)
8、表示式 ‘,’.join('a b ccc\n\n\nddd '.split()) 的值為______________。(‘a,b,ccc,ddd’)
9、產生type的類是______________(type)
10、假設列表物件x = [1, 1, 1],那麼表示式id(x[0]) == id(x[2])的值為_____________。(True)
11、表示式 sorted([13, 1, 237, 89, 100], key=lambda x: len(str(x))) 的值為___________________________________。([1, 13, 89, 237, 100])
12、類的成員包含________________、________________、例項方法、類屬性、類方法。(例項屬性、靜態方法)

第二部分:

1、Python安裝擴充套件庫常用的是_______工具。(pip)
2、Python標準庫math中用來計算取餘的操作是__________,規則是__________(fmod,正數時商向下取正,負數時商向上取正)
3.python提供了兩個操作符,當指向內容是否一致是使用____________,當指向是否是同一個物件時使用____________。(= = is)
4、字典物件的___________方法可以獲取指定“鍵”對應的“值”,並且可以在指定“鍵”不存在的時候返回指定值,如果不指定則返回None。(get())
5、已知 x = {‘a’:‘b’, ‘c’:‘d’},那麼表示式 ‘b’ in x 的值為______________。(False)
6、表示式 [x for x in [1,2,3,4,5] if x<3] 的值為_____________________。([1, 2])
7、表示式 isinstance(‘abcdefg’, str) 的值為____________。(True)表示式 isinstance(‘abcdefg’, object) 的值為_____________。(True)
8、表示式 ‘,’.join(‘a b ccc\n\n\nddd ‘.split()) 的值為______________。(‘a,b,ccc,ddd’)
9、假設正則表示式模組re已匯入,那麼表示式 re.sub(’\d+’, ‘1’, ‘a12345bbbb67c890d0e’) 的值為_____________________。(‘a1bbbb1c1d1e’)
10、假設列表物件x = [1, 1, 1],那麼表示式id(x[0]) == id(x[2])的值為_____________。(True)
11、表示式 sorted([13, 1, 237, 89, 100], key=lambda x: len(str(x))) 的值為___________________________________。([1, 13, 89, 237, 100])
12、Python標準庫os.path中用來判斷指定檔案是否存在的方法是______________。(exists())

判斷

第一部分:

1、Python支援多繼承,如果父類中有相同的方法名,而在子類中呼叫時沒有指定父類名,則Python直譯器將從左向右按順序進行搜尋。(對)

2、當將位置引數放到可變引數的後面時,位置引數自動變成關鍵字引數(對)

3、python的字串支援的字符集是ascii字符集(錯)

4、元組的元素是不可修改的。(錯)

5、在Python中定義類時例項方法的第一個引數名稱必須是self。(錯)

6、elif條件可以匹配多次(錯)

7、通過物件不能呼叫類方法和類屬性(錯)

8、在類的外部無論如何也無法呼叫到私有成員(錯)

9、通過物件不能呼叫類方法和靜態方法。(錯)

10、在Python中可以為自定義類的物件動態增加新成員。(對)

11、Python類不支援多繼承。(錯)

12、屬性可以像資料成員一樣進行訪問,但賦值時具有方法的優點,可以對新值進行檢查。(對)

13、Python程式只能在安裝了Python環境的計算機上以原始碼形式執行。(錯)

14、定義函式時,帶有預設值的引數必須出現在引數列表的最右端,任何一個帶有預設值的引數右邊不允許出現沒有預設值的引數。(對)

15、當作為條件表示式時,空值、空字串、空列表、空元組、空字典、空集合、空迭代物件以及任意形式的數字0都等價於False。(對)

第二部分:

1、Python支援多繼承,如果父類中有相同的方法名,而在子類中呼叫時沒有指定父類名,則Python直譯器將從左向右按順序進行搜尋。(對)

2、對檔案進行讀寫操作之後必須顯式關閉檔案以確保所有內容都得到儲存。(對)

3、Python標準庫threading中的Lock、RLock、Condition、Event、Semaphore物件都可以用來實現執行緒同步。(對)

4、異常處理結構中的finally塊中程式碼仍然有可能出錯從而再次引發異常。(對)

5、在Python中定義類時例項方法的第一個引數名稱必須是self。(錯)

6、在多執行緒程式設計時,當某子執行緒的daemon屬性為False時,主執行緒結束時會檢測該子執行緒是否結束,如果該子執行緒尚未執行結束,則主執行緒會等待它完成後再退出。(對)

7、定義類時實現了__ eq __()方法,該類物件即可支援運算子==。(對)

8、使用正則表示式對字串進行分割時,可以指定多個分隔符,而字串物件的split()方法無法做到這一點。(對)

9、通過物件不能呼叫類方法和靜態方法。(錯)

10、在Python中可以為自定義類的物件動態增加新成員。(對)

11、Python類不支援多繼承。(錯)

12、屬性可以像資料成員一樣進行訪問,但賦值時具有方法的優點,可以對新值進行檢查。(對)

13、Python程式只能在安裝了Python環境的計算機上以原始碼形式執行。(錯)

14、定義函式時,帶有預設值的引數必須出現在引數列表的最右端,任何一個帶有預設值的引數右邊不允許出現沒有預設值的引數。(對)

15、當作為條件表示式時,空值、空字串、空列表、空元組、空字典、空集合、空迭代物件以及任意形式的數字0都等價於False。(對)

問答題

第一部分:

1.說明lambda表示式是什麼?如何使用?

Lambda建立函式的一種簡潔方式,用來定義匿名函式的
語法:lambda 引數: 表示式
使用的時候要注意實現的是簡單函式功能。
使用場合,當高階函式的關鍵字引數指向函式名,可以直接使用lambda來實現。

2.解釋邏輯運算子的短路現象。

被短路:就是不執行當前的表示式
And 第一個表示式為False,第二個表示式被短路
Or 第一個表示式為True,第二個表示式被短路

3.解釋LEGB原則並說明對於可變物件和不可變物件的不同

在訪問某一個名稱的時候,python直譯器 會從當前的名稱空間中查詢,如果查詢不到則遵循LEGB原則
LEGB是一個訪問順序
先從區域性名稱空間中查詢,如果找到,則停止,否則到外圍名稱空間中查詢,如果找到,則停止,則到全域性名稱空間中查詢,如果找到,則停止,否則到內建名稱空間中查詢,如果找不到則報錯。
對於可變型別來說,在區域性名稱空間中訪問全域性變數 或者外圍變數不需要使用global和nonlocal關鍵字就可以訪問到變數名稱。

4.闡述一下python中列表的深拷貝與淺拷貝

淺拷貝:列表下的copy方法,copy包下的copy方法,列表的切片
只複製當前列表物件的第一層。

深拷貝:copy包下的deepcopy
一直複製到不可變型別物件為止。

5.python中nonlocal與global關鍵字的用法

對於不可變型別的資料來說,
當訪問外圍變數時,需要用到nonlocal,在名稱使用之前,先使用nonlocal
當訪問全域性變數時,需要用到global,在名稱使用之前,使用global

6.描述一下__new__,init,__call__方法分別在元類和類中的執行順序。

(1) 當使用元類建立類的時候,會執行:元類的__new__,init
(2) 當使用類建立物件的時候,會執行:元類的__call__
繼續執行類的__new__,init
(3) 當把物件當函式名一樣使用的時候,物件(),會執行類的__call__

第二部分:

1.python中匯入模組有幾種方式,分別寫出來並比較一下使用方式的利弊。

import 模組名 as 別名

可以匯入一個模組下的所有內容,引用的時候,可以通過模組名+名稱來引用
不會引發跟內部變數同名問題

from 模組名 import 物件名 as 別名

按名字引入一個模組下的內容,使用*可以全部引入
引用的時候,可以通過名稱直接引用
可能引發跟內部變數同名問題
所以可以使用別名來避免重名情況。

2.寫出python異常處理的結構

try:
可能出現異常的程式碼段
except 異常型別1:
捕獲異常
except 異常型別2:
捕獲異常
except:
捕獲異常
Else:
Try正常執行沒有丟擲異常時走的程式碼段
Finally:
一直會走的程式碼段

3.解釋一下python以下劃線開頭變數名的特點

在這裡插入圖片描述

4. 闡述協程物件的daemon屬性的作用

在這裡插入圖片描述

5.說明一下執行緒中的run方法和start的不同

在這裡插入圖片描述

單選

1.下面屬於合法變數名的是(A)
A X_xy B 12anc C and D X-Y

2.下面不合法的整數是(D)
A 100 B 0B101 C 0X1A2 D 0O12A

3.表示n是m的倍數的表示式正確的是(A)
A n%m0 B n/m0 C n*m0 D n//m0

4.下列程式碼執行結果是? C
a = ‘a’
print a > ‘b’ or ‘c’
A. a B. b C. c D. True

5.下列哪種不是Python元組的定義方式? A
A. (1) B. (1, ) C. (1, 2) D. (1, 2, (3, 4))
6. 下列哪種函式引數定義不合法? C
A. def myfunc(*args): B. def myfunc(arg1=1):
C. def myfunc(*args, a=1): D. def myfunc(a=1, **args):

7.a與b定義如下,下列哪個是正確的? B
a = ‘123’
b = ‘123’
A. a != b B. a is b C.a == 123 D.a + b = 246

8.一個段程式碼定義如下,下列呼叫結果正確的是?A
def bar(multiple):
def foo(n):
return multiple ** n
return foo
A. bar(2)(3) == 8 B. bar(2)(3) == 6 C. bar(3)(2) == 8 D. bar(3)(2) == 6

9.下面程式碼執行後,a、b、c、d四個變數的值,描述錯誤的是? D
import copy
a = [1, 2, 3, 4, [‘a’, ‘b’]]
b = a
c = copy.copy(a)
d = copy.deepcopy(a)
a.append(5)
a[4].append(‘c’)
A. a ==[1,2, 3, 4, [‘a’, ‘b’, ‘c’], 5] B. b == [1,2, 3, 4, [‘a’, ‘b’, ‘c’], 5]
C. c ==[1,2, 3, 4, [‘a’, ‘b’, ‘c’]] D. d == [1,2, 3, 4, [‘a’, ‘b’, ‘c’]]

10.有如下類定義,下列描述錯誤的是? D
class A(object):
pass
class B(A):
pass
b = B()
A. isinstance(b, A) == True B. isinstance(b, object) == True
C.issubclass(B, A) == True D. issubclass(b, B) == True

多選題

1.Python中函式是物件,描述正確的是? ABCD
A.函式可以賦值給一個變數 B.函式可以作為元素新增到集合物件中
C.函式可以作為引數值傳遞給其它函式 D.函式可以當做函式的返回值

2.若 a = range(100),以下哪些操作是合法的? ABCD
A. a[-3] B. a[2:13] C. a[::3] D. a[2-3]

3.若 a = (1, 2, 3),下列哪些操作是合法的? ABD
A. a[1:-1] B. a*3 C. a[2] = 4 D. list(a)

4.Python中單下劃線_foo與雙下劃線__foo與__foo__的成員,下列說法正確的是?ABC
A. _foo 不能直接用於’from module import *’
B. __foo解析器用_classname__foo來代替這個名字,以區別和其他類相同的命名
C. __foo__代表python裡特殊方法專用的標識
D. __foo 可以直接用於’from module import *’

5.__new__和__init__的區別,說法正確的是? ABCD
A. new__是一個靜態方法,而__init__是一個例項方法
B. new__方法會返回一個建立的例項,而__init__什麼都不返回
C.只有在__new__返回一個cls的例項時,後面的__init__才能被呼叫
D.當建立一個新例項時呼叫__new
,初始化一個例項時用__init