2019 Python最新面试题及答案16道题

yizhihongxing

以下是针对“2019 Python最新面试题及答案16道题”的完整攻略:

1. 阅读下面程序,写出输出结果

a = [1, 2, 3, 4, 5]
b = a
a = a[:2]
print(b)

答案: [1, 2, 3, 4, 5]

解析: 首先,列表a被赋值给了变量b,此时ba引用了同一个列表对象。然后,使用切片操作(a = a[:2])将a截取了前两个元素,实际上是创建了一个新的列表对象并将其赋给了a,此时变量b仍然引用原来的列表对象。因此,输出的结果是[1, 2, 3, 4, 5]

2. 写出至少 5 个标准库

答案: Python标准库包含了多个常用的模块,以下是一些常用的标准库:

  • os:提供了一些与操作系统交互的函数。
  • sys:提供了对Python解释器的访问和交互的函数。
  • re:提供了正则表达式的支持。
  • datetime:提供了表示日期和时间的相关类和函数。
  • math:提供了数学运算的函数和常量。

3. 在 Python 中如何实现多重继承

答案: Python 中实现多重继承可以在类定义时同时继承多个父类,使用逗号分隔。例如:

class MyClass(BaseClass1, BaseClass2, BaseClass3):
    pass

此时 MyClass 类同时继承了 BaseClass1BaseClass2BaseClass3 三个类。子类在继承多个父类时需要注意方法名冲突的问题,可以通过 super() 函数调用父类中的同名方法。

4. 写一个函数找出一个整数数组中,第二大的数

答案: 可以使用以下方法实现:

def second_largest(numbers):
    if len(numbers) < 2:
        return None
    largest = second_largest = float('-inf')
    for num in numbers:
        if num > largest:
            second_largest = largest
            largest = num
        elif num > second_largest:
            second_largest = num
    return second_largest

该函数首先判断数组长度是否小于 2,如果是,则返回 None。然后使用两个变量 largestsecond_largest 记录目前找到的最大值和第二大的值,初始值设为负无穷。遍历数组,如果当前元素比 largest 大,则将原来的 largest 赋给 second_largest,将 num 设为新的 largest;否则,如果当前元素比 second_largest 大,则将 num 设为新的 second_largest。最后返回 second_largest

示例:

numbers = [1, 2, 3, 4, 5]
print(second_largest(numbers))  # 输出 4

5. Python 里面如何实现tuple和list的转换?

答案: Python 中提供了内置函数 list()tuple() 分别用于将列表转换为元组和将元组转换为列表。例如:

# 将元组转换为列表
t = (1, 2, 3)
l = list(t)
print(l)  # 输出 [1, 2, 3]

# 将列表转换为元组
l = [4, 5, 6]
t = tuple(l)
print(t)  # 输出 (4, 5, 6)

6. Python 字典如何删除键和合并两个字典

删除键可以使用字典的 del 关键字,例如:

d = {'a': 1, 'b': 2, 'c': 3}
del d['a']  # 删除键 'a'
print(d)    # 输出 {'b': 2, 'c': 3}

合并两个字典可以使用字典的 update() 方法,例如:

d1 = {'a': 1, 'b': 2}
d2 = {'c': 3, 'd': 4}
d1.update(d2)  # 将 d2 合并到 d1 中
print(d1)      # 输出 {'a': 1, 'b': 2, 'c': 3, 'd': 4}

7. Python实现列表去重的方法

Python 中可以使用 set 数据类型实现列表去重。

l = [1, 1, 2, 2, 3, 4, 5, 5]
result = list(set(l))
print(result)  # 输出 [1, 2, 3, 4, 5]

首先将列表转换为 set,这会自动去重,然后再将 set 转换为列表即可。

8. Python中生成随机数的方法

Python 中可以使用 random 模块来生成随机数。其中一些常用的函数包括:

  • random.random():生成一个 0~1 之间的随机小数。
  • random.randint(a, b):生成一个 a~b 之间的随机整数(包含边界值 a 和 b)。
  • random.choice(seq):从序列 seq 中随机选择一个元素。
  • random.shuffle(lst):将列表 lst 中的元素随机打乱。

示例:

import random

# 生成一个 0~1 之间的随机小数
randfloat = random.random()
print(randfloat)

# 生成一个 1~10 之间的随机整数
randint = random.randint(1, 10)
print(randint)

# 从列表中随机选择一个元素
lst = ['a', 'b', 'c']
randchoice = random.choice(lst)
print(randchoice)

# 将列表中的元素随机打乱
lst = [1, 2, 3, 4, 5]
random.shuffle(lst)
print(lst)

9. Python类中 newinit 的区别

__new__ 方法是一个静态方法,用于创建一个类的实例对象,该方法会返回一个新创建的对象,可以通过调用 super().__new__(cls) 来调用父类的 __new__ 方法并创建对象。

__init__ 方法是一个实例方法,在对象创建后并且新创建的对象由 __new__ 方法返回之后调用。该方法用于初始化对象的属性或执行其他操作。

