2025年P(guān)ython編程實戰(zhàn)技巧專項訓(xùn)練試卷_第1頁
2025年P(guān)ython編程實戰(zhàn)技巧專項訓(xùn)練試卷_第2頁
2025年P(guān)ython編程實戰(zhàn)技巧專項訓(xùn)練試卷_第3頁
2025年P(guān)ython編程實戰(zhàn)技巧專項訓(xùn)練試卷_第4頁
2025年P(guān)ython編程實戰(zhàn)技巧專項訓(xùn)練試卷_第5頁
已閱讀5頁,還剩11頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

2025年P(guān)ython編程實戰(zhàn)技巧專項訓(xùn)練試卷考試時間:______分鐘總分:______分姓名:______一、1.編寫一個Python函數(shù),接收一個字符串列表作為參數(shù),返回一個新列表,其中包含原列表中所有長度大于3的字符串,并將這些字符串轉(zhuǎn)換為大寫形式。2.使用列表推導(dǎo)式,從一個包含整數(shù)的列表中過濾出所有偶數(shù),并返回它們的平方組成的列表。二、1.定義一個名為`Book`的類,包含私有屬性`_title`和`_author`。提供構(gòu)造方法初始化這些屬性。添加公共方法`get_title()`和`get_author()`用于獲取屬性值。添加一個設(shè)置作者的方法`set_author(new_author)`,但不允許修改標(biāo)題。2.在`Book`類中,添加一個特殊方法`__str__()`,當(dāng)嘗試將`Book`對象轉(zhuǎn)換為字符串時(例如使用`print()`),返回格式為“`Title:[title],Author:[author]`”的字符串。三、1.編寫一個函數(shù)`count_vowels(s)`,接收一個字符串`s`作為參數(shù),返回字符串中元音字母(a,e,i,o,u,不區(qū)分大小寫)的數(shù)量。2.使用`itertools`模塊中的`chain`函數(shù),將三個不同的列表`[1,2,3]`,`['a','b']`,`[True,False]`連接成一個迭代器,并遍歷打印出所有元素。四、1.模擬一個簡單的文件讀寫操作。首先,創(chuàng)建一個包含幾行文本的字符串`data`。然后,將`data`寫入一個名為`sample.txt`的文本文件中,使用`with`語句確保文件正確關(guān)閉。接著,從`sample.txt`讀取內(nèi)容,并將其存儲到一個新的字符串變量中,最后打印出讀取的內(nèi)容。2.使用Python的`json`模塊,將以下Python字典轉(zhuǎn)換為JSON格式的字符串,并保存到名為`data.json`的文件中:```pythonperson={"name":"Alice","age":30,"city":"NewYork","is_student":False}```五、1.定義一個函數(shù)`find_max_min(numbers)`,接收一個非空數(shù)字列表`numbers`作為參數(shù),返回一個包含兩個元素的元組,第一個元素是列表中的最大值,第二個元素是列表中的最小值。2.編寫一個生成器函數(shù)`even_numbers(n)`,接收一個正整數(shù)`n`,生成從0到`n`(包含`n`,如果`n`是偶數(shù))的所有偶數(shù)。六、1.假設(shè)有一個字符串`s="helloworldpythonprogramming"`)。編寫代碼找到并打印出`s`中最長的單詞。2.使用`collections`模塊中的`Counter`類,統(tǒng)計字符串`s`(同上)中每個字母出現(xiàn)的次數(shù),并打印出結(jié)果。忽略大小寫和非字母字符。七、1.定義一個裝飾器`@timer`,用于測量被它裝飾的函數(shù)的執(zhí)行時間。要求裝飾器打印出函數(shù)的名稱和執(zhí)行所需的時間(以秒為單位)。2.應(yīng)用`@timer`裝飾器到一個名為`calculate_sum`的函數(shù)上,該函數(shù)接收一個數(shù)字列表并返回它們的總和。然后調(diào)用`calculate_sum([1,2,3,4,5])`觀察輸出。八、1.定義一個名為`Employee`的類,包含公有屬性`name`和`salary`。在類外部定義一個函數(shù)`give_raise(employee,amount)`,接收一個`Employee`對象和一個數(shù)值`amount`,將員工的`salary`增加`amount`的值。2.定義一個名為`Rectangle`的類,包含公有屬性`width`和`height`。在類中定義一個方法`area()`,返回矩形的面積。再定義一個方法`perimeter()`,返回矩形的周長。九、1.編寫一個函數(shù)`remove_duplicates(lst)`,接收一個列表`lst`作為參數(shù),返回一個新列表,其中包含`lst`中的所有唯一元素,保持原有順序。2.使用`datetime`模塊,獲取當(dāng)前日期和時間,然后格式化成字符串,格式為“`YYYY-MM-DDHH:MM:SS`”。十、1.嘗試執(zhí)行以下代碼,并寫出最終輸出的結(jié)果以及遇到的具體錯誤信息(如果有的話):```pythondefdivide(a,b):try:result=a/bexceptZeroDivisionError:print("Error:Divisionbyzero.")exceptTypeError:print("Error:Invalidtype.")else:print("Divisionsuccessful.")returnresultfinally:print("Executioncomplete.")print(divide(10,0))print(divide("10",2))```2.使用`logging`模塊,配置一個日志記錄器,設(shè)置級別為`INFO`,日志格式為“`[%(asctime)s]%(levelname)s-%(message)s`”,并將以下兩行信息記錄到名為`app.log`的文件中:```python"Userloggedin.""Userperformedsearchquery."```試卷答案一、1.```pythondefcapitalize_long_words(words_list):return[word.upper()forwordinwords_listiflen(word)>3]```解析思路:使用列表推導(dǎo)式。首先遍歷`words_list`中的每個`word`,條件是`len(word)>3`(篩選出長度大于3的單詞),然后對滿足條件的`word`執(zhí)行`upper()`方法將其轉(zhuǎn)換為大寫,最后生成包含所有滿足條件的、已轉(zhuǎn)換為大寫的單詞的新列表。2.```pythondefeven_squares(numbers_list):return[num2fornuminnumbers_listifnum%2==0]```解析思路:使用列表推導(dǎo)式。遍歷`numbers_list`中的每個`num`,條件是`num%2==0`(篩選出偶數(shù)),然后對滿足條件的`num`執(zhí)行`2`計算其平方,最后生成包含所有偶數(shù)平方的新列表。二、1.```pythonclassBook:def__init__(self,title,author):self._title=titleself._author=authordefget_title(self):returnself._titledefget_author(self):returnself._authordefset_author(self,new_author):self._author=new_author```解析思路:定義`Book`類,使用`__init__`方法初始化私有屬性`_title`和`_author`。`get_title()`和`get_author()`方法分別返回對應(yīng)的私有屬性值。`set_author(new_author)`方法允許外部修改`_author`屬性的值,但只提供修改作者的方法,通過不定義修改標(biāo)題的方法來限制標(biāo)題的修改。2.```pythonclassBook:#...(其他方法保持不變)def__str__(self):returnf"Title:{self._title},Author:{self._author}"```解析思路:在`Book`類中添加特殊方法`__str__()`。該方法不接受參數(shù),返回一個格式化的字符串,包含書名和作者信息。當(dāng)使用`print()`函數(shù)打印`Book`對象時,Python會自動調(diào)用這個`__str__()`方法,從而得到友好的字符串表示。三、1.```pythondefcount_vowels(s):vowels="aeiouAEIOU"count=0forcharins:ifcharinvowels:count+=1returncount```解析思路:定義`count_vowels`函數(shù),接收字符串`s`。定義一個包含所有小寫和大寫元音字母的字符串`vowels`。初始化計數(shù)器`count`為0。遍歷字符串`s`中的每個字符`char`,檢查`char`是否存在于`vowels`中。如果存在,則`count`加1。遍歷結(jié)束后返回`count`的值。2.```pythonfromitertoolsimportchainlist1=[1,2,3]list2=['a','b']list3=[True,False]combined=chain(list1,list2,list3)foritemincombined:print(item)```解析思路:首先從`itertools`模塊導(dǎo)入`chain`函數(shù)。創(chuàng)建三個列表`list1`,`list2`,`list3`。使用`chain`函數(shù)將這三個列表連接成一個迭代器`combined`。`chain`函數(shù)可以將多個可迭代對象串聯(lián)起來,使其在迭代時按順序產(chǎn)出元素。最后使用一個`for`循環(huán)遍歷`combined`迭代器,并打印出每個元素。四、1.```pythondata="Line1\nLine2\nHelloPython\n"withopen("sample.txt","w")asfile:file.write(data)withopen("sample.txt","r")asfile:content=file.read()print(content)```解析思路:首先定義一個包含多行文本的字符串`data`,每行結(jié)尾使用`\n`換行符。使用`withopen("sample.txt","w")asfile:`語句打開(或創(chuàng)建)文件`sample.txt`用于寫入(`w`模式),確保文件在操作完成后自動關(guān)閉。調(diào)用`file.write(data)`將`data`字符串寫入文件。再次使用`withopen("sample.txt","r")asfile:`語句以讀取(`r`模式)模式打開文件。調(diào)用`file.read()`讀取文件的全部內(nèi)容到變量`content`中。最后打印`content`。2.```pythonimportjsonperson={"name":"Alice","age":30,"city":"NewYork","is_student":False}withopen("data.json","w")asfile:json.dump(person,file)```解析思路:首先導(dǎo)入`json`模塊。定義一個字典`person`,包含需要序列化的數(shù)據(jù)。使用`withopen("data.json","w")asfile:`語句打開(或創(chuàng)建)文件`data.json`用于寫入。調(diào)用`json.dump(person,file)`函數(shù),將字典`person`轉(zhuǎn)換為JSON格式的字符串,并直接寫入到文件`file`中。`dump`函數(shù)會自動處理轉(zhuǎn)義字符等細節(jié)。五、1.```pythondeffind_max_min(numbers):max_num=max(numbers)min_num=min(numbers)return(max_num,min_num)```解析思路:定義`find_max_min`函數(shù),接收列表`numbers`。使用內(nèi)置函數(shù)`max(numbers)`找到列表中的最大值,賦值給變量`max_num`。使用內(nèi)置函數(shù)`min(numbers)`找到列表中的最小值,賦值給變量`min_num`。最后返回一個包含這兩個值的元組`(max_num,min_num)`。2.```pythondefeven_numbers(n):foriinrange(0,n+1,2):yieldi```解析思路:定義生成器函數(shù)`even_numbers`,接收正整數(shù)`n`。使用`range(0,n+1,2)`生成一個從0開始到`n`(包含`n`,如果`n`是偶數(shù))的序列,步長為2,這樣只會生成偶數(shù)。函數(shù)體內(nèi)部使用`yieldi`語句,每次循環(huán)將當(dāng)前的偶數(shù)`i`yield出去,使得調(diào)用者可以逐個獲取這些偶數(shù),而不是一次性返回所有偶數(shù)。六、1.```pythons="helloworldpythonprogramming"words=s.split()longest_word=max(words,key=len)print(longest_word)```解析思路:首先定義字符串`s`。使用字符串的`split()`方法將`s`按空白字符分割成一個單詞列表`words`。使用內(nèi)置函數(shù)`max()`找到`words`列表中長度最長的元素。`max()`函數(shù)的`key`參數(shù)設(shè)置為`len`,表示比較元素時依據(jù)元素的長度。`max(words,key=len)`返回列表中最長的單詞,將其賦值給`longest_word`。最后打印`longest_word`。2.```pythonfromcollectionsimportCounterimportstrings="helloworldpythonprogramming"filtered_chars=[charforcharinsifchar.isalpha()]#過濾非字母字符并轉(zhuǎn)為小寫char_counts=Counter(filtered_chars.lower())#統(tǒng)計字母出現(xiàn)次數(shù)print(char_counts)```解析思路:首先從`collections`模塊導(dǎo)入`Counter`類。定義字符串`s`。使用列表推導(dǎo)式`[charforcharinsifchar.isalpha()]`遍歷`s`中的每個字符`char`,只保留字母字符,并生成一個只含字母的列表。使用`lower()`方法將所有字母轉(zhuǎn)換為小寫,確保統(tǒng)計時不區(qū)分大小寫。將處理后的列表`filtered_chars.lower()`傳遞給`Counter()`構(gòu)造函數(shù),`Counter`會統(tǒng)計列表中每個元素出現(xiàn)的次數(shù),結(jié)果是一個字典樣式的對象,其中鍵是字符,值是計數(shù)。最后打印`char_counts`對象。七、1.```pythonimporttimedeftimer(func):defwrapper(*args,kwargs):start_time=time.time()result=func(*args,kwargs)end_time=time.time()print(f"{func.__name__}took{end_time-start_time:.6f}seconds.")returnresultreturnwrapper```解析思路:定義一個裝飾器函數(shù)`timer`,它接收一個函數(shù)`func`作為參數(shù)。`timer`內(nèi)部定義了一個包裝函數(shù)`wrapper`,它接受任意參數(shù)`*args`和關(guān)鍵字參數(shù)`kwargs`,以便能調(diào)用任何函數(shù)。在`wrapper`內(nèi)部,首先記錄開始時間`start_time`(使用`time.time()`)。然后調(diào)用原始函數(shù)`func(*args,kwargs)`,并將結(jié)果存儲在`result`中。之后記錄結(jié)束時間`end_time`。計算運行時間`end_time-start_time`,并打印函數(shù)名稱和運行時間(格式化為小數(shù)點后6位)。最后返回原始函數(shù)的執(zhí)行結(jié)果`result`。`timer`函數(shù)返回`wrapper`函數(shù)。使用`@timer`裝飾器時,Python會自動將裝飾的函數(shù)傳遞給`timer`,并將`wrapper`返回值賦給原函數(shù)名。2.```python@timerdefcalculate_sum(numbers_list):returnsum(numbers_list)#調(diào)用函數(shù)觀察輸出calculate_sum([1,2,3,4,5])```解析思路:使用`@timer`裝飾器標(biāo)記`calculate_sum`函數(shù)。`calculate_sum`函數(shù)接收一個數(shù)字列表`numbers_list`,返回其總和(使用內(nèi)置函數(shù)`sum()`)。當(dāng)調(diào)用`calculate_sum([1,2,3,4,5])`時,實際執(zhí)行的是`wrapper([1,2,3,4,5])`(其中`wrapper`是`timer`裝飾器生成的)。`wrapper`函數(shù)會先打印`calculate_sum`的執(zhí)行時間,然后計算并返回列表的總和`15`。八、1.```pythonclassEmployee:def__init__(self,name,salary):=nameself.salary=salarydefgive_raise(employee,amount):employee.salary+=amount```解析思路:定義`Employee`類,包含公有屬性`name`和`salary`。在`__init__`構(gòu)造方法中初始化這兩個屬性。定義函數(shù)`give_raise`,接收一個`Employee`對象`employee`和一個數(shù)值`amount`。通過直接訪問`employee.salary`屬性并對其加`amount`,來增加員工的薪水。2.```pythonclassRectangle:def__init__(self,width,height):self.width=widthself.height=heightdefarea(self):returnself.width*self.heightdefperimeter(self):return2*(self.width+self.height)```解析思路:定義`Rectangle`類,包含公有屬性`width`和`height`。在`__init__`方法中初始化這兩個屬性。定義方法`area()`,計算矩形的面積,即寬乘以高,并返回結(jié)果。定義方法`perimeter()`,計算矩形的周長,即兩倍于(寬加高),并返回結(jié)果。九、1.```pythondefremove_duplicates(lst):seen=set()result=[]foriteminlst:ifitemnotinseen:seen.add(item)result.append(item)returnresult```解析思路:定義`remove_duplicates`函數(shù),接收列表`lst`。創(chuàng)建一個空集合`seen`用于記錄已遇到的元素。創(chuàng)建一個空列表`result`用于存儲最終的無重復(fù)元素。遍歷列表`lst`中的每個元素`item`。檢查`item`是否不在`seen`集合中。如果不在,說明這是第一次遇到該元素,將其添加到`seen`集合和`result`列表中。如果已存在于`seen`中,則跳過該元素。遍歷結(jié)束后返回`result`列表。使用集合`seen`可以高效地檢查元素是否已出現(xiàn)過。2.```pythonfromdatetimeimportdatetimenow=datetime.now()formatted_time=now.strftime("%Y-%m-%d%H:%M:%S")print(formatted_time)```解析思路:從`datetime`模塊導(dǎo)入`datetime`類。調(diào)用`datetime.now()`獲取當(dāng)前的日期和時間,得到一個`datetime`對象。使用`strftime`方法將`datetime`對象格式化為字符串。`%Y-%m-%d%H:%M:%S`是格式化字符串,分別代表四位年份、兩位月份、兩位日期、兩位小時(24小時制)、兩位分鐘、兩位秒。`strftime`方法根據(jù)這個格式將日期時間對象轉(zhuǎn)換為相應(yīng)的字符串。最后打印格式化后的時間字符串。十、1.```python#最終輸出結(jié)果:#Divisionsuccessful.#Executioncomplete.#Error:Divisionbyzero.#Executioncomplete.#Error:Invalidtype.#Executioncomplete.#具體錯誤信息:#Traceback(mostrecentcalllast):#File"<stdin>",line1,in<module>#TypeError:unsupportedoperandtype(s)for/:'str'and'int'```解析思路:*`divide(10,0)`:進入`divide`函數(shù)。執(zhí)行`a/b`時,`b`為0,觸發(fā)`ZeroDivisionError`。執(zhí)行`exceptZeroDivisionError:`塊,打印"Error:Divisionbyzero."。執(zhí)行`finally:`塊,打印"Executioncomplete."。函數(shù)返回`None`(雖然未顯示,但`returnresult`在`else`之后)。輸出第一部分。*`print(divide(10,0))`:打印函數(shù)返回值`None`(不顯示)。*`divide("10",2)`:進入`divide`函數(shù)。執(zhí)行`a/b`時,`a`為字符串"10"

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論