您現在的位置是:首頁 > 棋牌

Python 面試實訓 100 題,哪道難住了你?|文末附答案

  • 由 CSDN 發表于 棋牌
  • 2022-07-19
簡介作者 | 天元浪子責編 | maozz出品 | CSDN部落格程式語言雖然不是自然語言,細細琢磨的話,其實在很多方面也是符合傳統語言學(linguistics)規律的

半形逗號在鍵盤哪裡

Python 面試實訓 100 題,哪道難住了你?|文末附答案

作者 | 天元浪子

責編 | maozz

出品 | CSDN部落格

程式語言雖然不是自然語言,細細琢磨的話,其實在很多方面也是符合傳統語言學(linguistics)規律的。比如,程式語言也講究詞彙學(關鍵字),結構學(程式結構),句法(語法),語義(程式碼功能)等;在語言的學習方法上,程式語言和自然語言也高度相似。

回想一下學習英語的過程,都有這樣一個階段:語法都搞明白了,詞彙量也比英國農民多得多(據說英國的農民,平均詞彙量800,但我一直未找到資料驗證真偽),可就是說也說不出來,聽也聽不明白,急得捶胸頓足。再來看看初學者學習 Python 的情況,是不是也有這樣一個階段呢?基礎語法都學完了,可是讀別人的程式碼特別吃力,自己寫又茫茫然不知從何處著手。

為什麼會這樣呢?我給出的答案是:缺乏語感!何謂語感,專業的定義如下:語感,是比較直接、迅速地感悟語言的能力,是語言水平的重要組成部分,是對語言分析、理解、體會、吸收全過程的高度濃縮,是一種經驗色彩很濃的能力,其中牽涉到學習經驗、生活經驗、心理經驗、情感經驗,包含著理解能力、判斷能力、聯想能力等諸多因素。

以上就是我提出程式設計也要講“語感訓練”的理論基礎。語感訓練,並不等同於語法學習,也不是完整的小專案、小課題練習,而是針對程式設計實踐中經常遇到的字串處理、檔案讀寫、列表字典元組集合物件操作等基本技能進行訓練,幫助初學者建立語感。

一旦建立起了語感,初學者就可以專注於功能的實現,而不會隨時被一些小問題中斷思維。

Python 語感訓練涵蓋列表、字典、元組、集合、字串、格式化輸出、型別和整數轉換、檔案讀寫、雜項等9個類別,共100道練習題。

將元組 (1,2,3) 和集合 {4,5,6} 合併成一個列表。

在列表 [1,2,3,4,5,6] 首尾分別新增整型元素 7 和 0。

反轉列表 [0,1,2,3,4,5,6,7] 。

反轉列表 [0,1,2,3,4,5,6,7] 後給出中元素 5 的索引號。

分別統計列表 [True,False,0,1,2] 中 True,False,0,1,2的元素個數,發現了什麼?

從列表 [True,1,0,‘x’,None,‘x’,False,2,True] 中刪除元素‘x’。

從列表 [True,1,0,‘x’,None,‘x’,False,2,True] 中刪除索引號為4的元素。

刪除列表中索引號為奇數(或偶數)的元素。

清空列表中的所有元素。

對列表 [3,0,8,5,7] 分別做升序和降序排列。

將列表 [3,0,8,5,7] 中大於 5 元素置為1,其餘元素置為0。

遍歷列表 [‘x’,‘y’,‘z’],列印每一個元素及其對應的索引號。

將列表 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] 拆分為奇陣列和偶陣列兩個列表。

分別根據每一行的首元素和尾元素大小對二維列表 [[6, 5], [3, 7], [2, 8]] 排序。

從列表 [1,4,7,2,5,8] 索引為3的位置開始,依次插入列表 [‘x’,‘y’,‘z’] 的所有元素。

快速生成由 [5,50) 區間內的整陣列成的列表。

若 a = [1,2,3],令 b = a,執行 b[0] = 9, a[0]亦被改變。為何?如何避免?

將列表 [‘x’,‘y’,‘z’] 和 [1,2,3] 轉成 [(‘x’,1),(‘y’,2),(‘z’,3)] 的形式。

以列表形式返回字典 {‘Alice’: 20, ‘Beth’: 18, ‘Cecil’: 21} 中所有的鍵。

以列表形式返回字典 {‘Alice’: 20, ‘Beth’: 18, ‘Cecil’: 21} 中所有的值。

以列表形式返回字典 {‘Alice’: 20, ‘Beth’: 18, ‘Cecil’: 21} 中所有鍵值對組成的元組。

向字典 {‘Alice’: 20, ‘Beth’: 18, ‘Cecil’: 21} 中追加 ‘David’:19 鍵值對,更新Cecil的值為17。

刪除字典 {‘Alice’: 20, ‘Beth’: 18, ‘Cecil’: 21} 中的Beth鍵後,清空該字典。

判斷 David 和 Alice 是否在字典 {‘Alice’: 20, ‘Beth’: 18, ‘Cecil’: 21} 中。

