day10-作业

1.写一个函数将一个指定的列表中的元素逆序(例如[1, 2, 3] -> [3, 2, 1])(注意:不要使用列表自带的逆序函数)

def list_rev(list1):
    list2 = []
    for index in range(len(list1)):
        list2.append(list1[len(list1)-index-1])
    list1.clear()
    for i in list2:
        list1.append(i)
    del list2
    return list1

list_b = [1,2,3]
print(list_rev(list_b))
print(list_b)

2.写一个函数,提取出字符串中所有奇数位上的字符

def str_odd(str1):
    str_odd_list = []
    for index in range(1,len(str1)+1):
        if index % 2:
            str_odd_list.append(str1[index-1])
    return str_odd_list

print(str_odd('k456gj[plkjht'))

3.写一个匿名函数,判断指定的年是否是闰年

leap_year = lambda x: '闰年' if not x % 4 and x % 100 else '非闰年'
print(leap_year(2004),leap_year(1900))

4.使用递归打印:

'''
n = 3的时候
  @
 @@@
@@@@@
n = 4的时候:
   @
  @@@
 @@@@@
@@@@@@@
'''
def gh_n(n):
    m = n
    def gh(t):
        if t < 1:
            return
        gh(t-1)
        str1 = '@'*(2*t-1)
        print(str1.center(2*m-1,' '))
    gh(n)

gh_n(4)

5.写函数,检查传入列表的长度,如果大于2,那么仅保留前两个长度的内容,并将新内容返回给调用者。

def top2(list2):
    if len(list2) > 2:
        list_new = list2[0:2]
    return  list_new

print(top2([1,2,3,4]))

6.写函数,利用递归获取斐波那契数列中的第10个数,并将该值返回给调用者。

def fb(n):
    if n == 1 or n == 2:
        return 1
    return fb(n-1)+fb(n-2)

print(fb(9))

7.写一个函数,获取列表中的成绩的平均值,和最高分

def avg_max(list3):
    sum1 = 0
    for x in list3:
        sum1 += x
    return sum1/len(list3),max(list3)

print(avg_max([10,20,30,40,50]))

8.写函数,检查获取传入列表或元组对象的所有奇数位索引对应的元素,并将其作为新的列表返回给调用者

def odd_list(line):
    line_new = []
    for index in range(len(line)):
        if index % 2:
            line_new.append(line[index])
    return line_new
print(odd_list([1,2,3,4,5,6,7]))

结果

[3, 2, 1]
[3, 2, 1]
['k', '5', 'g', '[', 'l', 'j', 't']
闰年 非闰年
   @   
  @@@  
 @@@@@ 
@@@@@@@
[1, 2]
34
(30.0, 50)
[2, 4, 6]

你可能感兴趣的:(day10-作业)