Python基础面试,看这篇文章画重点吧,Python面试题No1

简介: Python基础面试,看这篇文章画重点吧,Python面试题No1为什么有这个系列的文章一直想写一些更加基础的文章,但是总是想不到好的点子,最近到了就业季,一大堆学生面临就业了,正好,从Python的面试题出发,分析和解答一些常见的面试题,并且总结一些文字。

Python基础面试,看这篇文章画重点吧,Python面试题No1
为什么有这个系列的文章
一直想写一些更加基础的文章,但是总是想不到好的点子,最近到了就业季,一大堆学生面临就业了,正好,从Python的面试题出发,分析和解答一些常见的面试题,并且总结一些文字。

每一讲涉及5~10道面试题,整个系列的文章初步规划有20篇。

今天的面试题
第1题:1行代码实现1到100的和?
分析:这题考察的是对Python内置函数的了解程度

Python常见的内置函数有
python内置函数
官方查询手册如下
https://docs.python.org/3/library/functions.html

图片中我框选的是比较常用的一些,你可能见过,这题考察的是sum也就是求和
具体的使用

sum(iterable[, start])

iterable -- 可迭代对象,如:列表、元组、集合。
start -- 指定相加的参数,如果没有设置这个值,默认为0。
例如

sum([1,2,3]) # 结果为6
sum([1,2,3],5) # 结果为11
python一行代码如何实现1~100的和

还要用到第二个内置函数 range()

range(start, stop[, step])

start: 计数从 start 开始。默认是从 0 开始。例如range(5)等价于range(0, 5);
stop: 计数到 stop 结束,但不包括 stop。例如:range(0, 5) 是[0, 1, 2, 3, 4]没有5
step:步长,默认为1。例如:range(0, 5) 等价于 range(0, 5, 1)
解答:

sum(range(1,101))
第2题:如何使用Python输出一个[斐波那契数列]Fibonacci
斐波那契数列(Fibonacci sequence),又称黄金分割数列、因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”。

例子:1、1、2、3、5、8、13、21、34、……

解法1:

100以内的斐波那契数列

x=1
y=1
print(x,end=" ")
print(y,end=" ")
while(True):

z=x+y
x=y
y=z
if(z>100):   #当z>100的时候,终止循环
    break

print(z,end=" ")

解法2:

递归的办法,这个需要数学公式的记忆了

在数学上,斐波纳契数列以如下被以递归的方法定义:F(1)=1,F(2)=1, F(n)=F(n-1)+F(n-2)(n>=2,n∈N*)

递归

def fibo(n):


if n <= 1:
    return n
else:
    return (fibo(n - 1) + fibo(n - 2))

m = int(input("打印前多少项?"))
if m <= 0:

print("请输入正整数!")

else:

print("fibo:")
for i in range(1,m):
    print(fibo(i))

解法3:

迭代,用递归当数据大的时候,会出现效率问题

def fibo(max):

n, a, b = 0, 0, 1
while n < max:
    yield b
    a, b = b, a + b
    n = n + 1  # 退出标识

for n in fibo(5):

print (n)

经过试验,比迭代速度快很多
time.clock()说明

cpu 的运行机制:cpu是多任务的,例如在多进程的执行过程中,一段时间内会有对各进程被处理。一个进程从从开始到结束其实是在这期间的一些列时间片断上断断续续执行的。所以这就引出了程序执行的cpu时间(该程序单纯在cpu上运行所需时间)和墙上时钟wall time。
time.time()是统计的wall time(即墙上时钟),也就是系统时钟的时间戳(1970纪元后经过的浮点秒数)。所以两次调用的时间差即为系统经过的总时间。
time.clock()是统计cpu时间 的工具,这在统计某一程序或函数的执行速度最为合适。两次调用time.clock()函数的插值即为程序运行的cpu时间。
import time
def fibo(max):