遍歷字典 {‘Alice’: 20, ‘Beth’: 18, ‘Cecil’: 21},列印鍵值對。

若 a = dict(),令 b = a,執行 b。update({‘x’:1}), a亦被改變。為何?如何避免?

以列表 [‘A’,‘B’,‘C’,‘D’,‘E’,‘F’,‘G’,‘H’] 中的每一個元素為鍵,預設值都是0,建立一個字典。

將二維結構 [[‘a’,1],[‘b’,2]] 和 ((‘x’,3),(‘y’,4)) 轉成字典。

將元組 (1,2) 和 (3,4) 合併成一個元組。

將空間座標元組 (1,2,3) 的三個元素解包對應到變數 x,y,z。

返回元組 (‘Alice’,‘Beth’,‘Cecil’) 中 ‘Cecil’ 元素的索引號。

返回元組 (2,5,3,2,4) 中元素 2 的個數。

判斷 ‘Cecil’ 是否在元組 (‘Alice’,‘Beth’,‘Cecil’) 中。

返回在元組 (2,5,3,7) 索引號為2的位置插入元素 9 之後的新元組。

建立一個空集合,增加 {‘x’,‘y’,‘z’} 三個元素。

刪除集合 {‘x’,‘y’,‘z’} 中的 ‘z’ 元素,增j加元素 ‘w’,然後清空整個集合。

返回集合 {‘A’,‘D’,‘B’} 中未出現在集合 {‘D’,‘E’,‘C’} 中的元素(差集)。

返回兩個集合 {‘A’,‘D’,‘B’} 和 {‘D’,‘E’,‘C’} 的並集。

返回兩個集合 {‘A’,‘D’,‘B’} 和 {‘D’,‘E’,‘C’} 的交集。

返回兩個集合 {‘A’,‘D’,‘B’} 和 {‘D’,‘E’,‘C’} 未重複的元素的集合。

判斷兩個集合 {‘A’,‘D’,‘B’} 和 {‘D’,‘E’,‘C’} 是否有重複元素。

判斷集合 {‘A’,‘C’} 是否是集合 {‘D’,‘C’,‘E’,‘A’} 的子集。

去除陣列 [1,2,5,2,3,4,5,‘x’,4,‘x’] 中的重複元素。

返回字串 ‘abCdEfg’ 的全部大寫、全部小寫和大下寫互換形式。

判斷字串 ‘abCdEfg’ 是否首字母大寫,字母是否全部小寫,字母是否全部大寫。

返回字串 ‘this is python’ 首字母大寫以及字串內每個單詞首字母大寫形式。

判斷字串 ‘this is python’ 是否以 ‘this’ 開頭,又是否以 ‘python’ 結尾。

返回字串 ‘this is python’ 中 ‘is’ 的出現次數。

返回字串 ‘this is python’ 中 ‘is’ 首次出現和最後一次出現的位置。

將字串 ‘this is python’ 切片成3個單詞。

返回字串 ‘blog。csdn。net/xufive/article/details/102946961’ 按路徑分隔符切片的結果。

將字串 ‘2。72, 5, 7, 3。14’ 以半形逗號切片後,再將各個元素轉成浮點型或整形。

判斷字串 ‘adS12K56’ 是否完全為字母數字,是否全為數字,是否全為字母,是否全為ASCII碼。

將字串 ‘there is python’ 中的 ‘is’ 替換為 ‘are’。

清除字串 ‘\t python \n’ 左側、右側,以及左右兩側的空白字元。

將三個全英文字串(比如,‘ok’, ‘hello’, ‘thank you’)分行列印,實現左對齊、右對齊和居中對齊效果。

將三個字串(比如,‘Hello, 我是David’, ‘OK, 好’, ‘很高興認識你’)分行列印,實現左對齊、右對齊和居中效果。

將三個字串 ‘15’, ‘127’, ‘65535’ 左側補0成同樣長度。

提取 url 字串 ‘https://blog。csdn。net/xufive’ 中的協議名。

將列表 [‘a’,‘b’,‘c’] 中各個元素用’|‘連線成一個字串。

將字串 ‘abc’ 相鄰的兩個字母之間加上半形逗號,生成新的字串。

從鍵盤輸入手機號碼,輸出形如 ‘Mobile: 186 6677 7788’ 的字串。

從鍵盤輸入年月日時分秒,輸出形如 ‘2019-05-01 12:00:00’ 的字串。

給定兩個浮點數 3。1415926 和 2。7182818,格式化輸出字串 ‘pi = 3。1416, e = 2。7183’。

將 0。00774592 和 356800000 格式化輸出為科學計數法字串。

將十進位制整數 240 格式化為八進位制和十六進位制的字串。

將十進位制整數 240 轉為二進位制、八進位制、十六進位制的字串。

將字串 ‘10100’ 按照二進位制、八進位制、十進位制、十六進位制轉為整數。

