• 经典例题(Python)


    经典例题

    1.if嵌套

    1.用户输入账号
    2.用户输入密码
    3.判断用户的账号是不是alex
    4.如果账号是alex在继续判断密码是不是alexdsb
    5.账号和密码都正确提示用户alex就是一个dsb
    6.如果账号正确密码错误提示密码错误
    7.如果账号错误提示账号错误

    user = input("请输入账号:")
    pwd = input("请输入密码:")
    if user == "alex":
    if pwd == "alexdsb":
    print("alex就是一个dsb")
    else:
    print("密码错误!")
    else:
    print("账号错误!")

    user = input("请输入账号:")
    pwd = input("请输入密码:")

    2.车牌区域划分

    车牌区域划分, 现给出以下车牌. 根据车牌的信息, 分析出各省的车牌持有量. (选做题)
    cars = ['鲁A32444','鲁B12333','京B8989M','⿊C49678','⿊C46555','沪 B25041']
    locals = {'沪':'上海', '⿊':'⿊⻰江', '鲁':'⼭东', '鄂':'湖北', '湘':'湖南'}
    结果: {'⿊⻰江':2, '⼭东': 2, '上海': 1}

    答案:cars = ['鲁A32444','鲁B12333','京B8989M','⿊C49678','⿊C46555','沪 B25041']
    locals = {'沪':'上海', '⿊':'⿊⻰江', '鲁':'⼭东', '鄂':'湖北', '湘':'湖南'}

    dic = {} # {}
    for i in cars:
    key = i[0] # 获取车牌的第一个字
    if key in locals:
    new_key = locals[key] # 结果的键
    dic[new_key] = dic.get(new_key,0) + 1 #get到dic中键的值,每次加一
    print(dic)

    3.找小岛问题:

    给定一个由 '1'(陆地)和 '0'(水)组成的的二维网格,计算岛屿的数量。一个岛被水包围,并且它是通过水平方向或垂直方向上相邻的陆地连接而成的。假设网格的四个边均被水包围。

    思路:先找一个路地块.只要与他相邻的陆地,全都变成非0或1(但本身这一块1不变),可以是2,3...然后,都循环一遍后,就直接找还有几个1,就有几个岛

    lst = [[1, 1, 0, 0, 0],
           [1, 1, 0, 0, 0],
           [0, 0, 1, 0, 0],
           [0, 0, 0, 1, 1]]
    def is_island(lst,i,j):
        if i < 0 or j < 0 or i >= len(lst) or j >= len(lst[i]):
            return
        if lst[i][j] == 1:
            lst[i][j] = 2 #只要是这个小岛上的都变成2,只保留原有的第一块1
            is_island(lst,i,j-1)
            is_island(lst,i,j+1)
            is_island(lst,i+1,j)
            is_island(lst,i-1,j)
        else:
            return
    def count_island(lst):
        count = 0
        for i in range(0,len(lst)):
            for j in range(0,len(lst[i])):
                if lst[i][j] == 1: #最后循环一遍地图,有一个1就是一个小岛
                    is_island(lst,i,j)
                    count += 1
        return count
    
    print(count_island(lst))

    4.请编写一个python程序,每秒采集本机cpu使用率,并输出到文件中。

    import psutil
    import time
    
    # cpu_res = psutil.cpu_percent()#查看当前电脑的cpu占用率
    # print(cpu_res)
    
    # 每一秒获取获取cpu的占有率 --->持久化保存
    # 如何将时间和对应的cpu占有率去匹配
    
    while True:
        # 获取当前时间和cpu的占有率
        t = time.localtime()#当前时间
        cpu_time = '%d:%d:%d' % (t.tm_hour, t.tm_min, t.tm_sec)
        cpu_res = psutil.cpu_percent()#cpu占用率
        print(cpu_res)
    
        # 保存在文件中
        with open('cpu.txt', 'a+') as f:#写入文件,注意是a不是w
            f.write('%s %s 
    ' % (cpu_time, cpu_res))
        time.sleep(1)#一秒后继续查询

    5.数据格式处理:

    假设前端同学通过接口向后端传了天猫的行业信息,例如:
    industry_list = [
    {
    "parent_ind" : "女装",
    "name" : "连衣裙"
    },
    {
    "name": "女装"
    },
    {
    "parent_ind" : "女装",
    "name" : "半身裙"
    },
    {
    "parent_ind" : "女装",
    "name" : "A字裙"
    },
    {
    "name": "数码"
    },
    {
    "parent_ind" : "数码",
    "name": "电脑配件"
    },
    {
    "parent_ind" : "电脑配件",
    "name": "内存"
    },
    ]
    
    为了取用方便,我们希望可以将其转换为树状格式,例如:
    {
    "数码": {
    "电脑配件": {
    "内存" : {}
    }
    },
    "女装" : {
    "连衣裙": {},
    "半身裙": {},
    "A字裙": {}
    }
    }
    实现一个方法完成这个转换,时间复杂度请控制在O(n)
    def convert_format(data):
    pass

    解题代码:

    industry_list = [
        {
            "parent_ind": "女装",
            "name": "连衣裙"
        },
        {
            "name": "女装"
        },
        {
            "parent_ind": "女装",
            "name": "半身裙"
        },
        {
            "parent_ind": "女装",
            "name": "A字裙"
        },
        {
            "name": "数码"
        },
    
        {
            "parent_ind": "数码",
            "name": "电脑配件"
        },
        {
            "parent_ind": "电脑配件",
            "name": "内存"
        },
    
    ]
    
    
    def convert_format(data):
        # 核心思想就是利用地址共用,在add里面放所有能到达的字典的地址,
        # 而这些地址和dic中调用的内容都是一个地址,所以,修改add的内容就是改dic里的内容
        dic = {}
        # 结果
    
        add = {}
        # 所有字典的共用地址
    
        spe = {}
        # 其他情况
    
        for i in data:
            parent_ind = i.get('parent_ind')
            name = i.get('name')
            if not parent_ind:
                add[name] = dic.setdefault(name, {})
            else:
                if parent_ind in dic:
                    add[name] = dic.get(parent_ind).setdefault(name, {}) #地址共用
                elif parent_ind in add:
                    add[name] = add.get(parent_ind).setdefault(name, {})#地址共用
                else:
                    spe.setdefault(parent_ind, {}).setdefault(name, {})#地址共用
        for k, v in spe.items():
            add.setdefault(k, {}).update(v)
        return dic
    
    
    print(convert_format(industry_list))
  • 相关阅读:
    Android音频(7)——项目实战——耳麦插拔
    Android音频(6)——音频系统分析
    Android音频(5)——框架中的概念和涉及的文件
    Android音频(4)——音频驱动实战
    Android音频(3)——ALSA声卡驱动——DAPM
    Android音频(2)——ALSA声卡驱动——ASoC
    Mvc中Session导致action不异步的问题
    RabbitMQ 声明Queue时的参数们的Power
    RabbitMQ 实现RPC
    RabbitMQ Topic exchange
  • 原文地址:https://www.cnblogs.com/shengjunqiye/p/11632231.html
Copyright © 2020-2023  润新知