Python面试题集锦及答案

Q1.用Python列出500~1000的所有素数?

"""
方法一:
用filter()函数判断是素数则留下,不是则过滤
"""
def prime(x):
    for temp in range(2,x):
        if x % temp == 0:
            return False    #过滤非素数
        if temp == x - 1:
            return True     #返回素数
output = filter(prime,range(500,1001))
print(list(output))

结果:
在这里插入图片描述

"""
方法二:
除了1和它本身的约数
"""
list01 = []
for i in range(500,1001):
        for j in range(2,i):#除了1和i本身,再有一个约数就不是素数
            if (i % j) == 0:
                break
        else:
            list01.append(i)
else:
    print(list01)

结果:
在这里插入图片描述
易犯的逻辑错误:
在这里插入图片描述

Q2.找出字符串中的有多少个a?

"""
方法一:if语句判断
"""
string_01 = input("请输入一个字符串:")
sum = 0
for i in string_01:
    if i == "a":
        sum += 1
else:
    print(f"字符a的个数是:{sum}")

在这里插入图片描述

"""
方法二:用filter()函数过滤。适用于可迭代对象的条件判断一类问题的处理。
"""
def sum_str(x):
    if x == "a":
        return True
    else:
        return False

string_01 = input("请输入一行字符串:")
count = 0
for i in  filter(sum_str,string_01):
    #filter(过滤函数,可迭代对象)---》可迭代对象特别地是range(1,100)的写法
    count += 1

print(f"字符a的个数:{count}")

在这里插入图片描述

Q3.random函数只能随机[0,1],如果调用该函数实现[0,1000]?

import random

print(random.randint(0,1001))   #随机产生[0,1000]之间的整数
print(random.random())          #随即产生[0,1]之间的实数。实数 = 整数+小数
                                #random(不接收参数)

在这里插入图片描述

Q4.python去除重复列表中重复的元素,最少三种方式?

拓展:列表中的元素可以是整型,字符串,不过是改改元素的类型而已,方法一样。

one_list = [1,1,2,2,3,3,4,4,5,5]	#可以将整型元素改为字符串。

def func01(one_list):
    """用集合 """
    return list(set(one_list))

def func02(one_list):
    """用字典。巧妙的利用了字典的键是唯一的达到去重的目的!!!"""
    return {}.fromkeys(one_list).keys()
    """"""
def func03(one_list):
    """用列表推导式"""
    temp_list = []
    for i in one_list:
        if i not in temp_list:
            temp_list.append(i)
    return temp_list

def func04(one_list):
    """使用排序"""
    result_list = []
    temp_list = sorted(one_list)
    i = 0
    while i < len(temp_list):
        if temp_list[i] not in result_list:
            result_list.append(temp_list[i])
        else:
            i += 1
    return result_list

if __name__ == "__main__":  #main加Tab补全
    print(func01(one_list))
    print(func02(one_list))	#此处问题见特别解释
    print(func03(one_list))
    print(func04(one_list))

在这里插入图片描述
代码做如下修改:

    # print(func02(one_list))
    two_list = []
    for i in func02(one_list):
        two_list.append(i)
    print(two_list)

结果:
在这里插入图片描述
第二种方式特殊解释:
在这里插入图片描述

Q5.怎样实现两个json的比对?

import json_tools	#pip install json_tools

def JsonDifferent():
    a = {"key1":"1","key2":"2","key3":"3"}
    b = {"key1":"1","key2":"two","key3":"three"}
    result = json_tools.diff(a,b)
    print(result)

if __name__ == '__main__':
    JsonDifferent()

在这里插入图片描述

Q6.set,map,json的区别?

集合:set()
1.集合用于包含无序的对象。与列表和元组不同集合是无序的。无法通过数字进行索引。此外,集合中的元素不能重复,因为集合自带去重功能。还有集合支持并集交集差集和对称差及操作。

json:
1.json是一种数据交换格式,支持python的数据类型如下:不支持集合
在这里插入图片描述
在这里插入图片描述
map()函数:
在这里插入图片描述
总结:
map()用于有可迭代对象【包括集合】,集合是无序的,json不支持集合。

Q7.洗牌算法,归因算法,斐波那契算法?

Q8.Python的解释器有哪些?

Q8.Python的解释器有哪些?

Q9. 列举至少5条Python3和Python2的区别?

Q9. 列举至少5条Python3和Python2的区别?

Q10.Python新式类和经典类的区别是什么

Q10.Python新式类和经典类的区别是什么

Q11. Python 之禅是什么,python中如何获取python之禅?

Q11. Python 之禅是什么,python中如何获取python之禅?

Q12.python中的DocStrings(解释文档) 有什么作用?

Q12.python中的DocStrings(解释文档) 有什么作用?

Q13. Python3中的类型注解有什么好处?如何使用?

Q13. Python3中的类型注解有什么好处?如何使用?

Q14. Python语言中的命名规范有哪些?

Q14. Python语言中的命名规范有哪些?

Q15. Python中各种下划线的作用?

在这里插入图片描述

Q16. 单引号、双引号、三引号的有什么区别?

Q17.Python中打开文件有哪些模式?

Q18.Python中read、readline和readlines的区别?

Q19.大文件只需读取部分内容,或者避免读取时候内存不足的解决方法?

Q20.什么是上下文?with上下文管理器原理?

Q21.什么是全缓冲、行缓冲和无缓冲?

Q22.什么是序列化和反序列化?json序列化时常用的四个函数是什么?

Q23.json中dumps转换数据时候如何保持中文编码?

发布了511 篇原创文章 · 获赞 822 · 访问量 25万+

猜你喜欢

转载自blog.csdn.net/YJG7D314/article/details/104713943