求二進位制整數1010、八進位制整數65、十進位制整數52、十六進位制整數b4的和。

將列表 [0,1,2,3。14,‘x’,None,’’,list(),{5}] 中各個元素轉為布林型。

返回字元 ‘a’ 和 ‘A’ 的ASCII編碼值。

返回ASCII編碼值為 57 和 122 的字元。

將二維列表 [[0。468,0。975,0。446],[0。718,0。826,0。359]] 寫成名為 csv_data 的 csv 格式的檔案,並嘗試用 excel 開啟它。

從 csv_data。csv 檔案中讀出二維列表。

向 csv_data。csv 檔案追加二維列表 [[1。468,1。975,1。446],[1。718,1。826,1。359]],然後讀出所有資料。

交換變數 x 和 y 的值。

判斷給定的引數 x 是否是整形。

判斷給定的引數 x 是否為列表或元組。

判斷 ‘https://blog。csdn。net’ 是否以 ‘http://’ 或 ‘https://’ 開頭。若是,則返回 ‘http’ 或 ‘https’;否則,返回None。

判斷 ‘https://blog。csdn。net’ 是否以 ‘。com’ 或 ‘。net’ 結束。若是,則返回 ‘com’ 或 ‘net’;否則,返回None。

將列表 [3,‘a’,5。2,4,{},9,[]] 中 大於3的整數或浮點數置為1,其餘置為0。

a,b 是兩個數字,返回其中較小者或最大者。

找到列表 [8,5,2,4,3,6,5,5,1,4,5] 中出現最頻繁的數字以及出現的次數。

將二維列表 [[1], [‘a’,‘b’], [2。3, 4。5, 6。7]] 轉為 一維列表。

將等長的鍵列表和值列表轉為字典。

使用鏈狀比較運算子重寫邏輯表示式 a > 10 and a < 20。

寫一個函式,以0。1秒的間隔不換行列印30次由函式引數傳入的字元,實現類似打字機的效果。

數字列表求和。

返回數字列表中的最大值和最小值。

計算 5 的 3。5 方和 3 的立方根。

對 3。1415926 四捨五入,保留小數點後5位。

判斷兩個物件是在記憶體中是否是同一個。

返回給定物件的屬性和方法。

計算字串表示式 ‘(2+3)*5’ 的值。

實現字串 ‘x={“name”:“David”, “age”:18}’ 包含的程式碼功能。

使用 map 函式求列表 [2,3,4,5] 中每個元素的立方根。

使用 sys。stdin。readline() 寫一個和 input() 函式功能完全相同的函式。

使用二維列表描述9x9圍棋局面,’w’表示白色棋子,‘b’表示黑色棋子,’-‘表示無子,列印成下圖左所示的文字棋盤。

對於9x9圍棋盤,用a-i標識各行,用1-9標識各列,設計函式go(),輸入位置和顏色,即輸出文字棋盤,模擬圍棋對弈的過程。

下圖中是國際跳棋的初始局面,10x10的棋盤上只有50個深色格子可以落子,’w’表示白色棋子,‘b’表示黑色棋子,’-‘表示無子,字串 phase = ‘b’*20 + ‘-’*10 + ‘w’*20 表示下圖中的局面,請將 phase 列印成下圖右所示的樣子。

題目就到此為止啦,各位小夥伴們做的怎麼樣呢?

接下來,是公佈答案的時間啦。

解答:

1。 將元組 (1,2,3) 和集合 {4,5,6} 合併成一個列表。

>>> list((1,2,3)) + list({4,5,6})

[1, 2, 3, 4, 5, 6]

2。 在列表 [1,2,3,4,5,6] 首尾分別新增整型元素 7 和 0。

>>> a = [1,2,3,4,5,6]

>>> a。insert(0,7)

>>> a。append(0)

>>> a

[7, 1, 2, 3, 4, 5, 6, 0]

3。 反轉列表 [0,1,2,3,4,5,6,7] 。

>>> a = [0,1,2,3,4,5,6,7]

>>> a。reverse()

>>> a

[7, 6, 5, 4, 3, 2, 1, 0]

>>> a[::-1]

[0, 1, 2, 3, 4, 5, 6, 7]

4。 反轉列表 [0,1,2,3,4,5,6,7] 後給出中元素 5 的索引號。

>>> [0,1,2,3,4,5,6,7][::-1]。index(5)

2

5。 分別統計列表 [True,False,0,1,2] 中 True,False,0,1,2的元素個數,發現了什麼?

>>> a = [True,False,0,1,2]

>>> a。count(True),a。count(False),a。count(0),a。count(1),a。count(2)

(2, 2, 2, 2, 1) # count()不區分True和1、False和0,但None、’‘不會被視為False

以上是前 5 題的答案,因篇幅有限,更多答案內容,歡迎掃描下方海報二維碼或點選【閱讀原文】,加入 Python 大本營,點選檢視!

另有任何關於 Python 問題,專家將及時線上解答!

Top