pythonmooc-python語言基礎與應用-期末客觀題(附帶分析講解)
- 單選(2分)
以下代碼的輸出結果是(D)。
def fun(num):
num *= 2
x = 20
fun(x)
print(x)
A.10
B.報錯
C.40
D.20
- 分析:python中內存分配機制:對於不可變的對象,其id和內存是不可變的,調用函數只是將num 指向20,x本身也是指向20的,並沒有改變x的指向,也改變不了20的地址,只是將num重新指向了一個地址
實驗樣例:
x = 10
print("最初的id",id(x),'x的值',x)
def test(x):
print('傳入的形參的id',id(x),'x的值',x)
x = x * 19
print('修改過後的x的id',id(x),'x的值',x)
test(x)
print('函數執行完畢的x的id',id(x),'x的值',x)
結果:
- . 單選(2分)
Python中以只讀形式打開文件的模式是(D)。
A.x
B.w
C.b
D.r
- 分析:
- 單選(2分)
以下代碼的輸出結果是(A)。
alist=[‘a’,‘b’,‘c’]
blist=alist[:1:-1]
print(blist)
A.[‘c’]
B.[‘b’, ‘c’]
C.[‘a’]
D.[‘c’, ‘b’]
- 分析:
- slice[start🔚step],左閉右開,最後一個是取不到的元素返回一個字符串
- start缺省,看step怎麼取值
- start缺省,step爲負數,默認是從最後一個逆序向前取值
- start缺省,step爲正數,默認是從第一個正序向前取值
- start>end,step爲正數,默認無輸出,直接跳出循環
- start<end,step爲負數,默認無輸出,直接跳出循環
代碼:
a = 'abcdefg'
print('原來的字符串',a)
print('a[:3:-1]',a[:3:-1])
print('a[:3:1]',a[:3:1])
print('a[0:4:-1]',a[0:4:-1])
print('a[4:2:1]',a[4:2:1])
結果:
- 單選(2分)
以下代碼的輸出結果是(B)。
L1 =[‘abc’, [‘123’,‘456’]]
L2 = [‘1’,‘2’,‘3’]
print(L1 > L2)
A.False
B.True
C.1
D.TypeError: ‘>’ not supported between instances of ‘list’ and ‘str’
- 分析:
- 比較規則: 從第一個元素順序開始比較,如果相等,則繼續,返回第一個不相等元素比較的結果。如果所有元素比較均相等,則長的列表大,一樣長則兩列表相等
這裏是借鑑的
- 試過之後,所有的容器對象無論裏面有沒有值,都比不變的int變量打,掃描到非int型的變量就自動返回,非列表元素的比較大
- 單選(2分)
以下關於容器類型說法錯誤的是(B)。
A.字典的 pop 函數可以返回一個鍵對應的值,並刪除該鍵值對。
B.創建一個空集合aset,可以用花括號:
aset = { }
C.嵌套的字典數據類型可以用來表達高維數據。
D.元組中的元素可以是列表。
- 分析:
- 創建空的集合只能使用aset = set(),花括號是字典,圓括號是元組,方括號是列表
- 單選(2分)
以下代碼的輸出結果是(A)。
data=[1, 0, 2, 0, 0]
data.remove(0)
print(data)
A.[1, 2, 0, 0]
B.[0, 2, 0, 0]
C.[1, 0, 2, 0]
D.[1, 2]
- 分析:
- 題目列表裏面的都是int型的數字,我給了一個字符串型的,發現識別不了,還是數據類型一致纔可以
- 不是按照索引刪除的,是按照匹配是否有相同元素
- 單選(2分)
Python中可以用來解析HTML和XML的第三方庫是(A)。
A.beautiful soup
B.requests
C.numpy
D.jieba8
- 分析:
- requests是相服務器發送請求獲取相應
- beautiful soup是 解析HTML和XML第三方庫的,屬於網絡爬蟲那章
- numpy是 Python 語言的一個擴展程序庫,支持大量的維度數組與矩陣運算,此外也針對數組運算提供大量的數學函數庫。
- jieba8:是python的一箇中文分詞庫
- 以下關於Python的循環結構說法錯誤的是(D)。
A.for循環中被遍歷的部分可以是字符串、文件、組合數據類型和range()函數等。
B.break語句用來跳出當前層次的for或者while循環。
C.以下代碼的輸出包含3個不同的數。
n=4
while n >=0:
n=n-1
if n<1:
break
print(n)
D.continue語句用來跳出當前層次的的for或者while循環。
- 分析
- 單選(2分)
以下代碼的輸出結果是(A)。
print([i**i for i in range(5) if i%2!=0])
A.[1, 27]
B.[1, 9]
C.會報錯
D.[1, 27, 3125]
- 分析:
- 這是推導式,翻譯成正常的語言就是如下,你別算錯就行了
alist = list()
for i in range(5):
if i % 2 == 0:
alist.append(i ** i)
print(alist)
- 單選(2分)
關於Python中的面向對象說法錯誤的是(A)。
A.__str__方法和__repr__方法作用完全一樣,都可以用來返回一個表示對象的字符串。
B.__init__方法根據類的定義創建實例對象,第一個參數一定是self。
C.創建對象後使用點(.)操作符來調用對象裏的方法。
D.Python中利用class語句來定義新的類。
- 分析:
- __str()__是返回對對象的描述信息,返回的是一個字符串,是對這個對象的描寫。類似java中的tostring方法
- __repr()__是返回類的自我描述信息,直接打印類的實例化對象時,系統會輸出對象的自我描述信息
def __str__(self):
"""返回一個對象的描述信息"""
# print(num)
return "名字是:%s , 年齡是:%d" % (self.name, self.age)
- 多選(3分)
以下關於Python中程序流程結構說法正確的是(ABD)。
A.可以用if…elif…else語句實現多個分支的結構。
B.程序流程包括順序、條件分支和循環三種基本結構。
C.可以利用switch…case語句實現多個分支的結構。
D.else語句可以出現在if、while和for語句中。
- 分析:
- python中沒有switch—case語句
- else語句
- while語句
- for語句
- 多選(3分)
以下關於Python中數值類型說法正確的是(ACD)。
A.以下代碼的輸出結果是2。
a=2.9
print(int(a))
B.Python語言要求所有浮點數必須帶有小數部分,且小數部分不能爲0。
C.在IDLE Shell裏輸入0.1+0.2==0.3返回False。
D.Python中複數類型的實部和虛部都是浮點數。
- 分析:
-
python中浮點數,精度是時53位,小數可以爲零,精確表達爲什麼不能爲0,正數部分也可以爲零
-
python中複數
- 虛部不會單獨存在
- 實數部分和虛數部分必須得是浮點數
- 虛數部分必須加上j或者J
-
int()函數,是直接捨棄小數部分
-
- 多選(3分)
關於以下代碼說法正確的是(CD)。
class Student:
def language(self):
print ("All the students like Python")
class Mary(Student):
def work(self):
print("Mary is programming")
class Tom(Student):
def language(self):
print("Tom likes JAVA")
mary = Mary()
tom = Tom()
A.tom.work()會打印出Tom is programming
B.tom.language()會打印出All the students like Python
C.tom.language()會打印出Tom likes JAVA
D.mary.language()會打印出All the students like Python
- Tom繼承Student類,但是已經重寫了的language方法
- Mary繼承Student類,並沒有重寫language方法,但是可以調用父類的方法。同時自己豐富了子類的方法,可以自己單獨調用
- 多選(3分)
關於Python中的函數,下列說法正確的是(ABCD)。
A.函數可以賦值給一個變量。
B.函數可以作爲參數值傳遞給其他函數。
C.函數可以作爲函數的返回值。
D.函數可以作爲對象添加到集合對象中。
- 分析:
- 函數本身就有返回值,爲什麼不可以
- 多選(3分)
給變量a賦值如下:
a = (0, 1, 2, 3)
下列後續操作合法的是(ABD)。
A.b = a[1:-1]
B a = a * 3
C.a[2] = 4
D.b = list(a)
- 分析:
-
元組的相關操作
-
- 多選(3分)下面代碼中輸出結果爲0、1、2三個數字的有(AD)。
A
for i in range(3):
print(i)
B.
i=1
while i<3:
print(i)
i+=1
C.
i=3
while i>1:
i=i-1
print(3-i)
D.
for i in range(3,0,-1):
print(3-i)
- 分析
- range(start,end,step),左閉右開區間,右邊是取不到的
- 多選(3分)
以下關於Python高級特性說法正確的是(CD)。
A.Python中可以用異常處理捕獲程序中的所有錯誤。
B.try語句中有except子句就不能有finally子句。
C.生成器函數與普通函數相同,只是將return換成了yield。
D.生成器是用來創建Python序列的一個對象,通常用來爲迭代器產生數據。
- 分析
- 錯誤分爲兩類,語義錯誤和語法錯誤,最多隻能檢查出語法錯誤,常見的可查出的錯誤類型
- finally是一定會執行的語句,都可以用finally,
- else時沒有出錯纔會執行的語句
- 錯誤分爲兩類,語義錯誤和語法錯誤,最多隻能檢查出語法錯誤,常見的可查出的錯誤類型
- 生成器函數
- 多選(3分)
以下關於Python中模塊的說法正確的是(CD)。
A.datetime模塊中strptime方法將struct_time對象格式化成字符串。
B.可以利用matplotlib中的hist()方法來繪製散點圖。
C.文件操作中readline函數表示讀取文件的下一行,返回一個字符串。
D.PIL圖像庫可以實現對圖像的模糊處理。
- 分析:
- strptime是將固定格式的字符串變爲struct_time對象
- hist是繪製直方圖的,scatter是繪製散點圖的
- 多選(3分)
以下關於Python中random模塊的說法正確的是(BCD)。
A.uniform(0,1)與uniform(0.0,1.0)的輸出結果不同,前者輸出隨機整數,後者輸出隨機小數。
B.通過from random import *引入random庫的全部函數。
C.randint(a,b)是生成一個[a,b]之間的整數,可能包括a和b。
D.設定相同的隨機種子,每次調用隨機函數生成的隨機數相同。
- 分析
- uniform(x,y)是隨機生成[x,y]之間的實數,通過random的靜態對象調用該方法,是生成相關的小數
- uniform(x,y)是隨機生成[x,y]之間的實數,通過random的靜態對象調用該方法,是生成相關的小數
- 多選(3分)
以下關於Python中內置函數的說法正確的是(ABD)。
A.len()返回對象包含元素的個數,參數可以是字符串,元組,列表和字典。
B.type()返回一個對象的類型。
C.sorted(alist)可以對列表alist進行排序,並將排序後的結果寫回到列表alist中。
D.print(int(abs(-3 + 4j)))的結果爲5。
- 分析:
- sroted()不修改原來的數據對象,返回一個新的數據對象