笔记:
17.函数
(1)函数是组织好的 可重复使用的某功能的代码块
(2)函数的定义和调用
语法:def 函数名(参数):
函数体
return XXX
定义:def test1():
print(‘hello’)
调用:test1()
(3)参数类型
①可变/不可变参数
1)可变:字典 列表
2)不可变:数值 字符串 元祖
②关键字参数(要写在后面)
1)*args 代表元祖/列表 可以不传参
2)**kwargs 代表字典
③默认参数(缺省参数,必须写在后面)
④不定长参数
⑤参数组合
(1)函数是组织好的 可重复使用的某功能的代码块
(2)函数的定义和调用
语法:def 函数名(参数):
函数体
return XXX
定义:def test1():
print(‘hello’)
调用:test1()
(3)参数类型
①可变/不可变参数
1)可变:字典 列表
2)不可变:数值 字符串 元祖
②关键字参数(要写在后面)
1)*args 代表元祖/列表 可以不传参
2)**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('suan 1 5 88 .. ') # 3、写函数,判断用户传入的对象(字符串、列表、元组)长度是否大于5。 def test3(*a): for i in tuple(*a): if len(*a)>5: print('长度大于5') break else: print('长度小于5') test3((1,2,3,4,5,6,7,8)) # 4、写函数,检查用户传入的对象(字符串、列表、元组)的每一个元素是否含有空内容。 def test(*a): for i in tuple(*a): if i==''or i==[]or i==(): print('有空内容') break else: print('没有空内容') test((1,2)) # 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,3,4]) # 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='123',k2='222') # 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)) # 10.实现百钱买百鸡, 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