題目一
解析
答案
題目二
解析
答案
題目三
解析
答案
題目四
解析
答案
題目五
解析
答案
本次的題目是來自董付國老師Python編程題主要向各比特小夥伴們介紹的Python經典例題<各種數據類型用法以及函數和生成器使用>,帶各比特掌握Python基礎,希望各比特小夥伴們能夠在這裏收獲到更多知識!讓我們一起學習!一起進步!
1
用到知識點:生成器中的各種推導式,函數的使用
def main(lst): return [i for i in lst if i>=(sum(lst)/len(lst))] #這是生成器中的列錶推導式
需要使用到if語句,列錶的各種操作方法,函數的使用
def main(lst,item): if item in lst: #先判斷列錶中是否存在這個數 return lst.index(item) #列錶中index方法的使用 else: return '不存在'
本題的難度過小,主要考察對內置函數的掌握情況
def main(p,q): return divmod(p,q) #內置divmod函數返回的就是商和餘數的元祖
這道題目有點難想到,主要使用到的方法就是內置函數的使用,至於是哪一個就要自己思考了
def main(num): return sum(map(int,str(num)))
先來說為什麼要str(num):
由map() 函數語法:map(function, iterable, ...),因為接收了一個整數num是不可迭代的,而map語法要是個可迭代的所以利用數據類型強制轉換將num轉化為可迭代的字符串數據類型就可以滿足map函數的使用條件了。
以下是便於理解的代碼,現在分開來一步一步講解
- 先來講內部的map(int,str(num))這一步的目的
a = 1234567 print(map(int,str(a))) for i in map(int,str(a)): print(i) 輸出結果: <map object at 0x000001FEB8AAF0D0> 1 2 3 4 5 6 7
- 再來講外層的sum函數,sum函數語法為sum(*args, **kwargs),sum接收了第一步傳入的動態參數將其相加就得到了結果
第五題也是這幾個題目中最難的題目了,它考了我們內置函數,運算符的使用,還添加了很多限制功能
先來演示我一開始的錯誤答案,在這個軟件上顯示是錯誤的
但在Python中運行這段代碼是這樣的
不嚴謹的原因是轉化為set(lst)後雖然去重了,但生成集合是無序的,之後在list(set(lst))也可能是無序的,這與題意要求的順序是不匹配的
正確解答
對答案中lst2.sort(key=lst.index)進行解釋,注釋非常詳細。
li = [1,2,3] print(li.index) #print(li.index),輸出的那一串為函數名(函數在內存中的地址) #若b也是一個列錶,b.sort(key=a.index), #其中key為形參,接收類型必須為函數。 #即列錶b中的每個元素都要經過a.index函數做映射(y=f(x)), #按映射值大小進行排序 #通俗來說進行b.sort(key=a.index)後b會按a列錶的順序排列。 輸出結果: <built-in method index of list object at 0x0000026A26484B00>
感謝各比特能夠看到這裏:在魯迅一篇未發錶的文章中說過:“代碼看懂了不是懂一定要自己實際操作哇這樣才能更好的理解和吸收。”
最後來一句:一個人可以在任何他懷有無限熱忱的事情上成功,讓我們一起進步吧