n, a, b = 0, 0, 1
while n < max:
    yield b
    a, b = b, a + b
    n = n + 1

t1 = time.clock()
for n in fibo(100):

print (n)

t2 = time.clock()

print(t2-t1)
解法4:
使用列表查看一下速度

import time
def fibo(n):

result_list = []
a, b = 0, 1
while n > 0:
    result_list.append(b)
    a, b = b, a + b
    n -= 1
return result_list

t1 = time.clock()
print(fibo(1000))
t2 = time.clock()
print(t2-t1)
当然,我看到一篇比较牛X的博客,博主后面2个办法,实在高级,贴给大家

https://blog.csdn.net/chichu261/article/details/83589767

第3题:列出几个python标准库
你先明确的是什么是Python标准库

Python标准库(standard library)。
标准库会随着Python解释器,一起安装在你的电脑中的。它是Python的一个组成部分。
这些标准库是Python为你准备好的利器,可以让编程事半功倍。

文档手册可以查阅 > https://docs.python.org/zh-cn/3.7/library/index.html

了解这个内容,这道题回答起来就非常简单了

os模块
re模块
pickle 模块
datetime模块
time模块
math模块
第4题:下面Python代码的运行结果是?
这种题目,考察的是代码默读能力

def f(x,l=[]):

for i in range(x):
    l.append(i*i)
print(l)

f(2)
f(3,[3,2,1])
f(3)
f(2)
def f(2,l=[]):

for i in range(2): # i=0,1
    l.append(i*i) # [0,1]
print(l)

f(3,[3,2,1])
def f(3,l=[3,2,1]):

for i in range(3): # i=0,1,2
    l.append(i*i) # [3,2,1,0,1,4]
print(l)

f(3)
def f(3,l=[]):

for i in range(3): # i=0,1,2
    l.append(i*i) # [0,1,4] ???对吗?
print(l)

这个地方,你需要避免踩坑,一定要注意列表是可变的,如果单独的写没有任何问题,但是函数调用的三行代码放在一起就有点意思了

f(3,[3,2,1]) 将l进行了重新赋值。但是第三次调用函数使用的依旧是第一次的l,所以避免踩坑哦~~~~

f(3)运行的正确结果是[0,1,0,1,4]

在这里插入图片描述

第5题:python实现列表去重的方法?
简单直接的办法,集合里面的元素不可以重复

my_list = [1,1,2,2,3,3,5,6,7,88]
my_set = set(my_list)
my_list = [x for x in my_set]
my_list
循环判断去重

ids = [1,1,2,2,3,3,5,6,7,88]
news_ids = []
for id in ids:

if id not in news_ids:
    news_ids.append(id)

print(news_ids)
字典的fromkeys方法实现

my_list=[1,1,2,2,3,3,5,6,7,88]
d = {}.fromkeys(my_list)
print(d.keys())
原文地址https://www.cnblogs.com/happymeng/p/10789321.html

