python相关岗位算法面试题总结(持续更新)

在人生的道路上,不管是潇洒走一回,或者是千山独行,皆须是自己想走的路,虽然,有的人并不是很快就能找到自己的方向和道路,不过,只要坚持到底,我相信,就一定可以找到自己的路,只要找到路,就不必怕路途遥远了。

导读:本篇文章讲解 python相关岗位算法面试题总结(持续更新),希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

在这里插入图片描述

一、统计字符串中出现最多的字符并输出

def fun_dict(list):
    dt = {}
    for item in list:
        if item not in dt:
            dt[item] = 1
        else:
            dt[item] += 1
    return dt


def fun_list(str):
    lt = []
    for item in str:
        lt.append(item)
    return fun_dict(lt)


str1 = "aaaccccdef"
print(fun_list(str1))

执行结果:
{‘a’: 3, ‘c’: 4, ‘d’: 1, ‘e’: 1, ‘f’: 1}

二、输出 9*9 乘法口诀表

def fun_9():
    for i in range(1,10):
        for j in range(1,i+1):
            print("{}*{}={}".format(i,j,i*j),end="\t")
        print()

fun_9()
1*1=1	
2*1=2	2*2=4	
3*1=3	3*2=6	3*3=9	
4*1=4	4*2=8	4*3=12	4*4=16	
5*1=5	5*2=10	5*3=15	5*4=20	5*5=25	
6*1=6	6*2=12	6*3=18	6*4=24	6*5=30	6*6=36	
7*1=7	7*2=14	7*3=21	7*4=28	7*5=35	7*6=42	7*7=49	
8*1=8	8*2=16	8*3=24	8*4=32	8*5=40	8*6=48	8*7=56	8*8=64	
9*1=9	9*2=18	9*3=27	9*4=36	9*5=45	9*6=54	9*7=63	9*8=72	9*9=81	

三、输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数

def fun_str():
    s=input('请输入字符串:')
    letters,space,digit,others=0,0,0,0
    for c in s:
        if c.isalpha():
            letters+=1
        elif c.isspace():
            space+=1
        elif c.isdigit():
            digit+=1
        else:
            others+=1
    print('英文字母={},空格={},数字={},其他字符={}'.format(letters,space,digit,others))

fun_str()

请输入字符串:werwe34534 e564
英文字母=6,空格=2,数字=8,其他字符=0

四、求s=a+aa+aaa+aaaa+aa…a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),

#求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字
def fun_a():
    '''
    2+22+222+2222+22222
    可以理解为:
    20000 + 2*2000 + 3*200 + 4*20 + 5*2
    也就是:
    1*2*10^4 + 2*2*10^3 + 3*2*10^2 + 4*2*10^1 + 5*2*10^0
    所以简单迭代就可以出结果
    '''
    a=2
    t=5
    num=0
    for i in range(1,t+1):
        num+=i*a*(10**(t-i))
    print(num)

fun_a()

五、题目025:求1+2!+3!+…+20!的和

def fun_tm():

    s=0
    t=1
    for n in range(1,21):
        t=t*n
        s=s+t
    print(s)
fun_tm()

六、利用递归函数调用方式,将所输入的5个字符,以相反顺序打印出来。

def fun_output(s,l):
    if l==0:
        return
    print(s[l-1])
    fun_output(s,l-1)

def fun_tm1():
    s=input('请输入字符串:')
    l=len(s)
    fun_output(s,l)

fun_tm1()

七、一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。

