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

系统 1620 0

一、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 
            
            = [
            
              '
            
            
              1
            
            
              '
            
            , 
            
              '
            
            
              2
            
            
              '
            
            , 
            
              '
            
            
              3
            
            
              '
            
            
              ]
    
            
            
              return
            
             [int(i) 
            
              for
            
             i 
            
              in
            
            
               li]



            
            
              if
            
            
              __name__
            
             == 
            
              '
            
            
              __main__
            
            
              '
            
            
              :
    li 
            
            =
            
               main()
    
            
            
              print
            
            
              (li)
    
            
            
              print
            
            (type(li)) 
          

 


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论