因此,__new__ 方法是类的构造器,负责创建对象;而 __init__ 方法负责初始化对象。

示例:

class Person:
    def __new__(cls, name):
        print("__new__ method is called")
        return super().__new__(cls)

    def __init__(self, name):
        print("__init__ method is called")
        self.name = name

p = Person("Alice")

以上代码执行结果为:

__new__ method is called
__init__ method is called

10. 写一个函数判断字符串是否是回文串

答案: 可以使用以下方法实现:

def is_palindrome(s):
    s = s.lower()  # 转换为小写字母
    left = 0       # 左指针
    right = len(s) - 1  # 右指针
    while left < right:
        if not s[left].isalnum():  # 左指针指向的字符不是数字或字母
            left += 1
            continue
        if not s[right].isalnum():  # 右指针指向的字符不是数字或字母
            right -= 1
            continue
        if s[left] != s[right]:  # 左右指针指向的字符不相等
            return False
        left += 1
        right -= 1
    return True

该函数首先将字符串转换为小写字母,然后使用双指针依次比较两端的字符,直到两个指针相遇。在比较过程中,如果左指针指向的字符不是数字或字母,则右移左指针;如果右指针指向的字符不是数字或字母,则左移右指针;如果两个指针指向的字符不相等,则返回 False;否则,左指针右移,右指针左移。最终如果所有字符比较都相等,则返回 True。

示例:

s1 = "A man, a plan, a canal: Panama"
s2 = "race a car"
print(is_palindrome(s1))  # 输出 True
print(is_palindrome(s2))  # 输出 False

11. Python函数重写实例

class Parent(object):
    def myMethod(self):
        print ('调用父类方法')

class Child(Parent):
    def myMethod(self):
        print ('调用子类方法')

答案: 上面的代码定义了一个名为 Parent 的类,其中包含一个 myMethod() 方法,在该方法中输出调用父类方法的信息。然后定义了一个名为 Child 的子类,该子类继承自 Parent,并重写了 myMethod() 方法,在该方法中输出调用子类方法的信息。

示例:

p = Parent()
c = Child()

p.myMethod()  # 输出调用父类方法
c.myMethod()  # 输出调用子类方法

上面的代码输出结果为:

调用父类方法
调用子类方法

12. Python中如何实现单例模式

答案: 可以使用以下方法实现:

class Singleton:
    _instance = None

    def __new__(cls):
        if not cls._instance:
            cls._instance = super().__new__(cls)
        return cls._instance

该类的实现方式使用了 Python 的类变量 _instance 来保存单例实例,当 _instance 不存在时则创建一个新的实例并保存在 _instance 中,否则返回已有的实例。

示例:

s1 = Singleton()
s2 = Singleton()

print(s1 == s2)  # 输出 True

因为 s1s2Singleton 类的两个实例,因此使用相等运算符比较时返回 True。

13. Python中有哪些序列解包的方法?

序列解包可以将序列中的元素拆分并分别赋值给多个变量。

以下是一些常用的序列解包方法:

  1. 将一个元组或列表解包成单个变量,例如:

python
t = (1, 2, 3)
a, b, c = t
print(a, b, c) # 输出 1 2 3

  1. 将一个元组或列表解包为多个变量,但只取其中的部分元素,例如:

python
t = (1, 2, 3, 4)
a, b, *c = t
print(a, b, c) # 输出 1 2 [3, 4]

在这个示例中,使用 * 号将变量 c 声明为一个列表,将元组或列表的剩余元素赋给 c

  1. 交换两个变量的值,例如:

python
a = 1
b = 2
a, b = b, a
print(a, b) # 输出 2 1

在上面的代码中,使用序列解包方式交换了变量 ab 的值。

14. 如何在 Python 中打印出当前的日期和时间

答案: 可以使用 datetime 模块中的 datetime 类来获取当前的日期和时间,例如:

from datetime import datetime

now = datetime.now()
print(now.strftime("%Y-%m-%d %H:%M:%S"))

在这个示例中,datetime.now() 方法返回当前日期和时间的 datetime 对象,然后使用 strftime() 方法将其格式化为字符串,输出的格式为 YYYY-MM-DD HH:MM:SS

15. Python中如何读写文件

可以使用 Python 内置的 open() 函数打开一个文件,例如:

f = open("file.txt", "r")

在这个示例中,打开了一个名为 file.txt 的文件,并以只读模式打开。

可用的打开模式包括:

  • 'r':只读模式(默认)。
  • 'w':写入模式,会覆盖文件中的所有内容。
  • 'a':追加模式,将新内容添加到文件末尾。
  • 'x':独占创建,如果文件不存在则创建新文件,否则报错。
  • 'b':二进制模式。
  • 't':文本模式(默认)。

读取文件内容可以使用 read() 方法。例如:

with open("file.txt", "r") as f:
    content = f.read()
    print(content)

