• 某直播公司python自动化面试算法题目解析


    每天进步一点点,关注我们哦,每天分享测试技术文章

    本文章出自【码同学软件测试】

    码同学公众号:自动化软件测试,领取资料可加:magetest

    码同学抖音号:小码哥聊软件测试

    在面试的时候,为了考察理解能力.面试官有可能隐藏题目的细节,他可能会说

    "对一个数组里的数字,进行翻转.要求每3个进行一次."

    例如:[1,2,3,4,5,6] → [3,2,1,6,5,4]

    这时候,我们可以先进行一轮"需求确认".询问:

    • 1.数组有结尾如果不是正好3个怎么办?

        答:剩下2个,就地翻转.剩1个直接保留

    • 2.数组里的数字需要按照,从小到大的顺序么?

        不需要,单纯的每3个翻转即可.也不限制是数字

    • 3.如果是空数组,怎么处理?

           要求返回空数组

    下一步,我们整理一下需求

    编写一个函数,对数组中的内容进行翻转 规则是,每3个元素进行翻转.例如: l = [1,2,3,4,5,6] 翻转后是 l = [3,2,1,6,5,4] 初次之外 如果最后只剩下两个数,则两数翻转 [1,2,3,4,5,6,7,8] → [3,2,1,6,5,4,8,7] 如果最后只剩下一个数字,则保留这个数字 [1,2,3,4,5,6,7] → [3,2,1,6,5,4,7]

    分析题目:

    1.首先我们需要判断这个数组,到底对应 正好3的倍数/余2/余1

    这里使用整除 和 取余 计算

    2.对能整除的部分进行3个一组的翻转

    3.对余2/余1进行特殊处理

    编码
    l = [1,2,3,4,5,6,1,2,5,7,9]

    def func2(list):

       n = len(list)

    remainder = n%3

     division = n//3

    print(f'商:{division},余数:{remainder}')

     res = []

    def reverse_of_N(list,division):
     res = []
           up = 0
           down = 0
           i = 0
           while i<division:
               temp=[]
               down = down+3
               temp = list[up:down]
               temp.reverse()
               up = down
               res.extend(temp)
               i= i+1
           return res
       if n % 3 == 0:
           res = reverse_of_N(list,division)
       elif n % 3 == 2:
           l_end = list[:-3:-1]
           list = list[:-2]
           res = reverse_of_N(list,division)
           res.extend(l_end)
       elif n % 3 == 1:
           l_end = list[:-2:-1]
           list = list[:-1]
           res = reverse_of_N(list,division)
           res.extend(l_end)
       return res
    #
    l = [1,2,3,4,5,6,1,2,5,7,9]
    print(func2(l))

    运行结果

    题目

    件内容统计-当前有一份文件.

    该文件有若干行,

    免费领取码同学软件测试课程笔记+超多学习资料+完整视频+面试题,可加微信:magetest

    每一行为若干个ip地址,

    以‘|’分隔;

    题目分析

    首先我们把目标数据构造出来,并按照题目的要求手动圈定数据(如图所示)

    伪代码第一步:读取文件

    对于文件,我们可以选择按行读取 file.readlines() 使用len(list)可以获取文件的行数

    第二步:处理数据

    对读取的数据进行处理让它能够体现出"列" 可以使用split()函数,切分每一行的数据.这样,每一个切分的元素正好对于"列"的概念

    第三步:进行计数

    对处理好的数据进行遍历 如果和预期的"IP"一致,则进行一次计数

    最终返回计数结果

    代码
    def find(column=0,ipx='127.0.0.1'):
       # 以上是入参
       
       #第一步:读取文件
       with open('data.txt') as f:
           data = f.readlines()

       l = len(data)
       # 处理整个串
       res = []
       
       #第二步:处理数据
       #把一行中的几个元素分开
       for i in range(l):
           temp = data[i].split()
           s = temp[0].split('|')
           res.append(s)

       #第三步:进行计数
       flag = 0
       # 把完整的行列数据,筛选成我们预期的列的数据
       for i in range(l):
           # print(f'判断{i[column]} == {ipx}:{res[i][column_num] == ipx}')
           if res[i][column] == ipx:
               print(f'判断成功,在{i}行{column}列发现')
               # print(f'{res[i][column]}=={ipx}')
               flag = flag + 1
       print(flag)

    find(ipx='127.0.0.2',column=1)

    免费领取码同学软件测试课程笔记+超多学习资料+学习完整视频 ☞ 可加:magetest/关注码同学公众号:自动化软件测试

    本文著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

     
  • 相关阅读:
    (五)Hibernate 操作对象
    (四)关联关系一对多映射
    (三)映射对象标识符(OID)
    随机取数据
    Delphi的时间处理
    调用MYSQL存储过程实例
    php接收数据
    NodeJS入门
    idHTTP访问百度
    delphi 从TWebBrowser WebBrowser得到全部html源码
  • 原文地址:https://www.cnblogs.com/testfan2019/p/16504518.html
Copyright © 2020-2023  润新知