一、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类型,它们表示一个惰性计算的序列;

         集合数据类型如listdictstr等是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)的更多相关文章

  1. python基础面试题整理---从零开始 每天十题(01)

    最近在弄flask的东西,好久没写博客的,感觉少了点什么,感觉被别人落下好多,可能渐渐的养成了写博客的习惯吧.也是自己想学的东西太多了(说白了就是基础太差了,只是know how,不能做到konw w ...

  2. python基础面试题整理---从零开始 每天十题(02)

    书接上回,我们继续来说说python的面试题,我在各个网站搜集了一些,我给予你们一个推荐的答案,你们可以组织成自己的语言来说出来,让我们更好的做到面向工资编程 一.Q:说说你对zen of pytho ...

  3. python基础面试题整理---从零开始 每天十题(04)

    一.Q:如何用Python来进行查询和替换一个文本字符串? A:可以使用sub()方法来进行查询和替换,sub方法的格式为:sub(replacement, string[, count=0]) re ...

  4. Python基础面试题整理

    基础 Python中lambda是什么意思 Python中的pass是什么意思 作为解释型语言,Python如何运行 什么是Python的单元测试 在Python中unittest是什么 如何将数字转 ...

  5. Python基础面试题库

    Python基础面试题库   Python是一门学习曲线较为容易的编程语言,随着人工智能时代的到来,Python迎来了新一轮的高潮.目前,国内知乎.网易(游戏).腾讯(某些网站).搜狐(邮箱).金山. ...

  6. python基础全部知识点整理,超级全(20万字+)

    目录 Python编程语言简介 https://www.cnblogs.com/hany-postq473111315/p/12256134.html Python环境搭建及中文编码 https:// ...

  7. python基础面试题(全网最全!)

    目录 1.为什么学习Python? 2.通过什么途径学习的Python? 3.Python和Java.PHP.C.C#.C++等其他语言的对比? 4.简述解释型和编译型编程语言? 5.Python解释 ...

  8. python测试工程师高端基础面试题整理

    面试总括篇 技术技能 开发语言:python 数据库:mysql 操作系统;linux 网络协议基础 测试技能:自动化(UIselenium+接口)+性能 业务知识 测试工程师执业规划 初级--> ...

  9. python基础===flask使用整理(转)

    flask 使用的一些整理 资源 Flask 文档|英文| expore flask| 快速教材| flask-admin| Flask-DebugToolbar| Flask-Login| Flas ...

随机推荐

  1. 51nod1414【思维】

    思路: 直接可以枚举1-n,如果枚举到是n的约数i,那么暴力枚举起点,其余点用i累加就一定是正多边形.复杂度是(n*n的公约数个数(最多80)): const int N=2e4+10; int a[ ...

  2. laravel 安装配置前准备

    Laravel 框架使用 Composer 来管理其依赖性.所以,在你使用 Laravel 之前,你必须在你电脑上是否安装了 Composer.最简单的获取Composer的方式就是百度之,百度关键字 ...

  3. java string(转)

    初探Java字符串 优化变成了忧患:String.split引发的“内存泄露” String是java中的无处不在的类,使用也很简单.初学java,就已经有字符串是不可变的盖棺定论,解释通常是:它是f ...

  4. CSS实现多行文字限制显示

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <meta name ...

  5. CVE-2017-5638——S2-045

    一. 漏洞简介 Apache Struts是美国阿帕奇(Apache)软件基金会负责维护的一个开源项目,是一套用于创建企业级Java Web 应用的开源MVC框架,主要提供两个版本框架产品: Stru ...

  6. tera term超级终端

    一款Window上的虚拟终端工具,它同时支持串口连接和网络连接,而对于网络连接它支持Telnet和SSH协议.最关键的是Tera Term支持自己的脚本语言,即TTL(Tera Term Langua ...

  7. 牛客网Java刷题知识点之同步方法和同步代码块的区别(用synchronized关键字修饰)

    不多说,直接上干货! 扩展博客 牛客网Java刷题知识点之多线程同步的实现方法有哪些 为何要使用同步?      java允许多线程并发控制,当多个线程同时操作一个可共享的资源变量时(如数据的增删改查 ...

  8. hdu1754I Hate It(splay)

    链接 线段树的水题,拿来学习一下splay. 本题涉及到求最大值以及单点更新,折腾了许久,差不多把splay搞明白了. 按位置建树,按位置是一颗排序二叉树,对于区间的操作非常方便,每次操作都将需要的结 ...

  9. PHP知识点总结2

    PHP5数据类型 String(字符串), Integer(整型), Float(浮点型), Boolean(布尔型), Array(数组), Object(对象), NULL(空值). 字符串 你可 ...

  10. 我的NopCommerce之旅(5): 缓存

    一.基础介绍 1.什么是cache      Web缓存是指一个Web资源(如html页面,图片,js,数据等)存在于Web服务器和客户端(浏览器)之间的副本. 2.为什么要用cache      即 ...