正在準備內容……

Python 測驗

閱讀24段原創Python程式,預測輸出或執行前語法錯誤。免費檢視四組正確數、全部答案、逐題解析與四篇完整指南;按CPython 3.14.5核驗,不計時,不用註冊。

24 題 · 約 10 分鐘 · 無需註冊原創練習題 · 逐題解析與複習指南免費

每段按CPython 3.14.5核過的獨立.py指令碼閱讀,選擇準確列印文本或執行前語法錯誤結果,縮排屬於程式碼。程式使用虛構ASCII值,無外部輸入、檔案、網路、第三方庫或假定集合迭代順序。兩語保留相同程式碼、標點及布林拼寫,說明解析雙語。無計時或速度獎勵,24題有效選擇前不顯示個人正確數。若查資料,按該條件理解本次練習。

圍繞值與文本、迴圈與函式、集合與別名、錯誤與物件四組各六題,練習閱讀獨立Python指令碼。按CPython 3.14.5條件與實際縮排判斷輸出或執行前的解析失敗。完成24題後免費檢視全部程式碼、所選、答案與逐題解析、四篇完整複習指南。

Python 測驗練什麼?四類核心程式碼閱讀

24道原創選擇題分為值與文本、迴圈與函式、集合與別名、錯誤與物件四組,每組六題。你需要判斷給定指令碼列印什麼,或是否在執行前解析失敗;完成後可免費檢視四組正確數、全部程式碼、所選、答案、解析與四篇完整複習指南。約10分鐘為閱讀估計,沒有倒數計時。

本版通過具體輸入下的語義與執行路徑複習Python,不要求提交程式碼、上傳檔案或安裝直譯器。題目不含NumPy、Pandas、機器學習、Web框架或真實資料處理;理解一段短程式,與獨立編寫、測試及維護應用是不同任務。希望複習基礎的讀者可先獨立預測,再按完整解析定位需要重看的規則。

先固定指令碼條件:版本、縮排與準確輸出

每段作為CPython 3.14.5下的獨立.py指令碼閱讀,題間不共享變數、物件或函式。縮排、冒號和引數列表屬於程式本身,不能在心裡先補齊再預測。互動直譯器可能顯示錶達式值,本題的獨立指令碼則只按實際print等語句輸出;布林值拼寫與分隔符也要逐項核對。

本輪按該精確直譯器重跑全部24段:22段輸出匹配答案,兩段按預期無法通過解析。可復算支援這些給定程式的答案,不等於核過所有直譯器、庫或最新語言特性。參考連結使用Python 3.14文件,其線上維護版本可能繼續更新;複習仍以題中明確的指令碼環境為準。

值與文本:負數整除、切片與真值分別判斷

整數//向負無窮取整,不是朝零截斷,且商餘關係可用x=(x//y)*y+x%y複核。[1] 新例-23除以6,向下取整商為-4、餘數為1,因為-23=(-4)*6+1。乘方、加法和括號又是另一組規則;應先寫運算子與分組,再算值,不照搬其他語言的整數除法習慣。

新例"planet"[1:5:2]取索引1、3,得到ln;" blue / green ".split("/")[1].strip()則先取第二段,再去兩端空白,得到green。文本"False"非空,其bool為True,空字串才為False。位置、文本內容、是否為空是不同資訊,不能因文字看起來是否定就當作布林False。

迴圈與函式:分開迭代、定義、呼叫和返回

先列range真正產生的值,再檢查哪輪到達累加器。新例range(1,10,3)給1、4、7,若n為4時continue,則只累加1與7得8。continue跳過當前輪餘下步驟,break才結束迴圈;終點10不加入。[2] 對函式呼叫也應先算實際返回值,再算呼叫處外層表示式,return不等於print。

預設值表示式在執行函式定義時求值,不是每次無參呼叫時重算。[2] 新例seed=6時定義shift(n=seed)返回n*2,再令seed=20,shift()得到12,而shift(seed)得到40。分別標定義事件、後續重繫結和顯式傳參;若預設值是可變物件,還需追蹤物件是否被多次呼叫共享。

集合與別名:區分名稱、外層與共享內層

