zoukankan      html  css  js  c++  java
  • 大作业day3

    练习题
    1. 文件a1.txt内容

    序号 部门 人数 平均年龄 备注
    1 python 30 26 单身狗
    2 Linux 26 30 没对象
    3 运营部 20 24 女生多
    .......
    通过代码,将其构建成这种数据类型:
    [{'序号':'1','部门':Python,'人数':30,'平均年龄':26,'备注':'单身狗'},......]
    import os
    a = ''' 序号     部门      人数      平均年龄      备注
    1       python    30         26         单身狗
    2       Linux     26         30         没对象
    3       运营部     20         24         女生多
    '''
    with open('a1.txt',encoding='utf-8',mode='w+') as write_f:
        write_f.write(a)
    
    l1 = [] # 定义一个list
    f1 = open('a1.txt',encoding='utf-8',mode='r')
    data1 = f1.readline().split()
    
    for i in f1:  # 循环文件所有元素
        dic = {}  # 定义一个dict
        l = i.split()  # 将得到结果删除空格
        for j in range(len(l)):  # 循环每个f1文件每行的长度
            dic[data1[j]] = l[j] # 利用输出的长度来得到结果键值对
        l1.append(dic)  # 一个循环玩后添加到l1元组中
    print(l1)
    f1.close()
    2. 传入函数的字符串中,[数字]、[字母]、[空格] 以及 [其他]的个数,并返回结果。
    def func1(x):
        num = 0
        letter = 0
        blank = 0
        other = 0
        for i in x:
            if i.isdecimal():  # 数字个数
                num += 1
            elif i.isalpha():  # 字母个数
                letter += 1
            elif i.isspace():  # 空格个数
                blank += 1
            else:              # 其他字符
                other += 1
        print("数字个数为{},字母个数为{},空格个数为{},其他字符个数为{}".format(num,letter,blank,other))
    func1('jinyuan123;;;  ')
    3. 写函数,接收两个数字参数,返回比较大的那个数字。
    def func2(x, y):
        return x if x > y else y
    
    
    print(func2(88, 44))
    4. 写函数,检查传入字典的每一个value的长度,如果大于2,那么仅保留前两个长度的内容,并将新内容返回给调用者。
    dic = {"k1": "v1v1", "k2": [11,22,33,44]}
    PS:字典中的value只能是字符串或列表
    def func3(arg):
        ret = {}
        for key,value in arg.items():  # 把每个key、value取出
            if len(value) > 2:
                ret[key] = value[:2]   # 将ret添加key、value
            else:
                ret[key] = value
        return ret
    
    dic = {"k1": "v1v1", "k2": [11,22,33,44],'k3':'aaaaaa'}
    print(func3(dic))
    5. 写函数,此函数只接收一个参数且此参数必须是列表数据类型,此函数完成的功能是返回给调用者一个字典,
    此字典的键值对为此列表的索引及对应的元素。例如传入的列表为:[11,22,33] 返回的字典为 {0:11,1:22,2:33}。
    def func4(*args):
        a = 0
        b = {}   # 定义字典
        for i in args[0]:  # args[0]用于取出值
            b[a] = i       # 值添加b字典中
            a += 1
        return b
    print(func4([11,22,33,44]))
    6. 写函数,函数接收四个参数分别是:姓名,性别,年龄,学历。用户通过输入这四个内容,
    然后将这四个内容传入到函数中,此函数接收到这四个内容,将内容追加到一个student_msg文件中。
    def func5(*args):  # 传入值
        import os      # 调用模块
        with open('student_msg',encoding='utf-8',mode='a') as f1: # 打开文件(或者打开文件)a为追加
            for i in args:    # 把每个值循环添加到文件里
                f1.write(i+'
    ')
    
    name = input("输入名字:")
    sex = input("输入性别:")
    age = input("输入年龄:")
    degree = input("输入学历:")
    func5(name,sex,age,degree)
    7. 对第6题升级:支持用户持续输入,Q或者q退出,性别默认为男,如果遇到女学生,则把性别输入女。
    def func7(name,age,degree,sex = ''):
        import os
        a = name,sex,age,degree
        with open('student_msg',encoding='utf-8',mode='a') as f1:
            for i in a:
                f1.write(i+'
    ')
    while 1:
        name = input("输入名字q/Q退出:").upper()
        if name == 'Q':
            break
        # sex = input("输入性别默认为男:")
        age = input("输入年龄:")
        degree = input("输入学历:")
        sex = input("输入性别默认为男:")
        if sex == '':
            func7(name,sex,age,degree)
        else:
            func7(name,age,degree)
    8. 写函数,用户传入修改的文件名,与要修改的内容,执行函数,完成整个文件的批量修改操作。
    读代码,回答:代码中,打印出来的值a,b,c分别是什么?为什么?
    a=10
    b=20
    def test5(a,b):
    print(a,b)
    c = test5(b,a)
    print(c)
    # a = 20  b = 10  c = None
    # 因为a、b作为实参时调用了位置,所以a=20  b=10
    # c因为只是用来调用函数,而在函数里没有使用return来构造一个返回值
    9. 读代码,回答:代码中,打印出来的值a,b,c分别是什么?为什么?
    a=10
    b=20
    def test5(a,b):
    a=3
    b=5
    print(a,b)
    c = test5(b,a)
    print(c)
    # a = 3   b = 5
    # 因为a、b在全局虽然已经定义了变量,但是在函数体里又重新赋值
    # c因为只是用来调用函数,而在函数里没有使用return来构造一个返回值
    10. 写函数,传入函数中多个实参(均为可迭代对象如字符串,列表,元祖,集合等),将每个实参的每个元素依次添加到函数的动态参数args里面.
    例如 传入函数两个参数[1,2,3] (22,33)最终args为(1,2,3,22,33)
    def func10(*args):
        print(args)
    func10(*[1,2,3],*(22,33))  # 特殊定义
    11. 写函数,传入函数中多个实参(实参均为字典),将每个实参的键值对依次添加到函数的动态参数kwargs里面.
    例如 传入函数两个参数{‘name’:’alex’} {‘age’:1000}最终kwargs为{‘name’:’alex’ ,‘age’:1000}
    def func11(**kwargs):
        print(kwargs)
    func11(**{"name":"alex"} ,**{"age":1000})  #特殊定义

    12判断下列函数是否成立

    # 题目一:
    # a = 2
    # def wrapper():
    #     print(a)
    # wrapper()
    # 成立
    
    # 题目二:
    # a = 2
    # def wrapper():
    #     a += 1
    # print(a)
    # wrapper()
    # 不成立  因为a为全局变量,函数体内不能对全局变量进行修改,只能调用
    
    # 题目三:
    # def wrapper():
    #     a = 1
    #
    #     def inner():
    #         print(a)
    #     inner()
    # wrapper()
    # 成立
    
    # 题目四:
    # def wrapper():
    #     a = 1
    #
    #     def inner():
    #         a += 1
    #         print(a)
    #     inner()
    # wrapper()
    # 不成立 因为函数体就算嵌套都是单独存在的,只能进行调用,不能修改
    13. 写函数,接收两个数字参数,将较小的数字返回.
    def func13(x,y):
        return x if x < y else y
    print(func13(1,2))
    14. 写函数,接收一个参数(此参数类型必须是可迭代对象),将可迭代对象的每个元素以’_’相连接,形成新的字符串,并返回.
    例如 传入的可迭代对象为[1,'老男孩','武sir']返回的结果为’1_老男孩_武sir
    def func14(args):
        print(args)
        a = ""    # 定义一个None
        for i in args:  # 调用每个元素
            a += str(i)+'_'  # 在每个元素后面添加'_'
        return a.strip('_')  # 删除字符串左右'_'
    print(func14([1,'老男孩','武sir']))
    15. 写函数,传入n个数,返回字典{‘max’:最大值,’min’:最小值}
    例如:如:min_max(2,5,7,8,4) 返回:{‘max’:8,’min’:2}(此题用到max(),min()内置函数)
    def func15(*args):
        print('min:',min(args),'max:',max(args)) # min函数取最小  max函数取最大
    func15(9,3,4,6)
    16. 写函数,传入一个参数n,返回n的阶乘
    例如:cal(7) 计算7*6*5*4*3*2*1
    def func16(n):
        sum = 1
        for i in range(n, 0, -1):  # n为传入的值 倒叙复制
            sum = sum * i     # 求和 现有sum=1 1*7=7 然后7*6一直递归42*5
        return sum    # 返回结果
    print(func16(7))
    17. 写函数,返回一个扑克牌列表,里面有52项,每一项是一个元组
    例如:[(‘红心’,2),(‘草花’,2), …(‘黑桃’,‘A’)]
    def func17():
        let1 = [2, 3, 4, 5, 6, 7, 8, 9, 10, 'J', 'Q', 'K', 'A']
        let2 = ['红心','草花','黑桃','方片']
        let3 = []
        for i in let1:    # 循环let1所有元素
            for j in let2:   # 循环let2所有元素
                let3.append((j,i))  # 将值添加到let3中,注意加(),按要求取每对为元组
        return let3
    print(func17())
    
    
    努力到无能为力,拼搏到感动自己。
  • 相关阅读:
    Python装饰器
    Python学习【第十二篇】模块(2)
    Python学习【第十一篇】模块(1)
    Python学习【第十篇】基础之杂货铺
    Python学习【第九篇】函数
    Python学习【第八篇】Set集合
    Python学习【第七篇】基本数据类型
    Python学习【第六篇】运算符
    Python学习【第五篇】循环语句
    Python学习【第四篇】用户输入及判断
  • 原文地址:https://www.cnblogs.com/jin-yuana/p/9889722.html
Copyright © 2011-2022 走看看