python基础面试题整理---从零开始 每天十题(03)
一、Q:用Python输出一个Fibonacci数列?(斐波那契额数列)
A:我们先来看下代码
#!/usr/bin/env python
# -*- coding: utf-8 -*- def fib_recur(n):
if n <= 1:
return n
return fib_recur(n - 1) + fib_recur(n - 2) for i in range(1, 20):
print(fib_recur(i), end=" ")
我们来详细的看一下代码,我们知道斐波那契数据为1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233,377,610,987,由此我们可以得知,
F(0) = 0
F(1) = 1,
F(2) = F(1) + F(0),
F(3) = F(2) + F(1),
F(4) = F(3) + F(2),
F(5) = F(4) + F(3)
所以我们可以得知F(n) = F(n-1) + F(n-2)。
二、Q:介绍一下Python中webbrowser的用法?
A:webbrowser主要是用来驱动浏览器进行操作的,最简单的实例。
#!/usr/bin/env python
# -*- coding: utf-8 -*- import webbrowser as ws ws.open('https://www.cnblogs.com/cxiaocai/')
webbrowser.open_new(url)
webbrowser.open_new_tab(url)
webbrowser.get()方法可以获取到系统浏览器的操作对象。
三、Q:请写出一段Python代码实现删除一个list里面的重复元素
#!/usr/bin/env python
# -*- coding: utf-8 -*- def main(li):
new_li = list(set(li))
new_li.sort(key=li.index)
return new_li li = [1, 2, 4, 5, 8, 3, 1, 3, 8, 4]
nli = main(li)
for k in nli:
print(k)
四、Q:简单说一说python 中 is 和 == 的区别
A:最简单的来说is是比较内存地址的,==是来比较值是否一致的,当我们is返回为True是,==一定是True,反而==为真时,is不一定是真,我们来看一个实例
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import copy def main():
a = [1, 2, 3]
b = copy.deepcopy(a)
print(a)
print(b)
print(a == b)
print(id(a))
print(id(b))
print(a is b) main()
由此看出,值相等的,但是is返回False,因为其值相等,内存不一定一致的。
注意:只有数值型和字符串型的情况下,a==b时,a is b才为True,当a和b是tuple,list,dict或set型时,a==b时,a is b不一定为True,这时我们需要判断内存地址。
还有我们的None类型,我们也来看一下。None是一个特殊的常量,“不同的”None的id是一样的。所有我们使用si比较好一些,而且is函数比==要快一些,不用运行查找和比较函数
五、Q:其实我们第四题内有一个隐含的问题,就是什么是可变对象,什么是不可变对象。
A:Python中有可变对象和不可变对象之分。可变对象创建后可改变但地址不会改变,即变量指向的还是原来的变量;不可变对象创建之后便不能改变,如果改变则会指向一个新的对象。
Python中dict、list是可变对象,str、int、tuple、float是不可变对象。
六、Q:列表和元组有什么区别?
A:列表是可变的,即可以编辑。元祖是不可编辑的,元祖比列表的运行速度要快,
七:Q:说一说你理解的迭代器和生成器
A:生成器:如果列表元素可以按照某种算法推算出来,那我们是否可以在循环的过程中不断推算出后续的元素呢?这样就不必创建完整的list,从而节省大量的空间,在Python中,这种一边循环一边计算的机制,称为生成器:generator。生成器是一个特殊的程序,可以被用作控制循环的迭代行为,python中生成器是迭代器的一种,使用yield返回值函数,每次调用yield会暂停,而可以使用next()函数和send()函数恢复生成器。那么这样就不占内存了,这里说一下generator和函数的执行流程,函数是顺序执行的,遇到return语句或者最后一行函数语句就返回。而变成generator的函数,在每次调用next()的时候执行,遇到yield语句返回,再次被next()调用时候从上次的返回yield语句处急需执行,也就是用多少,取多少,不占内存。
迭代器:迭代器包含有next方法的实现,在正确的范围内返回期待的数据以及超出范围后能够抛出StopIteration的错误停止迭代。
我们已经知道,可以直接作用于for循环的数据类型有以下几种:
一类是集合数据类型,如list,tuple,dict,set,str等
一类是generator,包括生成器和带yield的generator function
这些可以直接作用于for 循环的对象统称为可迭代对象:Iterable
可以使用isinstance()判断一个对象是否为可Iterable对象
总结:凡是可作用于for循环的对象都是Iterable类型;
凡是可作用于next()函数的对象都是Iterator类型,它们表示一个惰性计算的序列;
集合数据类型如list、dict、str等是Iterable但不是Iterator,不过可以通过iter()函数获得一个Iterator对象。
八:Q:Python的解释器种类和特点?
A:CPython,c语言开发的 使用最广的解释器(我们用的基本都是cpython);JPython,运行在Java上的解释器 直接把python代码编译成Java字节码执行
九:Q:如何实现 “1,2,3” 变成 [‘1’,’2’,’3’] ?
A:
#!/usr/bin/env python
# -*- coding: utf-8 -*- def main():
str = "1, 2, 3"
return str.split(',') if __name__ == '__main__':
li = main()
print(li)
print(type(li))
十:Q:如何实现[‘1’,’2’,’3’]变成[1,2,3] ?
A:
#!/usr/bin/env python
# -*- coding: utf-8 -*- def main():
li = ['', '', '']
return [int(i) for i in li] if __name__ == '__main__':
li = main()
print(li)
print(type(li))
python基础面试题整理---从零开始 每天十题(03)的更多相关文章
- python基础面试题整理---从零开始 每天十题(01)
最近在弄flask的东西,好久没写博客的,感觉少了点什么,感觉被别人落下好多,可能渐渐的养成了写博客的习惯吧.也是自己想学的东西太多了(说白了就是基础太差了,只是know how,不能做到konw w ...
- python基础面试题整理---从零开始 每天十题(02)
书接上回,我们继续来说说python的面试题,我在各个网站搜集了一些,我给予你们一个推荐的答案,你们可以组织成自己的语言来说出来,让我们更好的做到面向工资编程 一.Q:说说你对zen of pytho ...
- python基础面试题整理---从零开始 每天十题(04)
一.Q:如何用Python来进行查询和替换一个文本字符串? A:可以使用sub()方法来进行查询和替换,sub方法的格式为:sub(replacement, string[, count=0]) re ...
- Python基础面试题整理
基础 Python中lambda是什么意思 Python中的pass是什么意思 作为解释型语言,Python如何运行 什么是Python的单元测试 在Python中unittest是什么 如何将数字转 ...
- Python基础面试题库
Python基础面试题库 Python是一门学习曲线较为容易的编程语言,随着人工智能时代的到来,Python迎来了新一轮的高潮.目前,国内知乎.网易(游戏).腾讯(某些网站).搜狐(邮箱).金山. ...
- python基础全部知识点整理,超级全(20万字+)
目录 Python编程语言简介 https://www.cnblogs.com/hany-postq473111315/p/12256134.html Python环境搭建及中文编码 https:// ...
- python基础面试题(全网最全!)
目录 1.为什么学习Python? 2.通过什么途径学习的Python? 3.Python和Java.PHP.C.C#.C++等其他语言的对比? 4.简述解释型和编译型编程语言? 5.Python解释 ...
- python测试工程师高端基础面试题整理
面试总括篇 技术技能 开发语言:python 数据库:mysql 操作系统;linux 网络协议基础 测试技能:自动化(UIselenium+接口)+性能 业务知识 测试工程师执业规划 初级--> ...
- python基础===flask使用整理(转)
flask 使用的一些整理 资源 Flask 文档|英文| expore flask| 快速教材| flask-admin| Flask-DebugToolbar| Flask-Login| Flas ...
随机推荐
- 51nod1414【思维】
思路: 直接可以枚举1-n,如果枚举到是n的约数i,那么暴力枚举起点,其余点用i累加就一定是正多边形.复杂度是(n*n的公约数个数(最多80)): const int N=2e4+10; int a[ ...
- laravel 安装配置前准备
Laravel 框架使用 Composer 来管理其依赖性.所以,在你使用 Laravel 之前,你必须在你电脑上是否安装了 Composer.最简单的获取Composer的方式就是百度之,百度关键字 ...
- java string(转)
初探Java字符串 优化变成了忧患:String.split引发的“内存泄露” String是java中的无处不在的类,使用也很简单.初学java,就已经有字符串是不可变的盖棺定论,解释通常是:它是f ...
- CSS实现多行文字限制显示
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <meta name ...
- CVE-2017-5638——S2-045
一. 漏洞简介 Apache Struts是美国阿帕奇(Apache)软件基金会负责维护的一个开源项目,是一套用于创建企业级Java Web 应用的开源MVC框架,主要提供两个版本框架产品: Stru ...
- tera term超级终端
一款Window上的虚拟终端工具,它同时支持串口连接和网络连接,而对于网络连接它支持Telnet和SSH协议.最关键的是Tera Term支持自己的脚本语言,即TTL(Tera Term Langua ...
- 牛客网Java刷题知识点之同步方法和同步代码块的区别(用synchronized关键字修饰)
不多说,直接上干货! 扩展博客 牛客网Java刷题知识点之多线程同步的实现方法有哪些 为何要使用同步? java允许多线程并发控制,当多个线程同时操作一个可共享的资源变量时(如数据的增删改查 ...
- hdu1754I Hate It(splay)
链接 线段树的水题,拿来学习一下splay. 本题涉及到求最大值以及单点更新,折腾了许久,差不多把splay搞明白了. 按位置建树,按位置是一颗排序二叉树,对于区间的操作非常方便,每次操作都将需要的结 ...
- PHP知识点总结2
PHP5数据类型 String(字符串), Integer(整型), Float(浮点型), Boolean(布尔型), Array(数组), Object(对象), NULL(空值). 字符串 你可 ...
- 我的NopCommerce之旅(5): 缓存
一.基础介绍 1.什么是cache Web缓存是指一个Web资源(如html页面,图片,js,数据等)存在于Web服务器和客户端(浏览器)之间的副本. 2.为什么要用cache 即 ...