賦值可讓兩個名稱指向同一列表;list.copy則建立新的淺層列表。[3] 新例source=[[5]],other=source.copy()後執行other.append([9]),僅other外層長度變2,source仍長1;隨後other[0].append(8),source內層末值也為8。外層獨立與內層共享可以同時成立,不能把淺複製讀成“所有修改都共享”或“全部遞迴獨立”。

追蹤時分別畫外層列表與實際內層物件,只把共享物件畫一次。is核對象身份,不能用相同列印值替代;兩個獨立例項可能有相等的數值屬性,仍不是同一個例項。題本只涉及所示普通物件和屬性,不把這幾道題擴充套件為任意自定義相等方法、描述符或所有複製策略的結論。

字典與推導式:返回值、狀態和篩選邊界分列

新例d={"sun":2},d.get("moon",9)返回9而不插入,條目數仍1;再令d["sun"]=7,當前值變7,條目數仍1。按已有鍵更新、缺失鍵get與缺失鍵下標訪問,是不同操作。集合則只計保留的不同成員,本版只問長度,不要求猜集合顯示或迭代順序。

推導式要按順序寫迭代值、過濾條件與變換結果。[3] 新例對range(2,8)只保留n%2為真的數,再各加10,按逗號連線為13,15,17;它不是把2至8全部加10,也不額外帶列表方括號。核最終文本前,先看join的輸入是否已轉字串,以及print是否明確指定分隔符。

語法與異常:先判發生階段,再走匹配分支

有效指令碼執行時仍可能拋異常;語法失敗則會阻止該獨立指令碼開始執行。[4] 新例把int("sprout")放進try,匹配ValueError後記recover,finally記finish,輸出recover:finish。處理器是否到達取決於實際異常類和繼承關係,不由錯誤訊息看起來像什麼決定;finally也不限於發生錯誤才執行。

讀題可按“整段能解析嗎→執行到哪步→拋了什麼→哪個處理器匹配→清理後列印什麼”列軌跡。不要暗修缺冒號或引數順序,也不要把函式返回None當成語法失敗的輸出。題目給定的明確異常分支,不足以證明能處理真實服務中的所有異常或建立完整錯誤策略。

with與生成器:清理的前提和迭代實際消費的值

with須先成功執行__enter__,再執行主體與退出邏輯;若__enter__本身拋錯,不能直接套用退出保證。[5] 新例Door在進入時先記setup再拋RuntimeError,外層捕獲記caught,即使__exit__中寫了cleanup,軌跡仍只有setup:caught,沒有body或cleanup。應把“進入成功”和“進入失敗”作為兩條路徑分別預測。

生成器的yield與return也有不同作用。[1] 新例先yield 3、再yield 8、最後return 40;list消費得到[3,8],sum在新建的另一生成器上得到11,而非51。生成器返回值不是本次普通迭代又產出一個元素。閱讀例項或生成器時,每次建立、每次消費與物件身份均應單獨記錄。

正確數怎樣解讀?逐題回顧與新程式碼遷移

每個匹配答案計1,其他有效選擇計0,四組各0–6合成0–24,沒有倒扣、速度獎勵或部分分。新算例[4,2,5,3]與[2,5,3,4]均為14,但複習位置不同。完成後全部24條解析與四篇各七節指南都開放;總數不能獨立辨別語言閱讀、邊界、別名或異常路徑中的哪一步出錯。

先寫預測,再讀解析,找到最早偏離的一步,最後只改變一個條件重寫小程式。文件和直譯器執行可核程式碼結果。[1][2][3][4][5] 但本題本尚無開發者常模、招聘效標或跨語言等值研究,不派初中高檔位、百分位、職務推薦或證書。固定題重測可反映記憶;想看是否能遷移,應換未見程式碼並記錄查閱資料的條件。

分項複習指南

  • 值與文本

    複習負數向下取整除法、餘數、乘方、切片、分隔去空白及真值。

  • 迴圈與函式

    複習帶步長範圍、continue、返回表示式、定義時預設值及兩種語法失敗。

  • 集合與別名

    複習列表身份、淺複製、字典更新和預設查詢、集合大小與篩選推導式。

  • 錯誤與物件

    複習異常匹配、finally、例項屬性、上下文成功進入及生成器產出。

計分方法與使用範圍

按四組統計匹配答案

每個匹配答案計一道正確,其他有效選項計零。四組六題合成正確數/24,無加權、部分分、反向計分或時間獎勵。24題有效選擇前不給個人正確數,不默補缺答。

