一直想写一些更加基础的文章,但是总是想不到好的点子,最近到了就业季,一大堆学生面临就业了,正好,从Python的面试题出发,分析和解答一些常见的面试题,并且总结一些文字。
分析:这题考察的是对Python内置函数的了解程度
Python常见的内置函数有
想提高技术获取干货的朋友可以加下哦 Python 技术交流群 733736235
Python干货学习链接 https://ke.qq.com/course/397896?flowToken=1009458
图片中我框选的是比较常用的一些,你可能见过,这题考察的是sum也就是求和 具体的使用
1.sum(iterable[, start])iterable -- 可迭代对象,如:列表、元组、集合。
2.start -- 指定相加的参数,如果没有设置这个值,默认为0。
例如
sum([1,2,3]) # 结果为6
sum([1,2,3],5) # 结果为11
python一行代码如何实现1~100的和
还要用到第二个内置函数 range()
range(start, stop[, step])
解答:
sum(range(1,101))
斐波那契数列(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()说明
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)
你先明确的是什么是Python标准库
Python标准库(standard library)。 标准库会随着Python解释器,一起安装在你的电脑中的。它是Python的一个组成部分。 这些标准库是Python为你准备好的利器,可以让编程事半功倍。
更多 Python 干货视频链接 https://ke.qq.com/course/397896?flowToken=1009458
了解这个内容,这道题回答起来就非常简单了
这种题目,考察的是代码默读能力
def f(x,l=[]): for i in range(x): l.append(i*i) print(l) f(2) f(3,[3,2,1]) f(3)
def f(2,l=[]): for i in range(2): # i=0,1 l.append(i*i) # [0,1] print(l)
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]
简单直接的办法,集合里面的元素不可以重复
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道面试题回答完毕~不知道你学到了多少
想提高技术获取干货的朋友可以加下哦 Python 技术交流群 733736235 Python干货学习https://ke.qq.com/course/397896?flowToken=1009458