笔记:
1. 函数
(1) 函数是组织好的 可重复使用的某功能的代码块
(2) 函数的定义和调用
语法:def 函数名(参数):
函数体
return XXX
定义:def test1():
print(‘hello’)
调用:test1()
(3) 参数类型
① 可变/不可变参数
1) 可变:字典 列表
2) 不可变:数值 字符串 元祖
② 关键字参数(要写在后面)
1) *args 代表元祖/列表 可以不传参
2) **kwargs 代表字典
③ 默认参数(缺省参数,必须写在后面)
④ 不定长参数
⑤ 参数组合
作业:
# # 12.19作业: # # 1、简述普通参数、指定参数、默认参数、动态参数的区别 # # 普通参数:就是放入一个形参,当放入实参时,需要按照顺序给形参值。 # # 指定参数:放入实参时是指定的,不用按照顺序给形参,都能让形参获得相应的参数。 # # 默认参数:在形参内指定一个参数,需要放在形参的最后面。当实参没有给值时,就默认是形参的值。 # # 动态参数:格式:*args 和 **kwargs 前面一个保存为元组,后面一个保存为字典。 # # 2、写函数,计算传入字符串中【数字】、【字母】、【空格】 以及 【其他】的个数 # def test2(a): # sz = 0 # zm = 0 # kg = 0 # qt = 0 # for i in a: # if i.isdigit(): # sz+=1 # elif i.isalpha(): # zm+=1 # elif i==' ': # kg+=1 # else: # qt+=1 # print('数字有:%d,字母有:%d,空格有:%d,其他:%d'%(sz,zm,kg,qt)) # test2('jiu 12 5 去 2525年份喊打jj++-**') # # 3、写函数,判断用户传入的对象(字符串、列表、元组)长度是否大于5。 # def test3(*b): # if len(*b)>5: # print('长度大于5') # else: # print('长度小于5') # # print(*b) # test3('asdadaa') # # 4、写函数,检查用户传入的对象(字符串、列表、元组)的每一个元素是否含有空内容。 # def test4(*a): # for i in tuple(*a): # if i==None or i==() or i==[]: # print('有空内容') # break # else: # print('没有空内容') # # # print(i) # test4('') # # # 5、写函数,检查传入列表的长度,如果大于2,那么仅保留前两个长度的内容,并将新内容返回给调用者。 # def test5(*a): # if len(list(*a))>2: # print('长度大于2,保留结果为:', list(*a)[0:2]) # return list(*a)[0:2] # else: # print('长度小于2') # test5([1,2,5,6]) # # 6、写函数,检查获取传入列表或元组对象的所有奇数位索引对应的元素,并将其作为新列表返回给调用者。 # def test6(*a): # tplist=[] # for i in range(0,len(list(*a))): # if i%2==1: # tplist.append(list(*a)[i]) # return tplist # print(test6([1,2,3,4,5,6,7])) # # 7、写函数,检查传入字典的每一个value的长度, # # 如果大于2,那么仅保留前两个长度的内容,并将新内容返回给调用者。 # def test7(**a): # for key in a.keys(): # print(key) # if len(a[key])>2: # a[key]=a[key][0:2] # print(a) # return a # test7(k1='125',k2='2222') # 8、写函数,利用递归获取斐波那契数列中的第 10 个数,并将该值返回给调用者。 def test8(x): if x==1: return 1 elif x==2: return 1 else: return test8(x-1)+test8(x-2) print(test8(10)) # 9、将通讯录管理系统改成函数的形式实现 # 10.实现百钱买百鸡,公鸡一只5钱,母鸡一只3钱,小鸡1钱3只 # for i in range(0,101): # if i%3==0: # for j in range(0,101-i): # if (100-i-j)*5+i//3+j*3==100: # print(i,j,100-i-j) # 11.实现100和尚吃100馒头 # for i in range(0,100): # if i%3==0: # if i//3+(100-i)*3==100: # print(i,100-i) # 12.10个数字,每3个除去,剩几? list = [1,2,3,4,5,6,7,8,9,10] list1 = [1,2,3,4,5,6,7,8,9,10] list2 = [] list3 = [] list4 = [] while True: if len(list2)==9: for i in list1: if i not in list2: print('最后一个数为:',i) break else: list2 = [] list3 = [] list4 = [] for i in range(0,len(list)): if i%3==2: list2.append(list[i]) #存储上一轮遗留下来的数字 else: list3.append(list[i]) #存储上一轮删除的数字 list4 = list3[::-1][0:(10-len(list2))][::-1] #存储每一轮在10个数中留下的数字 list += list4