檢視全部程式、答案與逐題解釋

報告保留每段原創程式、所選、正確答案與解析。零分、部分答對、全對均給四份全文;分項3/6只是所給六題三個匹配答案,不是百分位、開發者等級、僱主通過線或資格。

採用宣告的指令碼環境

題組按CPython 3.14.5的獨立指令碼核驗,選定Python 3.14文件提供參考,不聲稱最新特性覆蓋或所有直譯器、庫相容。不評應用開發、真實資料處理或生產事故診斷。重測重複題組,約十分鐘是編輯估計,不是實測計時基準。

原創程式與已核結果

費馬編寫片段、干擾項、解析及指南,連結說明選定語言規則,不搬其例程或專有招聘題。本獨立練習無廠商背書或認證,網站把程式碼作轉義文本顯示,並在本地核選擇,不執行訪問者指令碼。

常見問題

採用哪個Python版本與執行方式?

每段是按CPython 3.14.5核過的獨立.py指令碼,縮排有意義。題目採用選定核心行為,無外部輸入、檔案、網路、第三方庫或猜測集合順序,不聲稱所有直譯器相容。

需要安裝Python或上傳檔案嗎?

不用。讀所顯示程式並選結果,網站不執行訪問者指令碼、不要求上傳、不檢視私有檔案。兩語程式碼及輸出值相同,說明與解析雙語。

正確數會派開發者等級或資格嗎?

不會。這裡只統計原創題組中的匹配答案,不派驗證過的初級至專家檔位、常模、招聘線、職業匹配或廠商資格。識別可見結果不同於獨立開發維護軟體。

全部解析與四份完整指南免費嗎?

是。24題有效選擇後可讀每段程式碼、所選、答案及解析,開測前也可讀四份公開全文,不用註冊、電子郵件、付款或購買證書。

計時嗎,重測會換題嗎?

無計時或速度獎勵,約十分鐘是編輯估計。重測重複固定題組,不提供經校準平行題本。讀過答案後宜換小程式,重測提高可來自記憶。

草稿和分享連結怎樣處理?

答案留在瀏覽器,可選標籤頁草稿24小時失效,完成、退出清除或重測時刪除;未存草稿則重新整理丟進度。分享只有公開練習連結,不含答案、正確數或私有標識。

這是Python知識選擇題還是現場程式設計測試?

這是固定的24題讀程式碼預測練習,不需提交程式或上傳檔案。正確數記錄對給定結果的選擇,與獨立實現功能、通過測試用例或維護專案不同。

負數//為什麼可能和其他語言的整數除法不同?

本版整數//向負無窮取整,不朝零截斷。以-23和6為例,商-4、餘1,滿足-23=(-4)*6+1。先核所用語言與運算子,再比較結果。[1]

函式預設值是否每次呼叫都重新求值?

不是。預設表示式在執行定義時求值,後續名稱重繫結不會替換已儲存的預設值;可變預設物件還可能在呼叫之間共享。須分別看定義、實參和物件修改。[2]

copy建立新列表,為什麼內層資料還能一起改變?

list.copy是淺複製:外層新建,元素仍引用原物件。改共享內層可雙方可見;只給新外層追加元素則不等於給原外層追加。先確定修改的是哪一層。[3]

字典get提供預設值會自動增加這個鍵嗎?

在題本普通字典中不會。get返回預設值但不插入;已有鍵賦值是更新,缺失鍵下標訪問則會拋KeyError。別把不同方法的行為合併。

with是否總會呼叫__exit__?

不能脫離條件。__enter__成功返回後才有相應退出保證;進入自身拋錯時,主體和該退出呼叫不會照常執行。具體是否壓制主體異常,還取決於__exit__的返回值。[5]

生成器return後面的數字會被sum加進去嗎?

不會把它當作另一次yield。本版普通迭代只消費實際產出的值,return結束生成器,返回值有不同角色。還要區分新建生成器和重複消費同一物件。[1]

中英文使用同一程式碼,是否表示分數完全等值?

不建立測量等值。程式碼、答案和結構保持相同,說明理解、閱讀條件和原題接觸仍可能影響作答。記錄語言、是否查資料以及是否重測,再解釋自己的練習結果。

參考資料