zoukankan      html  css  js  c++  java
  • 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类型,它们表示一个惰性计算的序列;

             集合数据类型如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 = ['1', '2', '3']
        return [int(i) for i in li]
    
    
    if __name__ == '__main__':
        li = main()
        print(li)
        print(type(li)) 

      

  • 相关阅读:
    洛谷 P1508 Likecloud-吃、吃、吃
    Codevs 1158 尼克的任务
    2017.10.6 国庆清北 D6T2 同余方程组
    2017.10.6 国庆清北 D6T1 排序
    2017.10.3 国庆清北 D3T3 解迷游戏
    2017.10.3 国庆清北 D3T2 公交车
    2017.10.3 国庆清北 D3T1 括号序列
    2017.10.4 国庆清北 D4T1 财富
    2017.10.7 国庆清北 D7T2 第k大区间
    2017.10.7 国庆清北 D7T1 计数
  • 原文地址:https://www.cnblogs.com/cxiaocai/p/11026051.html
Copyright © 2011-2022 走看看