zoukankan      html  css  js  c++  java
  • 09 练习题:函数、参数

    # 1.写函数,检查获取传入列表或元组对象的所有奇数位索引对应的元素,并将其作为新列表返回给调用者。
    def odd_index(iterable):
        return iterable[1::2]
    
    
    # 2.写函数,判断用户传入的对象(字符串、列表、元组)长度是否大于5。
    def longer_than_5(iterable):
        # return True if len(iterable) > 5 else False
        return len(iterable) > 5
    
    # 3.写函数,检查传入列表的长度,如果大于2,那么仅保留前两个长度的内容,并将新内容返回给调用者。
    def retain_2(list):
        return list if len(list) <= 2 else list[:2]
    
    
    # 4.写函数,计算传入函数的字符串中,[数字]、[字母] 以及 [其他]的个数,并返回结果。
    def count_type(string):
        count_list = [0, 0, 0]
        for char in string:
            if char.isdecimal() == True:
                count_list[0] += 1
            elif char.isalpha() == True:
                count_list[1] += 1
            else:
                count_list[2] += 1
        return count_list
    
    
    # 5.写函数,接收两个数字参数,返回比较大的那个数字。
    def cmp(digit_1, digit_2):
        return digit_1 if digit_1 > digit_2 else digit_2
    
    
    # 6.写函数,检查传入字典的每一个value的长度,如果大于2,那么仅保留前两个长度的内容,并将新内容返回给调用者。
    # dic = {"k1": "v1v1", "k2": [11,22,33,44]}
    # PS:字典中的value只能是字符串或列表
    def retain_value_2(dic):
        for key in dic.keys():
            dic[key] = dic[key] if len(dic[key]) < 2 else dic[key][:2]
        return dic
    
    
    # 7.写函数,此函数只接收一个参数且此参数必须是列表数据类型,此函数完成的功能是返回给调用者一个字典,此字典的键值对为此列表的索引及对应的元素。例如传入的列表为:[11,22,33] 返回的字典为 {0:11,1:22,2:33}。
    def list_to_dic(list):
        dic = {}
        for i in range(len(list)):
            dic.setdefault(i, list[i])
        return dic
    
    
    # 8.写函数,函数接收四个参数分别是:姓名,性别,年龄,学历。用户通过输入这四个内容,然后将这四个内容传入到函数中,此函数接收到这四个内容,将内容追加到一个student_msg文件中。
    def append_student(name, gender, age ,degree):
        with open(r'03 作业student_msg.txt', encoding='utf-8', mode='a') as file_handler:
            file_handler.write(name + ' ' + gender + ' ' + age + ' ' + degree + '
    ')
    while 1:
        name = input('name:
    ')
        gender = input('gender:
    ')
        age = input('age:
    ')
        degree = input('degree:
    ')
        append_student(name, gender, age, degree)
        if input('continue append?(input q or Q to exit)
    ').upper() == 'Q':
            break
    
    
    # 9.对第9题升级:支持用户持续输入,Q或者q退出,性别默认为男,如果遇到女学生,则把性别输入女。
    def append_student(name, age ,degree, gender='girl'):
        with open(r'03 作业student_msg.txt', encoding='utf-8', mode='a') as file_handler:
            file_handler.write(name + ' ' + gender + ' ' + age + ' ' + degree + '
    ')
    while 1:
        name = input('name:
    ')
        gender = input('gender:
    ')
        age = input('age:
    ')
        degree = input('degree:
    ')
        if gender == '':
            append_student(name, age, degree)
        else:
            append_student(name, age, degree, gender)
        if input('continue append?(input q or Q to exit)
    ').upper() == 'Q':
            break
    
    
    # 写函数,用户传入修改的文件名,与要修改的内容,执行函数,完成整个文件的批量修改操作(选做题)。
    def revise_file(old_contents, new_contents, file_name):
        import os
        with open(r'03 作业{}'.format(file_name), encoding='utf-8', mode='r') as file_handler_1,
                open(r'03 作业{}.bak'.format(file_name), encoding='utf-8', mode='w') as file_handler_2:
            for line in file_handler_1:
                line = line.replace(old_contents,new_contents)
                file_handler_2.write(line)
        os.remove(r'03 作业{}'.format(file_name))
        os.rename(r'03 作业{}.bak'.format(file_name), r'03 作业{}'.format(file_name))
    revise_file('alex', 'SB', 'alex自述')
    
  • 相关阅读:
    ASP.NET vs MVC vs WebForms
    asp.net web forms和asp.net mvc比较
    cxx11emu.h 和 logprint.h
    获取代码中宏定义等信息的一些手段
    openwrt luci web分析
    QSDK与OPENWRT区别
    OpenWrt 中查看 Flash RAM CPU 信息
    深入剖析Linux IO原理和几种零拷贝机制的实现
    Linux ass2srt
    bsd pkg install gcc gmake cmake gdb cgdb
  • 原文地址:https://www.cnblogs.com/raygor/p/13258294.html
Copyright © 2011-2022 走看看