• 老男孩python学习第九天作业


    练习一:写函数,验证用户名是否在文件data.txt中存在,如果存在返回 True,否则返回False

    答:

    # 构造数据
    with open('data.txt', mode='w', encoding='utf-8') as f:
        f.write('1|alex|123123
    ')
        f.write('2|eric|rwerwe
    ')
        f.write('3|wupeiqi|ppp
    ')
    
    # 函数定义
    def name_judge(name):
        data_list = []
        flag = False
        with open('data.txt', mode='r', encoding='utf-8') as f:
            for item in f:
                s, n, p = item.strip().split('|')
                data_dict = {'serial': s, 'name': n, 'pwd': p}
                data_list.append(data_dict)
    
        for i in data_list:
            if name == i['name']:
                flag = True
        return flag
    
    # 函数调用
    while True:
        char = input('请输入:')
        result = name_judge(char)
        print(result)
    

    练习二:写函数,在函数内部生成如下规则的列表[1,1,2,3,5,8,13,21,34,55,....] (斐波那契数列),并返回。

    要求:函数可接收一个参数,用于指定列表中元素最大不可以超过范围

    答:

    # 函数定义 
    def fuc(num):
        result = []
        while True:
            if len(result) == 0:
                result.append(1)
            elif len(result) == 1:
                result.append(1)
            else:
                val = result[-1] + result[-2]
                if val > num:
                    break
                result.append(val)
        return result
    
    # 函数调用
    v = fuc(100)
    print(v)
    

    练习三:写函数,返回两个数字中大的那个

    答:

    func = lambda n1, n2: n1 if n1 > n2 else n2
    
    v = func(1, 2)
    print(v)
    

    练习四:看代码,写结果

    USER_LIST = []
    func = lambda x: USER_LIST.append(x)
    
    v = func('alex')
    print(v)
    print(USER_LIST)
    

    答:

    print(v):None

    print(USER_LIST):['alex']

    练习五:写函数,实现数据分页

    要求:

    1.每页显示10条数据

    2.让用户输入要查看的页码

    答:

    # 构建数据
    USER_LIST = []
    for i in range(1, 836):
        temp = {'name': '张三-%s' % i, 'email': '123%s@qq.com' % i}
        USER_LIST.append(temp)
    
    # 数据总量
    total_count = len(USER_LIST)
    # 每页展示数量
    per_page_count = 20
    # 计算最大页码数
    max_page_num, v = divmod(total_count, per_page_count)
    if v != 0:
        max_page_num += 1
    
    # 分页程序:利用列表切片功能实现
    while True:
        page_num = input('请输入要查看的页码:')
        if int(page_num) in range(1, max_page_num + 1):
            start_index = (int(page_num) - 1) * per_page_count
            end_index = int(page_num) * per_page_count
            data = USER_LIST[start_index:end_index]
            for item in data:
                print(item)
        else:
            print('页码不合法,可查看范围[%s - %s]' % (1, max_page_num))
            continue
    

    练习六:进制转换

    情景一:二进制转十进制

    v = '0b1001'
    result = int(v, base=2)
    print(result)
    

    情景二:八进制转十进制

    v = '0o1001'
    result = int(v, base=8)
    print(result)
    

    情景三:十六进制转十进制

    v = '0x1001'
    result = int(v, base=16)
    print(result)
    

    情景四:十进制转二进制

    v = 123
    result = bin(v)
    print(result)
    

    情景五:十进制转八进制

    v = 123
    result = oct(v)
    print(result)
    

    情景六:十进制转十六进制

    v = 123
    result = hex(v)
    print(result)
    

    练习七:写函数,实现IP转换

    情景一:

    要求:将ip='192.168.12.79'中的每个十进制数转换成二进制并通过','连接起来生成一个新的字符串

    答:

    ip_bin_list = []
    ip = '192.168.12.79'
    ip_list = ip.split('.')
    for i in ip_list:
        ip_bin_list.append(bin(int(i)))
    ip_new = ','.join(ip_bin_list)
    print(ip_new)
    

    情景二:

    要求:将ip='192.168.12.79'中的每个十进制数转换成二进制,并将转换后的二进制数字拼接转换成一个十进制数字

    答:

    ip_bin_list = []
    ip_bin_new_list = []
    ip = '192.168.12.79'
    ip_list = ip.split('.')
    for i in ip_list:
        ip_bin_list.append(bin(int(i))[2:])
    for item in ip_bin_list:
        if len(item) < 8:
            item = (8 - len(item)) * '0' + item
        ip_bin_new_list.append(item)
    ip_new = '0b' + ''.join(ip_bin_new_list)
    ip_new_int = int(ip_new, base=2)
    print(ip_new_int)
    

    练习八:函数中高级

    情景一:

    name = 'alex'
    def base():
        print(name)
    
    def func():
        name = 'eric'
        base()
    
    func()
    

    答:

    打印结果:alex

    情景二:

    name = 'alex'
    def func():
    	name = 'eric'
    	def base():
        	print(name)
        base()
        
    func()
    

    答:

    打印结果:eric

    情景三:

    name = 'alex'
    def func():
    	name = 'eric'
    	def base():
        	print(name)
        return base
        
    base = func()
    base()
    

    答:

    打印结果:eric

    情景四:

    info = []
    
    def func():
    	print(item)
    
    for item in range(10):
    	info.append(func)
        
    info[0]()
    
    

    答:

    打印结果:9

    情景五:

    info = []
    
    def func(i):
        def inner():
            print(i)
    	return inner
    
    for item in range(10):
    	info.append(func(item))
        
    info[0]()
    info[1]()
    info[4]()
    
    

    答:

    打印结果:

    0

    1

    4

    练习九:生成随机验证码

    答:

    import random
    
    # 函数定义
    def get_random_code(length=6, alpha=True):
        data = []
        for i in range(length):
            v = chr(random.randint(48, 57))
            if alpha:
                upper_v = chr(random.randint(65, 90))
                lower_v = chr(random.randint(97, 122))
                v = random.choice([v, upper_v, lower_v])
            data.append(v)
        return ''.join(data)
    
    # 函数调用
    code = get_random_code()
    print(code)
    
    

    练习十:高级函数

    场景一:将列表中每个元素都加100

    答:

    v1 = [11, 22, 33, 44]
    
    result = map(lambda x: x + 100, v1)
    print(list(result))
    
    

    场景二:将两个列表中相同索引位置的数相加并返回

    答:

    v1 = [11, 22, 33, 44]
    v2 = [55, 66, 77, 88]
    
    result = map(lambda x, y: x + y, v1, v2)
    print(list(result))
    
    

    场景三:将列表中非数字类型元素剔除

    答:

    v1 = [11, 22, 33, 'asd', 44, 'def']
    
    # 方法一:
    result = filter(lambda x: type(x) == int, v1)
    print(list(result))
    
    # 方法二:
    result = filter(lambda x: True if type(x) == int else False, v1)
    print(list(result))
    
    

    场景四:求列表中所有数字之和

    答:

    from functools import reduce
    
    v1 = [11, 22, 33, 44]
    
    result = reduce(lambda x, y: x + y, v1)
    print(result)
    
    

    练习十一:MD5加密

    答:

    import hashlib
    
    def get_md5(data):
        obj = hashlib.md5('asdasasdas'.encode('utf-8'))
        obj.update(data.encode('utf-8'))
        result = obj.hexdigest()
        return result
    
    val = get_md5('123')
    print(val)
    
    
  • 相关阅读:
    Python脚本运行出现语法错误:IndentationError: unindent does not match any outer indentation level
    Python3 运算符
    Python3 注释
    Python3 解释器
    Python3 环境搭建
    Python 3 教程
    Python3 基本数据类型
    趣闻|Python之禅(The Zen of Python)
    ios开发笔记根据传入字符串的长度动态生成label,并按照屏幕宽度排列
    iOS开发设置tableview的分割线
  • 原文地址:https://www.cnblogs.com/zhanglongfei/p/11778169.html
Copyright © 2020-2023  润新知