作业Day10_函数提升

2019-01-06  本文已影响0人  RiskHY
1. 写一个函数将一个指定的列表中的元素逆序( 如[1, 2, 3] -> [3, 2, 1])(注意:不要使 表自带的逆序函数)
def lhy_antitone(list_num):
    len_num = len(list_num)
    for index in range(len_num // 2):
        list_num[index], list_num[len_num - index - 1] = list_num[len_num - index - 1], list_num[index]
    return list_num


print(lhy_antitone([1, 4, 5, 3, 7]))
2. 写一个函数,提取出字符串中所有奇数位上的字符
def lhy_extract(param_str):
    list_str = []
    for index in range(0, len(param_str), 2):
        list_str.append(param_str[index])
    list_strs = ''.join(list_str)
    return list_strs


print(lhy_extract('asqwegfds'))
3. 写一个匿名函数,判断指定的年是否是闰
lhy_year = lambda year: '%d年是闰年' % year if (year % 4 == 0 and year % 100 != 0) or year % 400 == 0 else '%d年不是闰年' % year

print(lhy_year(2014))
4. 写函数,提取字符串中所有的数字字符。

例如: 传入'ahjs233k23sss4k' 返回: '233234'

def lhy_str(param_str):
    list_str = []
    for item in param_str:
        if '0' < item < '9':
            list_str.append(item)
    return ' '.join(list_str)


print(lhy_str('sd252sa23ds45dfg3/s3'))
5. 写一个函数,获取列表中的成绩的平均值和最高分
list_score = [
    {'score': 90},
    {'score': 79},
    {'score': 85},
    {'score': 99},
    {'score': 95},
]


def lhy_job5(param_score):
    """
    获取列表中的成绩的平均值,和最高分
    :param param_score: 需要获取的学生信息列表
    :return: 平均值和最高分
    """
    score_sum = 0
    score_max = 0
    if isinstance(param_score[0], dict):
        for item in param_score:
            score_sum += item['score']
            if score_max < item['score']:
                score_max = item['score']
    else:
        for item in param_score:
            score_sum += item
            if score_max < item:
                score_max = item
    score_average = score_sum / len(param_score)
    return score_average, score_max


print(lhy_job5(list_score))
6. 写函数,检查获取传入列表或元组对象的所有奇数位索引对应的元素,并将其作为新的列表返回给调用者
param_list = [12, 'name', 20, 'sex', 1245, 'age']


def lhy_job6(param):
    """
    检查获取传入列表或元组对象的所有奇数位索引对应的元素,并将其作为新的列表返回给调用者
    :param param: 需要输入的列表
    :return: 新列表
    """
    new_list = []
    for item in range(1, len(param), 2):
        new_list.append(param[item])
    return new_list


print(lhy_job6(param_list))
7. 实现属于自己的字典update方法:用一个字典去更新另一个字典的元素(不能使用自带的update方法)

yt_update(字典1, 字典2)

old_dict = {'a': 1, 'b': 2}
new_dict = {'a': 3, 'c': 4}


def lhy_update(param_dict, new_dict):
    """
    用一个字典去更新另一个字典的元素
    :param param_dict: 第一个字典
    :param new_dict: 第二个字典
    :return: 更新后的字典
    """
    for item in new_dict:
        param_dict[item] = new_dict[item]
    return param_dict


print(lhy_update(old_dict, new_dict))
8. 实现属于自己的items方法:将字典转换成列表,字典中的键值对转换成元祖。(不能使用items方法)

yt_items(字典)
例如:{'a': 1, 'b':2, 'c':3} ---> [('a', 1), ('b', 2), ('c', 3)]

lhy_dict = {'a': 1, 'b': 2, 'c': 3}


def lhy_dict_list(param_dict):
    """
    将字典转换成列表,字典中的键值对转换成元祖。
    :param param_dict: 原字典
    :return: 新列表
    """
    list_dict = []
    for item in param_dict:
        list_dict.append((item, param_dict[item]))
    return list_dict


print(lhy_dict_list(lhy_dict))
9. 有一个列表中保存的所一个班的学生信息,使用max函数获取列表中成绩最好的学生信息和年龄最大的学生信息
all_student = [   
    {'name': '张三', 'age': 19, 'score': 90},  
    {'name': 'stu1', 'age': 30, 'score': 79},  
    {'name': 'xiaoming', 'age': 12, 'score': 87},  
    {'name': 'stu22', 'age': 29, 'score': 99}  
]  

注意: max和min函数也有参数key

list_student = [
    {'name': '张三', 'age': 19, 'score': 90},
    {'name': 'stu1', 'age': 30, 'score': 79},
    {'name': 'xiaoming', 'age': 12, 'score': 87},
    {'name': 'stu22', 'age': 29, 'score': 99}
]


def lhy_student(param_student):
    '''
    使用max函数获取列表中成绩最好的学生信息和年龄最大的学生信息
    :param param_student: 学生信息列表
    :return: 成绩最好和年龄最大的学生信息
    '''
    max_score = max(param_student, key=lambda item: item['score'])
    max_age = max(param_student, key=lambda item: item['age'])
    max_list = []
    for item in param_student:
        if item['score'] == max_score['score'] or item['age'] == max_age['age']:
            max_list.append(item)
    
    return max_list


print(lhy_student(list_student))
上一篇下一篇

猜你喜欢

热点阅读