一直想写一些更加基础的文章,可是老是想不到好的点子,最近到了就业季,一大堆学生面临就业了,正好,从Python的面试题出发,分析和解答一些常见的面试题,而且总结一些文字。html
每一讲涉及5~10道面试题,整个系列的文章初步规划有20篇。python
分析:这题考察的是对Python内置函数的了解程度c++
Python常见的内置函数有 程序员
图片中我框选的是比较经常使用的一些,你可能见过,这题考察的是sum也就是求和 具体的使用面试
sum(iterable[, start])编程
例如app
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三、2一、3四、……
解法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)
复制代码
固然,我看到一篇比较牛X的博客,博主后面2个办法,实在高级,贴给你们
你先明确的是什么是Python标准库
Python标准库(standard library)。 标准库会随着Python解释器,一块儿安装在你的电脑中的。它是Python的一个组成部分。 这些标准库是Python为你准备好的利器,可让编程事半功倍。
文档手册能够查阅 > docs.python.org/zh-cn/3.7/l…
了解这个内容,这道题回答起来就很是简单了
这种题目,考察的是代码默读能力
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)
复制代码
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())
复制代码
nice girl 今天的5道面试题回答完毕~不知道你学到了多少,下篇博客见哦!
她专科学历 27岁从零开始学习c,c++,python编程语言 29岁编写百例教程 30岁掌握10种编程语言, 用自学的经历告诉你,学编程就找梦想橡皮擦
欢迎关注她的公众号,非本科程序员