相关文章
|
22天前
|
Python
揭秘Python编程核心:一篇文章带你深入掌握for循环与while循环的奥秘!
【8月更文挑战第21天】Python中的循环结构——for循环与while循环,是编程的基础。for循环擅长遍历序列或集合中的元素,如列表或字符串;而while循环则在未知循环次数时特别有用,基于某个条件持续执行。本文通过实例展示两种循环的应用场景,比如用for循环计算数字平方和用while循环计算阶乘。此外,还通过案例分析比较了两者在处理用户输入任务时的不同优势,强调了根据实际需求选择合适循环的重要性。
35 0
|
1月前
|
Python
Python函数式编程:你真的懂了吗?理解核心概念,实践高阶技巧,这篇文章带你一次搞定!
【8月更文挑战第6天】本文介绍了Python中的函数式编程,探讨了高阶函数、纯函数、匿名函数、不可变数据结构及递归等核心概念。通过具体示例展示了如何利用`map()`和`filter()`等内置函数处理数据,解释了纯函数的一致性和可预测性特点,并演示了使用`lambda`创建简短函数的方法。此外,文章还强调了使用不可变数据结构的重要性,并通过递归函数实例说明了递归的基本原理。掌握这些技巧有助于编写更清晰、模块化的代码。
17 3
|
2月前
|
JSON API 数据库
从零到英雄?一篇文章带你搞定Python Web开发中的RESTful API实现!
【7月更文挑战第24天】在Python的Web开发领域,掌握RESTful API至关重要。利用Flask框架,可迅速搭建API,进行用户管理的CRUD操作。需先安装Flask (`pip install Flask`),然后定义路由处理GET、POST、PUT、DELETE请求,实现用户数据的检索、创建、更新和删除。
48 5
|
2月前
|
数据采集 机器学习/深度学习 数据可视化
了解数据科学面试中的Python数据分析重点,包括Pandas(DataFrame)、NumPy(ndarray)和Matplotlib(图表绘制)。
【7月更文挑战第5天】了解数据科学面试中的Python数据分析重点,包括Pandas(DataFrame)、NumPy(ndarray)和Matplotlib(图表绘制)。数据预处理涉及缺失值(dropna(), fillna())和异常值处理。使用describe()进行统计分析,通过Matplotlib和Seaborn绘图。回归和分类分析用到Scikit-learn,如LinearRegression和RandomForestClassifier。
60 3
|
2月前
|
自然语言处理 Python
从菜鸟到大神,一篇文章带你玩转Python闭包与装饰器的深度应用
【7月更文挑战第4天】Python中的闭包和装饰器是增强代码优雅性的关键特性。闭包是能访问外部作用域变量的内部函数,如示例中的`inner_function`。装饰器则是接收函数并返回新函数的函数,用于扩展功能,如`my_decorator`。装饰器可与闭包结合,如`repeat`装饰器,它使用闭包记住参数并在调用时重复执行原函数。这些概念提升了代码复用和可维护性。
22 1
|
2月前
|
存储 安全 Java
Java面试题:Java内存管理、多线程与并发框架:一道综合性面试题的深度解析,描述Java内存模型,并解释如何在应用中优化内存使用,阐述Java多线程的创建和管理方式,并讨论线程安全问题
Java面试题:Java内存管理、多线程与并发框架:一道综合性面试题的深度解析,描述Java内存模型,并解释如何在应用中优化内存使用,阐述Java多线程的创建和管理方式,并讨论线程安全问题
24 0
|
2月前
|
存储 并行计算 安全
Java面试题:Java内存管理、多线程与并发框架的面试题解析与知识点梳理,深入Java内存模型与垃圾回收机制,Java多线程机制与线程安全,Java并发工具包与框架的应用
Java面试题:Java内存管理、多线程与并发框架的面试题解析与知识点梳理,深入Java内存模型与垃圾回收机制,Java多线程机制与线程安全,Java并发工具包与框架的应用
47 0
|
2月前
|
Python
155. 最小栈 力扣 python 空间换时间 o(1) 腾讯面试题
155. 最小栈 力扣 python 空间换时间 o(1) 腾讯面试题
|
2月前
|
存储 算法 索引
1124. 表现良好的最长时间段 (python) 前缀和 分类讨论 最大长度 力扣 面试题
1124. 表现良好的最长时间段 (python) 前缀和 分类讨论 最大长度 力扣 面试题
|
2月前
|
Python Windows
从菜鸟到大神:一篇文章带你彻底搞懂Python并发编程——线程篇与进程篇的深度较量!
【7月更文挑战第10天】Python并发编程对比线程与进程。线程适合IO密集型任务,利用`threading`模块,但GIL限制CPU并行。进程适用于CPU密集型任务,通过`multiprocessing`实现,独立内存空间,启动成本高。例子展示了如何创建和管理线程与进程以提高效率。选择取决于任务类型和资源需求。
22 0