本帖最后由 淰7331 于 2021-1-20 21:57 編輯
'''遞歸函數(shù)'''
# n!=1*2*3*4*...*n 基本上浮點(diǎn)數(shù) def factorail(n): s = 1 for i in range(1,n+1): s *= i return s print(factorail(5))
''' n! = (n-1)!*n (n-1)! = (n-2)!*(n-1) ... 2! = (2-1)!*2 1! = 1 ''' # 遞歸函數(shù) def fact(n): if n == 1: #2.遞歸函數(shù)中一定要有邊界條件 return 1 return fact(n-1)*n # 1.遞歸函數(shù)中一定要有對(duì)函數(shù)自己的調(diào)用
print(fact(1000))
''' fact(5) fact(4)*5 fact(3)*4*5 fact(2)*3*4*5 fact(1)*2*3*4*5 1*2*3*4*5
''' '''切片'''
names = ['趙夢(mèng)冰','張榮亮','侯富君','王顏麗','焦新瑞','張國榮','呂煜海
''' names[a:b:c]表示截取從下標(biāo)a開始到下標(biāo)b結(jié)束的所有元素,但是包含a,不包含b c表示步長(zhǎng),默認(rèn)值是1 列表切片后還是列表 元組切片后還是元組 字符串切片后還是字符串 ''' print(names[0:3]) print(names[2:3]) # 切片支持負(fù)數(shù)索引 print(names[-7:-4])
# 如果第一個(gè)索引是0,可以省略 print(names[:3]) # 如果一直截取到末尾,可以省略第二個(gè)索引 print(names[3:]) # 復(fù)制列表 l = names[:] m = names print('---------------------------------') m.append('白李娜') print(names) print(l) print(m)
# 切片時(shí)還可以指定步長(zhǎng),步長(zhǎng)值默認(rèn)是1 print(names[0::2]) print(names[0::3])
# 元組也可以切片,結(jié)果還是元組 names = ('趙夢(mèng)冰','張榮亮','侯富君','王顏麗','焦新瑞','張國榮','呂煜海')
# 字符串也可以切片,結(jié)果還是字符串 s = 'abcdef' '''迭代'''
names = ['趙夢(mèng)冰','張榮亮','侯富君','王顏麗','焦新瑞','張國榮','呂煜海
# 循環(huán),遍歷,迭代Iteration # names: 可迭代對(duì)象 # 可迭代對(duì)象: 列表,元組,字典,字符串 for name in names: print(name)
print('-----------------------------')
# 遍歷key name_scores = {'趙夢(mèng)冰':88,'張榮亮':99,'侯富君':77,'王顏麗':89,'焦新瑞':93,'張國榮':98,'呂煜海':85} for key in name_scores: print(key,name_scores[key])
print('-----------------------------') # 遍歷value for value in name_scores.values(): print(value)
# 同時(shí)遍歷key和value for key,value in name_scores.items(): print(key,value)
print('-----------------------------') # 遍歷字符串 for char in 'abcdef': print(char)
'''如何判斷一個(gè)對(duì)象是可迭代對(duì)象''' from collections.abc import Iterable
# isinstance(obj,type) 判斷對(duì)象obj是否是type類型,是則返回True,否則返回False print(isinstance(1,int)) print(isinstance('1',int)) print(isinstance('1',str))
print(isinstance(names,Iterable))
i = 0 # 循環(huán)控制變量 for char in 'abcdef': print(i,char) i = i + 1
print('-----------------------------') # 簡(jiǎn)化方式提供循環(huán)遍歷 for i,char in enumerate('abcdef'): print(i,char)
# for(int i=0;i<100;i++){
# } ''' 列表生成式 字典生成式 '''
nums = [0,1,2,3,4,5,6,7,8,9] nums = list(range(6,10)) print(nums)
# [1*1,2*2,3*3,....,9*9] # 方法一: nums = [1*1,2*2,3*3]
# 方法二: nums = [] for x in range(1,10): nums.append(x*x) print(nums)
# 方法三 - 列表生成式 m = [x*x for x in range(1,10)] print(m)
# 練習(xí),用列表生成式生成:[1,1/2,1/3,...1/10] n = [1/x for x in range(1,10)] print(n)
# 列表生成式中添加條件判斷 o = [x*x for x in range(1,10) if x%2==0] print(o)
# 列表生成式中使用多重循環(huán) p = [x+y for x in 'ABC' for y in 'XYZ'] print(p)
# 用列表生成式生成元素 q = tuple([x*x for x in range(1,10)]) print(q)
|