def tm_2():
    num=12321
    s=str(num)
    for i in range(len(s)//2):
        if s[i]!=s[-i-1]:
            print(False)
            break
    else:
        print(True)

tm_2()

八、求100之内的素数。

def tm036():
    '''
    素数就是质数
    '''
    arr = [2]
    for i in range(3,100):
        for j in arr:
            if i%j==0:
                break
        else:
            arr.append(i)
    print(arr)

[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97]

九、有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。

def tm_3():
    a=[1,4,6,8,9,23,24,55,88]
    b=99
    for i in a:
        if b<i:
            a.insert(a.index(i),b)
            break
    else:
        a.append(b)
    print(a)

tm_3()

十、取一个整数a从右端开始的4-7位

写的时候注意一下python切片是[-7:-4)左闭右开的,不包含[-4]的,所以要写成-3才能取到

def num():
    a=123456
    b=str(a)

    print(b[-3:-1])
num()

十一、输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。

def fun_tm(list):
    max_a=max(list)
    i=list.index(max_a)
    list[0],list[i]=list[i],list[0]
    print(list)

    min_b=min(list)
    j=list.index(min_b)
    list[-1],list[j]=list[j],list[-1]
    print(list)

lt=[7,2,3,6,8,5,4]
fun_tm(lt)

十二、从键盘输入一些字符,逐个把它们写到磁盘文件上,直到输入一个 # 为止。

def fun_tm():

    while True:
        c=input("请输入字符:")
        if c=="#":
            break
        else:
            with open('1.log', 'a') as f:
                f.write(c)

fun_tm()

十三、有两个磁盘文件A和B,各存放一行字母,要求把这两个文件中的信息合并(按字母顺序排列), 输出到一个新文件C中

def fun_tm1():
    with open('1.log',r) as f:
        a=f.read()
    with open('2.log',r) as f:
        b=f.read()
    with open('3.log',a) as f:
        f.write(a+b)

fun_tm1()

十四、找到年龄最大的人,并输出。

person = {"li":18,"wang":50,"zhang":20,"sun":22}
def fun_tm4():
    dt=sorted(person.items(),key=lambda x:x[1],reverse=True)
    person1={}
    for i in dt:
        person1[i[0]]=i[1]
    print(person1)
fun_tm4()

十五、写一个函数比较两个列表是否相等

l1=[1,2,3]
l2=[2,3,1]
l3=[1,4,3]

def fun_t1(l1,l2):
    lt=[]
    for i in l1:
        if i in l2:
            lt.append(i)

    if len(lt)==len(l2):
        print(True)
    else:
        print(False)
fun_t1(l1,l3)

十六、查找字符串中的重复和非重复子字符串

def fun_s(s):
    li=[]
    li1=[]
    for i in s:
        if s.count(i)>1:
            li.append(i)
        else:
            li1.append(i)
    print(li)
    print(li1)

s='wertyt'
fun_s(s)

十七、给定文件的路径,返回文件名及所在目录

import os
def test():
    path=os.path.dirname(os.path.dirname(__file__))
    filename=os.path.basename(path)
    docname=os.path.dirname(path)
    return filename,docname
print(test())

十八、单例模式

class One_Bject:
    obj=None

    def __new__(cls, *args, **kwargs):
        if obj is not None:
            cls.obj=super().__new__(cls)
        return cls.obj

if __name__ == '__main__':
    obj=One_Bject
    obj1=One_Bject
    print(id(obj))
    print(id(obj1))

执行结果:

2371821596192
2371821596192

十九:写一个函数统计传入的列表中每个数字出现的次数并返回对应的字典。

方法一:

def fun(list):
    dic={}
    for i in list:
        if i not in dic:
            dic[i]=1
        else:
            dic[i]+=1
    print(dic)
fun([12,3,4,5,3,2])

方法二:

def fun1(list):
    dic={}
    for index,item in enumerate(list):
        dic[item]=dic.get(item,0)+1
    print(dic)
fun1([12,3,4,5,3,2])

二十、使用Python代码实现遍历一个文件夹的操作。

g = os.walk('D:\second_hand_car\SecondHand_list_query')
for path, dir_list, file_list in g:
    for dir_name in dir_list:
        print(os.path.join(path,dir_name))
    for file_name in file_list:
        print(os.path.join(path,file_name))

二十一、给定一个大小为 n 的数组,找到其中的多数元素。多数元素是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素。

例如输入:[1,2,3,3,3]输出3
例如输入:[1,2,3]输出False

def tm_2(s):

    for i in s:
        if s.count(i)>len(s)*0.5:
            print(i)
            break
    else:
        print(False)

s=[2,1,2,1]
tm_2(s)

在这里插入图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/123233.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!