文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

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

2023-01-31 00:35

关注

为什么有这个系列的文章

一直想写一些更加基础的文章,但是总是想不到好的点子,最近到了就业季,一大堆学生面临就业了,正好,从Python的面试题出发,分析和解答一些常见的面试题,并且总结一些文字。

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

今天的面试题

第1题:1行代码实现1到100的和?

分析:这题考察的是对Python内置函数的了解程度

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

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

sum(iterable[, start])

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

例如

sum([1,2,3]) # 结果为6
sum([1,2,3],5) # 结果为11

python一行代码如何实现1~100的和

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

range(start, stop[, step])

  1. start: 计数从 start 开始。默认是从 0 开始。例如range(5)等价于range(0, 5);
  2. stop: 计数到 stop 结束,但不包括 stop。例如:range(0, 5) 是[0, 1, 2, 3, 4]没有5
  3. 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

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

  1. os模块
  2. re模块
  3. pickle 模块
  4. datetime模块
  5. time模块
  6. 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())

今天的5道面试题答题完毕

nice girl 今天的5道面试题回答完毕~不知道你学到了多少,下篇博客见哦!

她专科学历
27岁从零开始学习c,c++,python编程语言
29岁编写百例教程
30岁掌握10种编程语言,
用自学的经历告诉你,学编程就找梦想橡皮擦

欢迎关注她的公众号,非本科程序员

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