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

相关文章
|
30天前
|
SQL 存储 Oracle
Oracle 面试题及答案整理,最新面试题
Oracle 面试题及答案整理,最新面试题
73 0
|
1天前
|
数据安全/隐私保护 Python
Python文件与目录操作:面试中的高频考点
【4月更文挑战第15天】本文介绍了Python文件和目录操作的面试重点,包括文件的读写、目录遍历及权限管理。强调了文件关闭、异常处理、特殊文件判断以及权限位和权限字符串的理解。提供了代码示例,如读写文件、遍历目录和更改文件权限,帮助读者在面试中表现出色。掌握这些技能将对编程求职之路大有裨益。
13 0
|
1天前
|
JSON 网络协议 API
Python网络编程面试题精讲
【4月更文挑战第15天】本文介绍了Python网络编程的面试重点,包括基础Socket编程、HTTP协议与requests库、异步编程与asyncio库。通过实例解析常见面试题,强调了非阻塞套接字、异常处理、HTTP状态码检查以及异步任务管理等关键点。提供代码示例帮助读者巩固概念,助力面试准备。
9 0
|
2天前
|
调度 Python
Python多线程、多进程与协程面试题解析
【4月更文挑战第14天】Python并发编程涉及多线程、多进程和协程。面试中,对这些概念的理解和应用是评估候选人的重要标准。本文介绍了它们的基础知识、常见问题和应对策略。多线程在同一进程中并发执行,多进程通过进程间通信实现并发,协程则使用`asyncio`进行轻量级线程控制。面试常遇到的问题包括并发并行混淆、GIL影响多线程性能、进程间通信不当和协程异步IO理解不清。要掌握并发模型,需明确其适用场景,理解GIL、进程间通信和协程调度机制。
17 0
|
2天前
|
API Python
Python模块化编程:面试题深度解析
【4月更文挑战第14天】了解Python模块化编程对于构建大型项目至关重要,它涉及代码组织、复用和维护。本文深入探讨了模块、包、导入机制、命名空间和作用域等基础概念,并列举了面试中常见的模块导入混乱、不适当星号导入等问题,强调了避免循环依赖、合理使用`__init__.py`以及理解模块作用域的重要性。掌握这些知识将有助于在面试中自信应对模块化编程的相关挑战。
17 0
|
2天前
|
UED Python
掌握Python异常处理:面试中的关键考点
【4月更文挑战第14天】本文探讨了Python异常处理在面试中的重要性,涵盖核心概念、常见问题和易错点。异常处理涉及异常、捕获、异常链、自定义异常、finally子句和raise语句。面试中应注意避免过于宽泛的异常捕获、忽视异常链、在finally中误用return、自定义异常设计不实用以及异常处理与业务逻辑混杂等问题。通过理解并解决这些问题,可提升代码健壮性和面试表现。
17 0
|
7天前
|
数据采集 机器学习/深度学习 数据可视化
数据科学面试准备:解决Python数据分析常见问答和挑战
【4月更文挑战第12天】本文介绍了Python数据分析面试中常见的问题和挑战,涉及Pandas、NumPy、Matplotlib等库的基础知识,以及数据预处理、探索性分析、可视化、回归分析和分类分析的方法。例如,使用Pandas处理缺失值和异常值,利用Matplotlib和Seaborn进行数据可视化,通过Scikit-learn进行回归和分类模型的构建。
|
30天前
|
存储 安全 API
Swift 面试题及答案整理,最新面试题
Swift 面试题及答案整理,最新面试题
86 0
|
30天前
|
存储 安全 Java
Android 面试题及答案整理,最新面试题
Android 面试题及答案整理,最新面试题
55 2
|
30天前
|
存储 关系型数据库 MySQL
MySQL 面试题及答案整理,最新面试题
MySQL 面试题及答案整理,最新面试题
87 0