程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

【周周Python百日刷題計劃】Day4~各種數據類型用法以及函數和生成器使用

編輯:Python

目錄

️前言

題目一

解析

答案

題目二

解析

答案

題目三

解析 

答案

題目四

解析

答案

題目五

解析

答案

️最後



️前言

本次的題目是來自董付國老師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函數的使用條件了。

以下是便於理解的代碼,現在分開來一步一步講解

  1. 先來講內部的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
  1. 再來講外層的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>

最後

感謝各比特能夠看到這裏:在魯迅一篇未發錶的文章中說過:“代碼看懂了不是懂一定要自己實際操作哇這樣才能更好的理解和吸收。”
最後來一句:一個人可以在任何他懷有無限熱忱的事情上成功,讓我們一起進步吧


  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved