• Python常见面试题分享,面试题中的No.1!


    第1题:1行代码实现1到100的和?

    分析:这题考察的是对Python内置函数的了解程度

    Python常见的内置函数有

     

    图片中我框选的是比较常用的一些,你可能见过,这题考察的是sum也就是求和,具体的使用。

    sum(iterable[, start])

    • iterable -- 可迭代对象,如:列表、元组、集合。

    • start -- 指定相加的参数,如果没有设置这个值,默认为0。

    例如:

     
    

    sum([1,2,3]) # 结果为6
    sum([1,2,3],5) # 结果为11

    python一行代码如何实现1~100的和,还要用到第二个内置函数 range()

    range(start, stop[, step])

    • start: 计数从 start 开始。默认是从 0 开始。例如range(5)等价于range(0, 5);

    • stop: 计数到 stop 结束,但不包括 stop。例如:range(0, 5) 是[0, 1, 2, 3, 4]没有5

    • step:步长,默认为1。例如:range(0, 5) 等价于 range(0, 5, 1)

    解答:

     
    

    sum(range(1,101))

    第2题:如何使用Python输出一个[斐波那契数列]Fibonacci

    斐波那契数列(Fibonacci sequence),又称黄金分割数列、因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”。

    例子:1、1、2、3、5、8、13、21、34、……

    解法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()说明

    • cpu 的运行机制:cpu是多任务的,例如在多进程的执行过程中,一段时间内会有对各进程被处理。一个进程从从开始到结束其实是在这期间的一些列时间片断上断断续续执行的。所以这就引出了程序执行的cpu时间(该程序单纯在cpu上运行所需时间)和墙上时钟wall time。

    • time.time():是统计的wall time(即墙上时钟),也就是系统时钟的时间戳(1970纪元后经过的浮点秒数)。所以两次调用的时间差即为系统经过的总时间。

    • time.clock():是统计cpu时间 的工具,这在统计某一程序或函数的执行速度最为合适。两次调用time.clock()函数的插值即为程序运行的cpu时间。

     
    

    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)

    第3题:列出几个python标准库

    你先明确的是什么是Python标准库

    Python标准库(standard library)。标准库会随着Python解释器,一起安装在你的电脑中的。它是Python的一个组成部分。这些标准库是Python为你准备好的利器,可以让编程事半功倍。

    1. os模块

    2. re模块

    3. pickle 模块

    4. datetime模块

    5. time模块

    6. math模块

    第4题:下面Python代码的运行结果是?

    这种题目,考察的是代码默读能力

     
    

    def f(x,l=[]):
       for i in range(x):
           l.append(i*i)
       print(l)
    f(2)  
    f(3,[3,2,1])
    f(3)

    • f(2)

     
    

    def f(2,l=[]):
       for i in range(2): # i=0,1
           l.append(i*i) # [0,1]
       print(l)

    • f(3,[3,2,1])

     
    

    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)

    • f(3)

     
    

    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]

     

    在这里插入图片描述

    第5题:python实现列表去重的方法?

    简单直接的办法,集合里面的元素不可以重复

     
    

    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())


    如果本文对你有帮助,别忘记给我个3连 ,点赞,转发,评论,

    咱们下期见!答案获取方式:已赞 已评 已关~

    学习更多知识与技巧,关注与私信博主(03)

     

  • 相关阅读:
    ECE368 Programming Assignment 3
    See Finer, See More!腾讯&上交提出IVT,越看越精细,进行精细全面的跨模态对比!
    【仿真建模】AnyLogic入门基础课程 第二课
    通讯网关软件004——利用CommGate X2Mbt实现Modbus TCP访问Mysql服务器
    Java基础:Java程序设计环境
    C++的重大特性之一:继承、菱形继承
    Origin绘制多折线图
    DHCP工具分配IDRAC IP
    非关系型数据库
    如何防止网站被爬虫爬取的几种办法
  • 原文地址:https://blog.csdn.net/m0_72444380/article/details/125999144