1. 首页
  2. 未分类

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

“u003Cdivu003Eu003Cpu003Eu003Cstrongu003E发现有很多想要学习Python却不知道如何下手的朋友,我这里整理了一些关于Python的学习资料,从基础到入门到实战都有!有需要的朋友可以关注并私信“01”免费获取…u003Cu002Fstrongu003Eu003Cu002Fpu003Eu003Cpu003E一直想写一些更加基础的文章,但是总是想不到好的点子,最近到了就业季,一大堆学生面临就业了,正好,从Python的面试题出发,分析和解答一些常见的面试题,并且总结一些文字。u003Cu002Fpu003Eu003Cpu003E每一讲涉及5~10道面试题,整个系列的文章初步规划有20篇。u003Cu002Fpu003Eu003Cpu003E今天的面试题u003Cu002Fpu003Eu003Cpu003E第1题:1行代码实现1到100的和?u003Cu002Fpu003Eu003Cpu003E分析:这题考察的是对Python内置函数的了解程度u003Cu002Fpu003Eu003Cpu003EPython常见的内置函数有u003Cu002Fpu003Eu003Cpu003Epython内置函数u003Cu002Fpu003Eu003Cpu003E官方查询手册如下u003Cu002Fpu003Eu003Cpu003Ehttps:u002Fu002Fdocs.python.orgu002F3u002Flibraryu002Ffunctions.htmlu003Cu002Fpu003Eu003Cdiv class=”pgc-img”u003Eu003Cimg src=”http:u002Fu002Fp1.pstatp.comu002Flargeu002Fdfic-imagehandleru002F3f51c888-4179-471f-b7dd-e0bc72de887d” img_width=”1200″ img_height=”1200″ alt=”Python基础面试,看这篇文章画重点吧,Python面试题No1″ inline=”0″u003Eu003Cp class=”pgc-img-caption”u003Eu003Cu002Fpu003Eu003Cu002Fdivu003Eu003Cpu003E图片中我框选的是比较常用的一些,你可能见过,这题考察的是sum也就是求和u003Cu002Fpu003Eu003Cpu003E具体的使用u003Cu002Fpu003Eu003Cpu003Esum(iterable[, start])u003Cu002Fpu003Eu003Cpu003Eiterable — 可迭代对象,如:列表、元组、集合。u003Cu002Fpu003Eu003Cpu003Estart — 指定相加的参数,如果没有设置这个值,默认为0。u003Cu002Fpu003Eu003Cpu003E例如u003Cu002Fpu003Eu003Cpu003Esum([1,2,3]) # 结果为6u003Cu002Fpu003Eu003Cpu003Esum([1,2,3],5) # 结果为11u003Cu002Fpu003Eu003Cpu003Epython一行代码如何实现1~100的和u003Cu002Fpu003Eu003Cpu003E还要用到第二个内置函数 range()u003Cu002Fpu003Eu003Cpu003Erange(start, stop[, step])u003Cu002Fpu003Eu003Cpu003Estart: 计数从 start 开始。默认是从 0 开始。例如range(5)等价于range(0, 5);u003Cu002Fpu003Eu003Cpu003Estop: 计数到 stop 结束,但不包括 stop。例如:range(0, 5) 是[0, 1, 2, 3, 4]没有5u003Cu002Fpu003Eu003Cpu003Estep:步长,默认为1。例如:range(0, 5) 等价于 range(0, 5, 1)u003Cu002Fpu003Eu003Cpu003E解答:u003Cu002Fpu003Eu003Cpu003Esum(range(1,101))u003Cu002Fpu003Eu003Cpu003E第2题:如何使用Python输出一个[斐波那契数列]Fibonacciu003Cu002Fpu003Eu003Cpu003E斐波那契数列(Fibonacci sequence),又称黄金分割数列、因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”。u003Cu002Fpu003Eu003Cpu003E例子:1、1、2、3、5、8、13、21、34、……u003Cu002Fpu003Eu003Cpu003E解法1:u003Cu002Fpu003Eu003Cpu003E100以内的斐波那契数列u003Cu002Fpu003Eu003Cpu003Ex=1u003Cu002Fpu003Eu003Cpu003Ey=1u003Cu002Fpu003Eu003Cpu003Eprint(x,end=” “)u003Cu002Fpu003Eu003Cpu003Eprint(y,end=” “)u003Cu002Fpu003Eu003Cpu003Ewhile(True):u003Cu002Fpu003Eu003Cpreu003Ez=x+yu003Cbru003Ex=yu003Cbru003Ey=zu003Cbru003Eif(z>100): #当z>100的时候,终止循环u003Cbru003E breaku003Cbru003Eprint(z,end=” “)u003Cbru003Eu003Cu002Fpreu003Eu003Cpu003E解法2:u003Cu002Fpu003Eu003Cpu003E递归的办法,这个需要数学公式的记忆了u003Cu002Fpu003Eu003Cpu003E在数学上,斐波纳契数列以如下被以递归的方法定义:F(1)=1,F(2)=1, F(n)=F(n-1)+F(n-2)(n>=2,n∈N*)u003Cu002Fpu003Eu003Cdiv class=”pgc-img”u003Eu003Cimg src=”http:u002Fu002Fp3.pstatp.comu002Flargeu002Fdfic-imagehandleru002F8ff71e16-1ee4-40e9-90e5-a643398c0fe8″ img_width=”1200″ img_height=”720″ alt=”Python基础面试,看这篇文章画重点吧,Python面试题No1” inline=”0″u003Eu003Cp class=”pgc-img-caption”u003Eu003Cu002Fpu003Eu003Cu002Fdivu003Eu003Ch1u003Eu003Cstrongu003E递归u003Cu002Fstrongu003Eu003Cu002Fh1u003Eu003Cpu003Edef fibo(n):u003Cu002Fpu003Eu003Cpreu003Eu003Cbru003Eif n <= 1:u003Cbru003E return nu003Cbru003Eelse:u003Cbru003E return (fibo(n – 1) + fibo(n – 2))u003Cbru003Eu003Cu002Fpreu003Eu003Cpu003Em = int(input(“打印前多少项?”))u003Cu002Fpu003Eu003Cpu003Eif m <= 0:u003Cu002Fpu003Eu003Cpreu003Eprint(“请输入正整数!”)u003Cbru003Eu003Cu002Fpreu003Eu003Cpu003Eelse:u003Cu002Fpu003Eu003Cpreu003Eprint(“fibo:”)u003Cbru003Efor i in range(1,m):u003Cbru003E print(fibo(i))u003Cbru003Eu003Cu002Fpreu003Eu003Cpu003E解法3:u003Cu002Fpu003Eu003Cpu003E迭代,用递归当数据大的时候,会出现效率问题u003Cu002Fpu003Eu003Cpu003Edef fibo(max):u003Cu002Fpu003Eu003Cpreu003En, a, b = 0, 0, 1u003Cbru003Ewhile n < max:u003Cbru003E yield bu003Cbru003E a, b = b, a + bu003Cbru003E n = n + 1 # 退出标识u003Cbru003Eu003Cu002Fpreu003Eu003Cpu003Efor n in fibo(5):u003Cu002Fpu003Eu003Cpreu003Eprint (n)u003Cbru003Eu003Cu002Fpreu003Eu003Cpu003E经过试验,比迭代速度快很多u003Cu002Fpu003Eu003Cpu003Etime.clock()说明u003Cu002Fpu003Eu003Cpu003Ecpu 的运行机制:cpu是多任务的,例如在多进程的执行过程中,一段时间内会有对各进程被处理。一个进程从从开始到结束其实是在这期间的一些列时间片断上断断续续执行的。所以这就引出了程序执行的cpu时间(该程序单纯在cpu上运行所需时间)和墙上时钟wall time。u003Cu002Fpu003Eu003Cpu003Etime.time()是统计的wall time(即墙上时钟),也就是系统时钟的时间戳(1970纪元后经过的浮点秒数)。所以两次调用的时间差即为系统经过的总时间。u003Cu002Fpu003Eu003Cpu003Etime.clock()是统计cpu时间 的工具,这在统计某一程序或函数的执行速度最为合适。两次调用time.clock()函数的插值即为程序运行的cpu时间。u003Cu002Fpu003Eu003Cpu003Eimport timeu003Cu002Fpu003Eu003Cpu003Edef fibo(max):u003Cu002Fpu003Eu003Cpreu003En, a, b = 0, 0, 1u003Cbru003Ewhile n < max:u003Cbru003E yield bu003Cbru003E a, b = b, a + bu003Cbru003E n = n + 1u003Cbru003Eu003Cu002Fpreu003Eu003Cpu003Et1 = time.clock()u003Cu002Fpu003Eu003Cpu003Efor n in fibo(100):u003Cu002Fpu003Eu003Cpreu003Eprint (n)u003Cbru003Eu003Cu002Fpreu003Eu003Cpu003Et2 = time.clock()u003Cu002Fpu003Eu003Cpu003Eprint(t2-t1)u003Cu002Fpu003Eu003Cpu003E解法4:u003Cu002Fpu003Eu003Cpu003E使用列表查看一下速度u003Cu002Fpu003Eu003Cpu003Eimport timeu003Cu002Fpu003Eu003Cpu003Edef fibo(n):u003Cu002Fpu003Eu003Cpreu003Eresult_list = []u003Cbru003Ea, b = 0, 1u003Cbru003Ewhile n > 0:u003Cbru003E result_list.append(b)u003Cbru003E a, b = b, a + bu003Cbru003E n -= 1u003Cbru003Ereturn result_listu003Cbru003Eu003Cu002Fpreu003Eu003Cpu003Et1 = time.clock()u003Cu002Fpu003Eu003Cpu003Eprint(fibo(1000))u003Cu002Fpu003Eu003Cpu003Et2 = time.clock()u003Cu002Fpu003Eu003Cpu003Eprint(t2-t1)u003Cu002Fpu003Eu003Cpu003E当然,我看到一篇比较牛X的博客,博主后面2个办法,实在高级,贴给大家u003Cu002Fpu003Eu003Cpu003Ehttps:u002Fu002Fblog.csdn.netu002Fchichu261u002Farticleu002Fdetailsu002F83589767u003Cu002Fpu003Eu003Cdiv class=”pgc-img”u003Eu003Cimg src=”http:u002Fu002Fp1.pstatp.comu002Flargeu002Fdfic-imagehandleru002F9a3b52fb-913f-4734-878f-96d6793e4599″ img_width=”1023″ img_height=”488″ alt=”Python基础面试,看这篇文章画重点吧,Python面试题No1″ inline=”0″u003Eu003Cp class=”pgc-img-caption”u003Eu003Cu002Fpu003Eu003Cu002Fdivu003Eu003Cpu003E第3题:列出几个python标准库u003Cu002Fpu003Eu003Cpu003E你先明确的是什么是Python标准库u003Cu002Fpu003Eu003Cpu003EPython标准库(standard library)。u003Cu002Fpu003Eu003Cpu003E标准库会随着Python解释器,一起安装在你的电脑中的。它是Python的一个组成部分。u003Cu002Fpu003Eu003Cpu003E这些标准库是Python为你准备好的利器,可以让编程事半功倍。u003Cu002Fpu003Eu003Cpu003E文档手册可以查阅 > https:u002Fu002Fdocs.python.orgu002Fzh-cnu002F3.7u002Flibraryu002Findex.htmlu003Cu002Fpu003Eu003Cpu003E了解这个内容,这道题回答起来就非常简单了u003Cu002Fpu003Eu003Cpu003Eos模块u003Cu002Fpu003Eu003Cpu003Ere模块u003Cu002Fpu003Eu003Cpu003Epickle 模块u003Cu002Fpu003Eu003Cpu003Edatetime模块u003Cu002Fpu003Eu003Cpu003Etime模块u003Cu002Fpu003Eu003Cpu003Emath模块u003Cu002Fpu003Eu003Cpu003E第4题:下面Python代码的运行结果是?u003Cu002Fpu003Eu003Cpu003E这种题目,考察的是代码默读能力u003Cu002Fpu003Eu003Cpu003Edef f(x,l=[]):u003Cu002Fpu003Eu003Cpreu003Efor i in range(x):u003Cbru003E l.append(i*i)u003Cbru003Eprint(l)u003Cbru003Eu003Cu002Fpreu003Eu003Cpu003Ef(2) u003Cu002Fpu003Eu003Cpu003Ef(3,[3,2,1])u003Cu002Fpu003Eu003Cpu003Ef(3)u003Cu002Fpu003Eu003Cpu003Ef(2)u003Cu002Fpu003Eu003Cpu003Edef f(2,l=[]):u003Cu002Fpu003Eu003Cpreu003Efor i in range(2): # i=0,1u003Cbru003E l.append(i*i) # [0,1]u003Cbru003Eprint(l)u003Cbru003Eu003Cu002Fpreu003Eu003Cpu003Ef(3,[3,2,1])u003Cu002Fpu003Eu003Cpu003Edef f(3,l=[3,2,1]):u003Cu002Fpu003Eu003Cpreu003Efor i in range(3): # i=0,1,2u003Cbru003E l.append(i*i) # [3,2,1,0,1,4]u003Cbru003Eprint(l)u003Cbru003Eu003Cu002Fpreu003Eu003Cpu003Ef(3)u003Cu002Fpu003Eu003Cpu003Edef f(3,l=[]):u003Cu002Fpu003Eu003Cpreu003Efor i in range(3): # i=0,1,2u003Cbru003E l.append(i*i) # [0,1,4] ???对吗?u003Cbru003Eprint(l)u003Cbru003Eu003Cu002Fpreu003Eu003Cpu003E这个地方,你需要避免踩坑,一定要注意列表是可变的,如果单独的写没有任何问题,但是函数调用的三行代码放在一起就有点意思了u003Cu002Fpu003Eu003Cpu003Ef(3,[3,2,1]) 将l进行了重新赋值。但是第三次调用函数使用的依旧是第一次的l,所以避免踩坑哦~~~~u003Cu002Fpu003Eu003Cpu003Ef(3)运行的正确结果是[0,1,0,1,4]u003Cu002Fpu003Eu003Cdiv class=”pgc-img”u003Eu003Cimg src=”http:u002Fu002Fp3.pstatp.comu002Flargeu002Fdfic-imagehandleru002Fcef4e42b-6a9b-47be-a836-22309e1dae6c” img_width=”1023″ img_height=”682″ alt=”Python基础面试,看这篇文章画重点吧,Python面试题No1″ inline=”0″u003Eu003Cp class=”pgc-img-caption”u003Eu003Cu002Fpu003Eu003Cu002Fdivu003Eu003Cpu003E第5题:python实现列表去重的方法?u003Cu002Fpu003Eu003Cpu003E简单直接的办法,集合里面的元素不可以重复u003Cu002Fpu003Eu003Cpu003Emy_list = [1,1,2,2,3,3,5,6,7,88]u003Cu002Fpu003Eu003Cpu003Emy_set = set(my_list)u003Cu002Fpu003Eu003Cpu003Emy_list = [x for x in my_set]u003Cu002Fpu003Eu003Cpu003Emy_listu003Cu002Fpu003Eu003Cpu003E循环判断去重u003Cu002Fpu003Eu003Cpu003Eids = [1,1,2,2,3,3,5,6,7,88]u003Cu002Fpu003Eu003Cpu003Enews_ids = []u003Cu002Fpu003Eu003Cpu003Efor id in ids:u003Cu002Fpu003Eu003Cpreu003Eif id not in news_ids:u003Cbru003E news_ids.append(id)u003Cbru003Eu003Cu002Fpreu003Eu003Cpu003Eprint(news_ids)u003Cu002Fpu003Eu003Cpu003E字典的fromkeys方法实现u003Cu002Fpu003Eu003Cpu003Emy_list=[1,1,2,2,3,3,5,6,7,88]u003Cu002Fpu003Eu003Cpu003Ed = {}.fromkeys(my_list)u003Cu002Fpu003Eu003Cpu003Eprint(d.keys())u003Cu002Fpu003Eu003Cu002Fdivu003E”

原文始发于:Python基础面试,看这篇文章画重点吧,Python面试题No1

主题测试文章,只做测试使用。发布者:熱鬧獨處,转转请注明出处:http://www.cxybcw.com/18229.html

联系我们

13687733322

在线咨询:点击这里给我发消息

邮件:1877088071@qq.com

工作时间:周一至周五,9:30-18:30,节假日休息

QR code