笔记:
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
|