一、工作内容:
9:00-20:00
1.递归函数
n=int(input('please input a integer:'))
s=1
while n!=0:
s=s*n
n=n-1
print(s)
def factorail(n):
s=1
for i in range(1,n+1):
s*=i
return s
print(factorail(5))
#递归函数中一定要有对自己的调用
#递归函数中一定要有边界条件
def fact(n):
if n==1:
return 1
return(fact(n-1)*n)
print(fact(5))
2.切片
ames = ['赵梦冰','张荣亮','侯富君','王颜丽','焦新瑞']
#names[a:b]截取从下标a开始到下标b结束的所有元素,包含a,不包含b,a,b可以为负数。
#names[a:b:c] c为步长
print(names[0:3])
print(names[-3:0])
#如果第一个索引是0,可以省略
print(names[:3])
#如果一直截取到末尾,可以省略第二个索引
print(names[3:])
#复制列表
l=names[:]
print(l)
#指定步长,默认步长值为1
#列表切片后还是列表
print(names[0::2])
#元组也可以切片,结果还是元组
y=('赵梦冰','张荣亮','侯富君','王颜丽','焦新瑞')
print(y[0::3])
#字符串也可以切片,结果还是字符串
s='abcdef'
print(s[0::2])
3.迭代
names = ['赵梦冰','张荣亮','侯富君','王颜丽','焦新瑞']
'''
#循环、遍历、迭代iteration
#可迭代对象:列表 元组 字典
for name in names:
print(name)
'''
#遍历key
name_scores= {'赵梦冰':88,'张荣亮':99,'侯富君':77,'王颜丽':89,'焦新瑞':93}
for key in name_scores:
print(key,name_scores[key])
#遍历value
for value in name_scores.values():
print(value)
#同时遍历key和value
for key,value in name_scores.items():
print(key,value)
#遍历字符串
i=0 #循环控制变量
for char,i in enumerate('abcdef'):
print(i,char)
'''如何判断一个对象是可迭代对象'''
from collections.abc import Iterable
#isinstance(obj,type)判断对象obj是否是type类型,是则返回True,否则返回False
print(isinstance(1,int))
print(isinstance('1',int))
print(isinstance(names,Iterable))
4.列表生成式
nums=list(range(10))
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)
#练习
l=[fraction(1,x) for x in range(1,10)]
print(l)
#列表生成式中添加条件判断
m=[x*x for x in range(1,10) if x%2==0]
print(m)
#列表生成式中使用多重循环
p=[x+y for x in 'ABC' for y in 'XYZ']
#用列表生成式生成元组
q=tuple([x*x for x in range(1,10)])
print(q)
21:00-23:00
做作业
用递归函数实现fibonacci数列某一项的求解
# 1 2 3 4 5 6 7
# 1 1 2 3 5 8 13...
def f(n):
if n==3:
return(2)
if n<3:
return(1)
return(f(n-1)+f(n-2))
print(f(1),f(2),f(3),f(4),f(5),f(6))
测试元组生成式和字典生成式
t=tuple([x*x for x in range(1,10)])
print(t)
name_scores= {'赵梦冰':88,'张荣亮':99,'侯富君':77,'王颜丽':89,'焦新瑞':93}
d={k:v for k,v in name_scores.items() if v<90}
print(d)
# 实现一个trim()函数,利用切片去除字符串前后的空格
# ' tom cruse '
# 循环方式
def trim(s):
l=len(s)
if l>0:
for i in range(l):
if s[i]!=' ':
break
j=l-1
while s[j]==' 'and j>=i:
j-=1
s=s[i:j+1]
return s
print(trim(' dvb '))
# 将下面列表中的所有字符变为小写:(列表生成式)
# ['Tom','MIKE','VM','Python']
# 'Tom'.lower()
h=['Tom','MIKE','VM','Python']
l = [s.lower() for s in h if isinstance(s,str)]
print(l)
# 使用迭代查找一个列表中的最大值和最小值,返回一个tuple
def s(list):
if list!=[]:
(max,min)=(list[0],list[0])
for x in list:
if x<min:
min=x
if x>max:
max=x
return max,min
print(s((20,36,68,21,59,35)))
二、遇到的问题:
元组生成式和字典生成式
三、处理方式(网上查找):
t=tuple([x*x for x in range(1,10)])
name_scores= {'赵梦冰':88,'张荣亮':99,'侯富君':77,'王颜丽':89,'焦新瑞':93}
d={k:v for k,v in name_scores.items() if v<90}
|