''' 遞歸函數(shù) ''' n = int(input('請輸入n的值:')) s = list(range(1,n+1)) n = len(s) a = 1 while n>1: a = a*s[n -1] n = n - 1 print('a=%d'%a) ''' 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 ... 2! = (2-1)!*2 1! = 1 ''' # 遞歸函數(shù) def fact(n): if n==1: #2.遞歸函數(shù)中一定要有邊界條件 return 1 return fact(n-1)*n # 1.遞歸函數(shù)中一定要有對函數(shù)自己的調(diào)用 print(fact(5)) '''切片''' ''' names = ['趙夢冰','張榮亮','侯富君','王顏麗','焦新瑞','張國榮','呂煜海 names[a:b:c]表示截取從下標(biāo)a開始到下標(biāo)b結(jié)束的所有的元素,但是包含a不包含b c 表示步長,默認(rèn)值時1 列表切片后還是列表 元組切片后還是元組 字符串切片還是字符串 print(names[0:3]) print(names[-7:-4]) #切片支持負(fù)數(shù)索引 print(names[2:]) print(names[:3])# 如果第一個0時,可以省略 print(names[:3])# 如果一直截取到末尾,可以省略第二個索引 # 復(fù)制列表 l = names[:] m = names print('------------------------------------------') m.append('白李娜') print(names) print(l) print(m) # 切片時還可以指定步長,步長值默認(rèn)是1 print(names[::2]) ''' 元組也可以切片,結(jié)果還是字符串 names = ('趙夢冰','張榮亮','侯富君','王顏麗','焦新瑞','張國榮','呂煜海') print(names[0:3]) 字符串也可以切片,結(jié)果還是字符串 s = 'abcdef' print(s[1:3]) '''迭代''' names = ['趙夢冰','張榮亮','侯富君','王顏麗','焦新瑞','張國榮','呂煜海'] 循環(huán),遍歷,迭代Iteration names:可迭代對象 可迭代對象:列表,元組,字典,字符串 for name in names: print(name) print('---------------------') # 遍歷key name_scores = {'趙夢冰':88,'張榮亮':99,'侯富君':77,'王顏麗':89,'焦新瑞':93,'張國榮':98,'呂煜海':85} for key in name_scores: print(key) # name_scores = {'趙夢冰':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) # 同時遍歷key和value for key,value in name_scores.items(): print(key,value) # 遍歷字符串 for char in 'abcdef': print(char) '''如何判斷一個對象是可迭代對象''' from collections.abc import Iterable isinstance(obj,type)判斷對象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 # # 簡化方式提供循環(huán)遍歷 # for i,char in enumerate('abcdef'): # print(i,char) '''列表生成式''' nums = [0,1,2,3,4,5,6,7,8,9] nums = list(range(6,10)) nums = list(range(10)) print(nums) # 方法一 # [1*1,2*2,3*3,....,9*9] nums = [1*1,2*2,3*3,9*9] # 方法二 nums = [] for x in range(1,10): nums.append(x*x) print(nums) # 方法三 -列表生成式 # m = [x*x for x in range(1,10)] # print(m) m = [1/n for n in range(1,10)] print(m) # 列表生成式中添加條件判斷 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 = list([x*x for x in range(1,10)]) print(q) q = tuple([x*x for x in range(1,10)]) print(q) q = dict([x*x for x in range(1,10)]) print(q)
|