day9-函数2-homework
2018-08-30 本文已影响0人
rzlong
1.写一个函数将一个指定的列表中的元素逆序(例如[1, 2, 3] -> [3, 2, 1])(注意:不要使用列表自带的逆序函数)
reverse_order = lambda x:x[::-1]
print(reverse_order([1,5,2,7]))
result:
[7, 2, 5, 1]
2.写一个函数,提取出字符串中所有奇数位上的字符
def uneven_str(str1):
list2 = []
for item in str1[::2]:
list2.append(item)
return list2
print(uneven_str('ABCDEFGHIJK'))
result:
['A', 'C', 'E', 'G', 'I', 'K']
3.写一个匿名函数,判断指定的年是否是闰年
leap_year = lambda x:bool(x // 4 and not x // 100 or x // 400)
print(leap_year(400))
result:
True
4.使用递归打印:
def recursion(n): #注意判断递归的函数执行顺序,一层一层的剥开解读。
"""
递归打印@
:param n: 行数
:return: None
"""
if not n:
return
recursion(n-1)
print('@'*n)
recursion(5)
result:
@
@@
@@@
@@@@
@@@@@
5.写函数,检查传入列表的长度,如果大于2,那么仅保留前两个长度的内容,并将新内容返回给调用者。
def check_list(list1):
for item in list1[::-1]:
if len(list1) > 2:
list1.remove(item)
return list1
check = check_list([1,2])
print(check)
result:
[1, 2]
6.写函数,利用递归获取斐波那契数列中的第 10 个数,并将该值返回给调用者。
def fibonacci(n):
if n == 1 or n == 2:
return 1
else:
return fibonacci(n-1)+fibonacci(n-2)
fibo = fibonacci(10)
print(fibo)
result:
55
7.写一个函数,获取列表中的成绩的平均值,和最高分
def average_best(list1):
list1.sort()
return (sum(list1)/len(list1),list1[-1])
ave_b =average_best([10,20,30,40])
print(ave_b)
result:
(25.0, 40)
8.写函数,检查获取传入列表或元组对象的所有奇数位索引对应的元素,并将其作为新的列表返回给调用者
def uneven_index(*seq):
return list(seq[::2])
ue_index = uneven_index('a','b','c','d')
print(ue_index)
result:
['a', 'c']
9.写一个属于自己的数学模块(封装自己认为以后常用的数学相关的函数和变量)和列表模块(封装自己认为以后常用的列表相关的操作)
'''
没得想法,数学有运算符有math模块,list有切片,和c语言相比,简直无敌,还有列表函数。
'''
def func():
a = []
for i in range(5):
a.append(lambda x:x * i)
return a
aa = func()
print(aa[0](2),aa[2](2),aa[3](2))
'''
注意:由于闭包特性,在函数中的子函数并不会立即执行,而是全部放入到list中,并且i值随遍历变成4
因此所得结果都是8
'''