在这个示例中,with 语句用来打开文件并自动关闭文件。read() 方法用于读取文件内容,并将其保存在变量 content 中,然后输出该变量的内容。

写入文件可以使用 write() 方法。例如:

with open("file.txt", "w") as f:
    f.write("Hello world!")

在这个示例中,with 语句用来打开文件并自动关闭文件。write() 方法用于写入内容到文件中,这里写入了一个字符串 “Hello world!”。

16. 如何使用 Python 来获取一个文件的扩展名

答案: 可以使用 os.path 模块来获取文件的扩展名。例如:

import os

filename = "file.txt"
extension = os.path.splitext(filename)[1]
print(extension)

在这个示例中,先定义了一个文件名 file.txt。然后使用 os.path.splitext() 方法来将文件名拆分为文件名和扩展名两部分,返回值为元组类型,然后取元组的第二个元素即可获得文件的扩展名。输出结果为 “.txt”。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:2019 Python最新面试题及答案16道题 - Python技术站

(0)
上一篇 2023年5月13日
下一篇 2023年5月13日

相关文章

  • 如何在Python中使用PyODBC库连接Microsoft SQL Server数据库?

    以下是如何在Python中使用PyODBC库连接Microsoft SQL Server数据库的完整使用攻略,包括安装PyODBC库、连接Microsoft SQL Server数据库、执行查询语句等步骤。同时,提供了两个示例以便更好理解如何在Python中使用PyODBC库连接Microsoft SQL Server数据库。 步骤1:安装PyODBC库 在…

    python 2023年5月12日
    00
  • Python中实现两个字典(dict)合并的方法

    在Python中,合并两个字典(dict)的方法有多种,下面将介绍其中三种比较常用的方法。 方法一:update方法 Python中的update()方法可以将一个字典合并到另一个字典中。 # 示例1 dict1 = {‘name’: ‘Lucy’, ‘age’: 18} dict2 = {‘gender’: ‘female’, ‘height’: ‘168…

    python 2023年5月13日
    00
  • python中将一个全部为int的list 转化为str的list方法

    在Python中,将一个全部为int的list转化为str的list方法有多种,本文将详细讲解两种常用的方法。 方法一:使用列表推导式 我们可以使用列表推导式将一个全部int的list转化为str的list。具体实现方法是遍历原始列表,将每个元素转化为str类型,然后将其到新的列表中。例如,我们可以使用以下代码将一个全部为int的list转化为str的lis…

    python 2023年5月13日
    00
  • python读取文件列表并排序的实现示例

    Python读取文件列表并排序的实现示例 在Python中,我们可以使用os模块中的listdir()函数来读取指定目录下的所有文件,并使用sorted()函数对文件列表进行排序。本文将介绍如何listdir()函数和sorted()函数来读取文件列表并排序,以及两个示例说明。 读取文件列表并排序的基本概念 在Python中,我们可以使用os模块中的list…

    python 2023年5月13日
    00
  • python爬虫 爬取超清壁纸代码实例

    Python爬虫 爬取超清壁纸代码实例 网站分析 在准备开始爬取壁纸之前,需要先分析目标网站。本例中我们使用的是Pixabay图库网站来进行数据爬取。 首先,我们打开目标网站,随后打开浏览器的开发者工具,选择 Network(网络)选项卡,刷新页面后看到已经加载好的资源。 在筛选后,我们可以找到查找数据的文件(XHR 类型),例如搜索图片时的请求数据 url…

    python 2023年5月14日
    00
  • 用map函数来完成Python并行任务的简单示例

    使用map()函数能够在Python中并行执行任务,从而在效率上进行提升。下面是用map函数来完成Python并行任务的简单示例攻略。 Step 1: 定义一个函数 首先需要定义一个将要被执行的函数。这个函数接收一个参数,用于表示要被处理的输入数据的一个元素。 例如,我们定义一个将一个数字平方的计算函数: def square(n): return n * …

    python 2023年5月19日
    00
  • 在Python程序员面试中被问的最多的10道题

    当然,我很乐意为您提供“在Python程序员面试中被问的最多的10道题”的完整攻略。以下是详细步骤和示例: 在Python程序员面试中被问的最多的10道题 Python是一种广泛使用的编程语言,因此在Python程序员面试中,经常会被问到一些常见的问题。以下是在Python程序员面试中被问的最多的10道题: 什么是Python?它有哪些特点? Python是…

    python 2023年5月13日
    00
  • python实现狄克斯特拉算法

    下面是关于“Python实现Dijkstra算法”的完整攻略。 1. Dijkstra算法简介 Dijkstra算法是一种用于解决带权重图的单源最短路径问题的算法。它的基本思想是从起点开始,逐步扩展到其他节点,直到到达终点。在扩展的过程中,我们维护一个距离数组,用于记录每个节点到起点的距离。在 Python 中,我们可以使用Dijkstra算法来解决任意带权…

    python 2023年5月13日
    00
合作推广
合作推广
分享本页
返回顶部