列表(list)
[元素1和蚪,元素2...]
可變迁央,有序
元素可以是任意類型的數(shù)據(jù)爬坑,可以重復(fù)
元素的增刪改查
元祖(tuple)
(元素1,元素2...) 元素1递礼,元素2... (元素1惨险,)
不可變,有序
元素可以是任意類型的數(shù)據(jù)脊髓,可以重復(fù)
獲取元素
字典(dict)
{'key1':value1,'key2':value2,....} {}
可變辫愉,無序
元素是鍵值對;鍵 不可變将硝,唯一恭朗;值 可以是任意類型的數(shù)據(jù)屏镊,可以重復(fù)
元素的增刪改查
集合(set)
{元素1,元素2...} set()
可變痰腮,無序
元素不可變 唯一
元素的增刪查而芥;數(shù)學(xué)集合運算
Function
什么是函數(shù)
函數(shù)就是實現(xiàn)某一特定功能的代碼段的封裝函數(shù)的分類
系統(tǒng)函數(shù):系統(tǒng)已經(jīng)給我們定義好的函數(shù),程序員直接調(diào)用函數(shù)膀值,使用功能棍丐。
自定義函數(shù):需要程序員自己去定義的函數(shù)函數(shù)的定義:(聲明函數(shù))
a. 語法
def 函數(shù)名(參數(shù)列表):
函數(shù)體
b. 說明
def - Python中聲明函數(shù)的關(guān)鍵字
- 函數(shù)名 - 標(biāo)識符,不能是關(guān)鍵字沧踏;
PEP8命名規(guī)范歌逢,見名知意(看到函數(shù)就知道函數(shù)的功能) - () - 固定寫法
- 參數(shù)列表 - 參數(shù)1,參數(shù)2翘狱,參數(shù)3...這兒的參數(shù)叫形參
定義的時候形參就是一個變量
功能是將函數(shù)外面的數(shù)據(jù)傳遞到函數(shù)里面 - : - 固定格式
- 函數(shù)體 - 一個完整的函數(shù)體包含:函數(shù)說明文檔秘案、實現(xiàn)函數(shù)功能的代碼段、函數(shù)返回值潦匈。
c. 初學(xué)者聲明函數(shù)的步驟
第一步:確定函數(shù)的功能
第二部:根據(jù)函數(shù)的功能確定函數(shù)名
第三部:確定形參(確定需不需要參數(shù)阱高,確定需要幾個參數(shù))
看實現(xiàn)函數(shù)的功能需不需要從函數(shù)外邊傳值進(jìn)來?需要傳幾個
第四部:實現(xiàn)函數(shù)的功能
第五步:確定函數(shù)返回值
(重點@取L殖汀辟癌!)注意:聲明函數(shù)的時候不會執(zhí)行函數(shù)體寒屯!只有在調(diào)用的時候才會執(zhí)行
4. 函數(shù)的調(diào)用
a. 語法
函數(shù)名(實參列表)
b. 說明
函數(shù)名 - 這個函數(shù)名對應(yīng)的函數(shù)名必須是已經(jīng)聲明過的函數(shù)
() - 固定寫法
實參列表 - 實參是給形參賦值的(用實參給形參賦值的過程叫 傳參)
實參和形參要一一對應(yīng)
c. 函數(shù)的調(diào)用過程(重點!J蛏佟9鸭小)
第一步:回到函數(shù)聲明的位置
第二步:使用實參給形參賦值(傳參)
第三步:執(zhí)行函數(shù)體
第四步:執(zhí)行完函數(shù)體就確定并返回返回值
第五步:再回到函數(shù)調(diào)用的位置,接著執(zhí)行后面的其他代碼
寫一個函數(shù)厂置,求兩個數(shù)的和
def yj_sum (num1,num2):
求兩個數(shù)的和(函數(shù)功能說明)num1: 求和的第一個數(shù)num2: 求和的第二個數(shù):return: 無(函數(shù)返回值說明)
print(num1+num2)
調(diào)用函數(shù)
yj_sum(1,2)
print('====')
練習(xí):聲明一個函數(shù)菩掏,打印指定的 n!
def yj(n):
"""求指定數(shù)的階乘"""
sum1 = 1
for x in range(1,n+1):
sum1 *= x
print('%d的階乘是:%d' % (n,sum1))
yj(5)
yj(10)
練習(xí):聲明一個函數(shù),打印指定列表中指定元素對應(yīng)的下標(biāo)
def list_index(list1, item):
"""打印指定列表(list1)中指定元素(item)對應(yīng)的下標(biāo)"""
count = 0 # 保存指定列表中指定元素的個數(shù)
for index in range(len(list1)) :
if list1[index] == item:
print(index)
count += 1
if count == 0:
print('列表中沒有指定元素')
list_index([1,2,3,3,1,2,3],3)
練習(xí):聲明一個函數(shù)昵济,函數(shù)功能是猜數(shù)字游戲:隨機(jī)產(chǎn)生一個0-100數(shù)字智绸,直到輸入的數(shù)字和產(chǎn)生數(shù)字一樣游戲結(jié)束當(dāng)猜錯了, 可以給出‘大了’/ ‘小了’ 這樣的顯示
導(dǎo)入random模塊
import random
randint(m,n) 產(chǎn)生一個m到n的隨機(jī)整數(shù)
num = random.randint(0,10)
print(num)
def yi_random():
# print(num)
num = random.randint(0,100)
while True:
num1 = int(input('輸入數(shù)字:'))
if num1 == num:
print('游戲結(jié)束')
break
else:
if num1 < num:
print('小了')
else:
print('大了')
yi_random()
參數(shù)
1.位置參數(shù)和關(guān)鍵字參數(shù)(根據(jù)實參的傳遞方式對參數(shù)進(jìn)行的分類)
a. 位置參數(shù):實參的位置和形參位置保持一致访忿,按位置先后順序一一賦值
b.關(guān)鍵字參數(shù):掉用函數(shù)的時候以 形參 = 實參 的方式來傳參瞧栗,這個時候?qū)崊⒌捻樞驘o所謂 (特殊情況使用)
def func1(a,b,c):
print(a,b,c)
通過位置參數(shù)進(jìn)行傳參
func1(10,20,30)
通過關(guān)鍵字參數(shù)傳參
func1(a=10,b=20,c=30)
通過位置和關(guān)鍵字傳參結(jié)合(關(guān)鍵字參數(shù)在位置參數(shù)后面)
- 參數(shù)默認(rèn)值
聲明函數(shù)的時候,可以給參數(shù)賦默認(rèn)值海铆。
如果一個形參有默認(rèn)值迹恐,那么調(diào)用函數(shù)的時候,這個參數(shù)就可以不用傳參了
注意:有形參的默認(rèn)值要放在沒有默認(rèn)值形參的后面*
調(diào)用函數(shù)要保證每個參數(shù)都有值卧斟!
參數(shù)默認(rèn)值 有默認(rèn)值的放在默認(rèn)值的后面E贡摺T髅!
def func(a,b,c=20):
print(a,b,c)
func(10,32)
func(100,200,300)
- 參數(shù)的類型說明 - 類型說明只有提示的功能锤岸,沒有約束功能
a.給參數(shù)設(shè)置默認(rèn)值竖幔,默認(rèn)值的類型就是參數(shù)的類型
b. 在形參的后面加 :類型名,來說明參數(shù)類型。這種方式調(diào)用的時候必須傳參是偷;
c. 括號后面加 ->類型名赏枚,來說明函數(shù)返回值的類型
類型說明的好處:a.對實參的類型進(jìn)行指導(dǎo) b.實現(xiàn)函數(shù)功能的時候有類型相關(guān)的語法提示
def list_item(list1:list,index:[]) ->int:
print(list1[index])
4.不定長參數(shù) - 函數(shù)的參數(shù)個數(shù)不確定
a.在聲明函數(shù)的時候,在參數(shù)名前加晓猛,可以用來同時獲取多個實參的值
-- 實質(zhì)是將帶的參數(shù)編程元祖饿幅,將多個實參的值作為元祖的元素
注意:如果有普通參數(shù),不定長參數(shù)必須放在普通參數(shù)的后面
寫一個函數(shù)戒职,計算多個數(shù)的和
def yj_sum(name,*nums):
print(name,nums)
b. 在參數(shù)名前加兩個* 會將這個參數(shù)變成一個字典來獲取關(guān)鍵字參數(shù)的值栗恩,其他關(guān)鍵字作為key,實參作為value
兩個的要放在一個的后面
def func3(**nums):
print(nums)
func3(a=10,b=20)
def func3(*args,**nums):
print(args,nums)
func3(10,20,30,52)
func3(a=25,b=32,c=52)
func3(25,32,a=25,b=63)
練習(xí):寫一個函數(shù),計算多個數(shù)的和(要求可以使用位置參數(shù)也可以使用關(guān)鍵字參數(shù))
def yj_sum(*nums:int):
nums = sum(nums)
print(nums)
yj_sum(1,2,3,4,5)