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

以下是针对“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爬虫包BeautifulSoup异常处理(二)

    标题:Python爬虫包BeautifulSoup异常处理(二) 本文主要介绍如何在使用Python爬虫包BeautifulSoup进行网页数据抓取时,处理可能出现的异常情况,保障程序的稳定性和运行效率。 为什么需要对BeautifulSoup异常进行处理 在进行Python爬虫任务时,我们可能遇到以下几种情况: 网络连接中断,无法访问目标网站或页面 目标网…

    python 2023年5月13日
    00
  • Java Web开发过程中登陆模块的验证码的实现方式总结

    Java Web开发过程中登陆模块的验证码的实现方式总结 背景 在Java Web开发中,登陆模块的验证码是必不可少的一部分,主要为了防止机器或者恶意用户对系统进行暴力破解。本文将介绍Java Web开发中登陆模块的验证码实现方式,并给出两个示例。 实现方式 Java Web开发中登陆模块的验证码主要有以下三种实现方式: 使用第三方验证码服务,例如Googl…

    python 2023年6月3日
    00
  • 利用Python破解验证码实例详解

    我将为您详细讲解“利用Python破解验证码实例详解”的完整攻略。首先,分析验证码破解的主要过程: 识别验证码图片中的数字或文字; 将其与预期结果进行比较,判断是否破解成功。 下面我们将分别介绍这两个过程的实现方法。 识别验证码图片中的数字或文字 识别验证码图片中的数字或文字是验证码破解的第一步,常见的识别方法包括: 1. 图像处理 图像处理是最常用的验证码…

    python 2023年5月14日
    00
  • Python+OpenCV检测灯光亮点的实现方法

    Python+OpenCV检测灯光亮点的实现方法 概述 在计算机视觉领域中,灯光亮点检测是一项基础任务,涉及到图像处理、边缘检测、图像分割等多个方面。通过在图像中检测亮点,可以实现诸如研究光学性质、寻找特定形状物体等任务。 OpenCV是一个流行的计算机视觉库,提供了大量的图像处理、机器学习、深度学习等功能。通过结合Python和OpenCV,可以实现灯光亮…

    python 2023年6月2日
    00
  • Python Cookie 读取和保存方法

    下面是关于“Python Cookie 读取和保存方法”的详细攻略。 Python Cookie简介 Cookie是网站发给用户浏览器并存储在本地的一个文本文件,一般用于记录用户登录状态等信息。在Python中,我们可以通过 http.cookiejar 模块来读取和保存Cookie信息。 Cookie的读取 要读取一个网站的Cookie信息,我们可以使用 …

    python 2023年6月3日
    00
  • 如何使用python切换hosts文件

    下面是如何使用Python切换hosts文件的完整攻略: 1. 什么是hosts文件? 首先,我们需要了解一下什么是hosts文件。在计算机网络中,hosts文件是一种用于将IP地址与域名进行映射的本地文件。通俗地说,就是把一些网站的域名和IP地址对应起来,方便我们访问网站。 在Windows系统中,hosts文件的位置通常是 C:\Windows\Syst…

    python 2023年5月23日
    00
  • 教你怎么用python selenium实现自动化测试

    教你怎么用 Python Selenium 实现自动化测试 前置知识 在学习本文档之前,请确保您掌握以下技能: 熟练使用 Python 编程语言 了解基本的 HTML 和 CSS 熟悉基本的 Selenium 操作 如果您没有相关的知识基础,建议先学习以上知识再来阅读本文。 环境准备 在开始编写自动化测试之前,需要先安装相关的工具和模块。 1. 安装 Pyt…

    python 2023年5月19日
    00
  • 详解Python打印元组的键和值

    下面是Python程序打印元组的键和值使用方法的完整攻略。 一、元组 元组(Tuple)是Python中的不可变(immutable)有序序列,可以用来存储多个值。元组使用圆括号 () 表示,多个值之间使用逗号,例如: t = (1, 2, ‘a’, ‘b’) 二、打印元组 Python提供了多种方法打印元组的键和值,下面介绍两种方法。 1.使用for循环打…

    python-answer 2023年3月25日
    00
合作推广
合作推广
分享本页
返回顶部