Python编码面试题2025年3月17日 | 阅读 27 分钟 1) 调试 Python 程序有什么好方法?可以使用此命令来调试 Python 程序。 2) Python 的 |
序号。 | 列表 | 元组 |
---|---|---|
1. | 列表是可变的,这意味着我们可以修改它们。 | 元组(只是我们无法修改的列表)是不可变的。 |
2. | 列表相对较慢。 | 元组比列表更有效。 |
3. | 语法:`list1 = [100, 'Itika', 200]` | 语法:`tup1 = (100, 'Itika', 200)` |
Python 是一种编程语言,由于其简洁性和可读性,常被用于脚本编写。然而,它是一种功能强大的语言,能够处理各种任务,从小型脚本到大规模软件开发。
Python 是一种解释型编程语言,这意味着它的代码由 Python 解释器逐行执行,而无需单独的编译步骤。这带来了更大的灵活性、易于开发和可移植性,尽管执行速度可能比编译型语言稍慢。
PEP 8 是 Python 代码的风格指南,它阐述了提高代码一致性的最佳实践和约定。它涵盖了诸如缩进、命名约定、空格等方面的规范。PEP 代表“Python Enhancement Proposal”,而 PEP 8 特别侧重于代码格式,以提高 Python 项目之间的一致性和可读性。推荐遵守 PEP 8 规则,以确保代码干净、可读且一致。
使用 Python 的优点如下:
装饰器主要用于在不影响函数结构的情况下为方法添加特定的行为模式。通常,装饰器会在它们要增强的事件之前被识别。我们必须先定义一个装饰器的函数,然后才能使用它。然后编写我们将实现装饰器函数的函数,并将装饰器函数简单地放在它上面。在这种情况下,@ 符号会出现在装饰器之前。
字典和列表推导式是定义字典和列表的简单方法。
这是列表推导式的示例。
代码
输出
[0, 1, 2, 3] This is example of dictionary
说明
代码使用列表推导式创建了一个名为 `list_comp` 的列表,其中包含从 0 到 3 的数字。`print(list_comp)` 语句输出了生成的列表。总之,它展示了一种简洁的方法来在 Python 中构建和显示连续数字的列表。
代码
输出
{0: 2, 1: 3, 2: 4, 3: 5, 4: 6, 5: 7, 6: 8, 7: 9, 8: 10, 9: 11}
说明
这段代码片段使用字典推导式创建了一个名为 `dictt` 的字典。它将从 0 到 9 的每个数字与它们乘以 2 后的对应值配对。`print(dictt)` 语句输出了生成的字典,展示了一种在 Python 中创建和显示键值对字典的有效方法。总之,这段代码突出了使用推导式简洁地创建和打印字典。
数字 - 整数、复数和浮点数是 Python 最常用的内置数据结构。例如,1、8.1、3+6i。
列表 - 列表是按特定顺序排列的对象集合。列表的元素可以是多种数据类型。例如,[[10,'itika',7] .4]
元组 - 它也是一组按特定顺序排列的项。与列表不同,元组是不可变的,这意味着我们无法修改它们。例如,(7,'itika',2)
字符串 - 字符串是字符的集合。它们使用单引号或双引号声明。例如,“Itika”、“She is learning coding through tpointtech”等。
集合 - 集合是无序元素的分组,这些元素没有特定的顺序。(2, 3, 4, 5)
字典 - 字典是键值对的集合,其中每个值都可以通过其键访问。项目的顺序无关紧要。例如,{3:'ape', 6:'monkey'}
布尔值 - True 和 False 是两个可能的布尔值。
.py 文件包含我们保存的 Python 代码。.pyc 文件是在程序从其他源集成到当前程序时创建的。此文件包含我们导入的 Python 文件的字节码。如果我们能将 .py 文件格式的源文件转换为 .pyc 文件,解释器可以减少处理时间。
全局变量: 全局变量是在函数外部声明的变量。函数外部的作用域称为全局空间。任何程序函数都可以访问这些变量。
局部变量: 在函数内部声明的任何变量都称为局部变量。该变量不存在于全局域中;它仅在本地存在。
代码
输出
In local scope: 7 Adding a global scope and a local scope variable: 63 In global scope: 56
说明
代码展示了 Python 中全局变量和局部变量的区别。它初始化了一个全局变量 `var`,值为 56。在 `addition()` 函数内部,创建了一个局部变量 `var1`,值为 7。该函数将全局变量 `var` 和局部变量 `var1` 相加,并在局部作用域内打印结果。函数外部,打印了全局变量 `var`。代码演示了在函数内声明的变量如何具有局部作用域,并且它们的值不会影响全局变量。总之,它突出了 Python 中全局和局部作用域之间的区别。
如果尝试在 `addition()` 函数外部访问局部变量,将会产生错误。
在 Python 中,数组和列表都以类似的方式存储数据。然而,数组只能包含单一数据类型的元素,而列表可以包含任何数据类型的元素。
代码
输出
array('i', [3, 6, 2, 7, 9, 5]) [4, 'Interview', 7.2] 'str' object cannot be interpreted as an integer
说明
代码使用 `array` 模块创建了一个名为 `array_1` 的整数数组和一个名为 `list_1` 的列表。它打印了数组和列表,展示了 Python 数据结构的灵活性。然而,在尝试创建具有混合数据类型的另一个数组 (array_2) 时,由于数字的预定义类型代码 "I",代码会遇到一个异常。异常通过 `try-except` 块捕获并打印。总之,这段代码演示了整数数组和列表的创建与打印,并展示了使用 `array` 模块创建具有混合数据类型的数组的限制。
在 Python 中,`__init__` 是一个函数或函数 `Object()` { [native code] }。当创建一个类的新对象/实例时,会自动调用此函数来保留内存。`__init__` 方法在所有类中都可用。
以下是一个如何利用它的例子。
代码
输出
Itika 10
说明
代码定义了一个名为 `Student` 的 Python 类,其中包含一个 `__init__` 方法,该方法用作构造函数。`__init__` 方法为类的每个实例初始化 `st_name`、`st_class` 和 `st_marks` 的值。当使用这些属性的特定值创建实例 `S1` 时,会自动调用 `__init__` 方法来设置初始值。然后,代码打印实例 `S1` 的 `st_name` 和 `st_class` 值。总之,代码演示了使用 `__init__` 方法在创建类实例时初始化属性,展示了在 Python 中自定义对象初始化的能力。
Lambda 函数是一种匿名函数。这种方法可以接受任意数量的参数,但只有一个语句。
代码
输出
Sum using lambda function is: 18
说明
代码定义了一个名为 `sum_` 的 Lambda 函数用于加法,它接受三个参数 (x, y, z)。Lambda 函数计算这些参数的总和,并使用 `print()` 语句打印结果。本质上,它展示了用于加法的 Lambda 函数的简洁创建和使用,提供了一种定义小型匿名函数的简写方法。代码的输出是 4、6 和 8 的总和,展示了 Lambda 函数的功能。
`self` 是一个类实例或对象。它在 Python 中被显式地作为第一个参数传递。然而,在 Java 中,它是可选的,情况并非如此。局部变量可以轻松地区分类的方法和属性。
在类的 `init` 方法中,`self` 变量对应于新创建的对象,而在类的其他方法中,它对应于调用其方法的实体。
骨折 | 当满足某个条件时,循环会终止,并将控制权转移到下一条语句。 |
Pass | 当您需要一个在语法上正确的代码块,但又不想执行它时,可以使用它。本质上,这是一个空操作。运行时,什么都不会发生。 |
Continue | 当满足特定条件时,控制权会转移到循环的开头,从而允许跳过当前正在执行的循环的某些部分。 |
考虑以下场景
代码
输出
Original list: ['Python', 'Interview', 'Questions', 'Randomise', 'List'] After randomising the list: ['List', 'Interview', 'Python', 'Randomise', 'Questions']
说明
代码使用 `random.shuffle()` 函数来随机重排名为 `list_` 的列表的元素。它首先打印原始列表,然后应用 `random.shuffle()` 函数来随机重排元素。然后打印修改后的列表,展示了原始列表的成功随机化。总之,代码演示了如何使用 `random.shuffle()` 函数以随机顺序重排列表的元素,为引入元素顺序的随机性提供了一种简单的方法。
Pickle 模块接收任何 Python 对象,然后将其转换为字符串表示形式,然后使用 `dump` 方法将其转储到文件中。反序列化是从保存的字符串表示中恢复实际 Python 对象的过程。
可以使用 `lower()` 函数将字符串转换为小写。
代码
输出
tpointtech
说明
代码使用 `lower()` 方法将字符串 'tpointtech' 全部转换为小写,并打印结果。这演示了在 Python 中更改字符串中字符大小写的简单方法。
多行注释跨越多行。在所有我们将要注释的行前面都必须有一个 #。您也可以使用一种方便的替代方法来注释多行。您所要做的就是按住 Ctrl 键,然后在需要 # 符号的每个区域单击鼠标左键,然后只写入一个 #。这将为您在光标所在处添加注释。
文档字符串是文档字符串的缩写,它们不仅仅是注释。我们将文档字符串括在三引号中。它们不分配给任何变量,因此也可以用作注释。
代码
输出
Result of multiplication: 1755
说明
提供的代码将 39 和 45 相加,并将结果赋给变量 c。然后,`print()` 语句显示了加法的结果,即这两个数字的乘积。总之,代码有效地计算并打印了 39 和 45 的乘积,展示了 Python 中的基本算术运算。
Python 的 "re" 模块提供了三种修改字符串的方法。它们如下:
split() 使用正则表达式模式将字符串“拆分”成一个列表。
sub() 查找所有匹配我们给出的正则表达式模式的子字符串。然后用提供的字符串替换该子字符串。
subn() 类似于 sub(),它提供新字符串和替换次数。
我们可以使用 `append()`、`extend()` 以及 `insert(i,x)` 方法将项目添加到数组中。
代码
输出
array('d', [1.0, 2.0, 3.0, 8.0]) array('d', [1.0, 2.0, 3.0, 8.0, 4.0, 6.0, 9.0]) array('d', [1.0, 2.0, 9.0, 3.0, 8.0, 4.0, 6.0, 9.0])
说明
代码使用 `array` 模块创建一个名为 'array' 的双精度浮点数组,并初始化值为 [1.0, 2.0, 3.0]。然后,它展示了三种不同的修改数组的方法:
`append()` 方法将值 8 添加到数组的末尾。
`extend()` 方法将多个元素 (4, 6, 9) 添加到数组的末尾。
`insert()` 方法将值 9 添加到数组的索引 2 位置。
每次修改后都会打印更新后的数组,展示了在 Python 中操作数组元素的各种方法。
可以使用 `pop()` 或 `remove()` 方法移除数组元素。这两种方法之间的区别在于,前者返回被移除的值,而后者不返回。
代码
输出
4.0 8.0 array('d', [3.0, 8.0, 1.0, 4.0, 2.0])
说明
代码初始化了一个名为 'array' 的双精度浮点数组,值为 [1.0, 3.0, 8.0, 1.0, 4.0, 8.0, 2.0, 4.0]。然后,它展示了三种不同的从数组中移除元素的方法:
`pop()` 方法在没有指定索引的情况下,移除并返回数组的最后一个元素。
`pop(5)` 方法移除并返回索引为 5 的元素。
`remove(1)` 方法移除数组中值 1 的第一个出现。
每次移除操作后都会打印更新后的数组,展示了从 Python 数组中删除元素的各种方法。
在 Python 中,“Monkey Patch”一词专门指运行时动态修改模块。
代码
Monkey Patch 测试将按如下方式进行:
说明
在给定的代码中,定义了一个名为 `My_Class` 的类,其中有一个方法 `f()`,该方法简单地打印字符串 "f()"。在此之后,演示了一个 Monkey Patch 测试场景。Monkey Patching 包括在运行时动态修改或扩展代码,通常是为了改变现有类或函数行为。
在这种情况下,导入了一个名为 `priest` 的外部模块,并定义了一个名为 `monkey_f` 的新函数。这个新函数打印字符串 "we are calling monkey_f()"。Monkey Patching 本身是通过将 `monkey_f` 函数赋值给 `priest` 模块中 `My_Class` 类的 `func` 属性来执行的。这实际上是用新定义的 `monkey_f` 替换了原始的 `f()` 方法。
之后,创建 `My_Class` 的一个实例并将其赋值给变量 `object_`。当通过该对象访问 `func()` 方法时,它现在指向 Monkey Patched 的 `monkey_f()` 函数。因此,代码的输出将是 "we are calling monkey_f()",而不是原始的 "f()"。
空类在其块内不包含任何语句。可以使用 `pass` 关键字生成它。但是您可以在类外部创建一个对象。PASS 语句在 Python 中不做任何事情。
代码
输出
Name = tpointtech
说明
代码定义了一个简单的类 `my_class`,创建了它的一个实例,并动态地向该实例添加了一个名为 `name` 的属性,其值为 "tpointtech"。然后,它打印 `name` 属性的值,展示了 Python 类中属性赋值的动态性质。
代码
输出
[13, 14, 23, 23, 64, 64, 86]
说明
代码定义了冒泡排序算法的基本实现,用于升序排列数组。`bubble_Sort` 函数接受一个数组作为输入,并遍历其元素,比较相邻的元素,并在它们不匹配时交换它们。此过程对每个元素重复进行,直到整个数组排序完毕。代码使用 `bubble_Sort` 函数演示了对示例数组 [23, 14, 64, 13, 64, 23, 86] 的排序,并打印排序后的数组。总之,这段代码展示了一个简单的冒泡排序算法,用于对数组进行升序排序。
代码
输出
[0, 1, 1, 2, 3, 5, 8, 13, 21]
说明
提供的 Python 代码旨在根据变量 n 指定的项数生成斐波那契数列。它将数列的初始两个值(第一个和第二个)分别初始化为 0 和 1,并将它们存储在名为 `series` 的列表中。然后,代码检查项数 (n) 是否为零;如果是,则打印数列的第一个值。否则,它会进入一个循环,该循环执行 n-2 次,通过将前两项相加来计算数列的下一项,并将其添加到 `series` 列表中。最后,打印生成的斐波那契数列。但是,循环条件存在一个小问题,因为如果 n 小于 2,它可能不会生成正确的项数。总而言之,代码旨在根据指定的项数生成斐波那契数列,使用列表存储数列元素并使用循环计算它们。
代码
输出
The given number is a prime number
说明
代码判断给定的数字 'n' 是素数还是合数。如果 'n' 是 2,它直接声明它是一个素数。对于其他情况,它会检查从 2 到 'n-1' 的数字的可除性。如果 'n' 可以被这里的任何数字整除,则认为它是合数,循环会中断。如果 'n' 不能被任何数字整除,则被识别为素数。如果 'n' 是 1,则声明 1 不是素数。总之,代码有效地将给定数字分类为素数或合数,并处理了 1 的特殊情况。
程序如下。
代码
输出
The sequence is a palindrome
说明
代码检查给定的字符串 'sequence' 是否为回文。它首先使用切片语法 (sequence[::- 1]) 反转字符串,并将结果存储在变量 'reverse' 中。然后,它将 'reverse' 与原始 'sequence' 进行比较。如果它们相等,则字符串被识别为回文,代码会打印出它是回文。否则,它会打印出该字符串不是回文。总之,代码有效地判断了输入字符串是否为回文。
使用下面的代码。
代码
输出
[3 1]
说明
代码使用 NumPy 库创建一个包含整数的数组 'array'。然后,它应用 `argsort()` 函数,该函数返回对数组进行排序所需的索引。代码使用 `[-2:]` 选择最后两个索引(两个最大元素所在的索引),并使用 `[::-1]` 反转顺序。最后,它以递增顺序打印两个最大元素的索引。本质上,代码有效地识别并显示了 NumPy 数组中两个最大元素的索引。
可以使用以下方法计算百分位数。
代码
输出
3.5
说明
代码使用 NumPy 库创建了一个名为 'array' 的包含数字的数组。然后,它使用 `percentile()` 函数计算数组的第 45 个百分位数,该百分位数表示 45% 的数据低于该值的点。结果被打印出来,展示了 NumPy 如何处理数值数据的百分位数计算。总之,代码有效地计算并显示了给定数组的第 45 个百分位数。
代码如下。
代码
输出
given number is binary
说明
代码检查给定的数字 'num' 是否为二进制格式。它使用 `while` 循环遍历数字的每一位。在循环中,它检查每一位是 0 还是 1。如果遇到任何不是 0 或 1 的数字,它会打印出给定的数字不是二进制格式,然后停止。如果循环完成而没有遇到其他数字,则打印出给定的数字是二进制格式。该代码有效地确定了输入数字的二进制性质。
代码如下。
代码
输出
Factorial of 12 is 1449225352009601191936
说明
代码计算给定数字 'num' 的阶乘。它初始化一个变量 'fact' 为 1。它首先检查数字是否为负数,并打印相应的消息。如果数字为零,则打印阶乘为 1。对于正数,它使用 `for` 循环从 1 迭代到给定数字,在每一步更新阶乘。最后打印结果。该代码有效地计算并显示了非负整数的阶乘。注意:变量 'fact' 中存在一个拼写错误;它应该是 `for i in range(1, num + 1)` 而不是 `for f in range(1, num + 1)`。
代码如下。
代码
输出
LCM of 24 and 92 = 552
说明
代码计算两个数字 'num_1' 和 'num_2' 的最小公倍数 (LCM)。它首先确定两个数字中较大的那个,然后进入一个 `while` 循环。在循环中,它检查当前的 'greater_num' 是否可以被 'num_1' 和 'num_2' 整除。如果为真,则将 'greater_num' 赋值给 LCM 并停止。否则,它会增加 'greater_num' 并继续循环。最后打印 LCM。该代码有效地计算并显示了两个给定数字的 LCM。
代码如下。
代码
输出
Reverse order of array is 75 24 86 24 86 76 23 24 5 12 23
代码如下。
代码
输出
Required string without vowels is: Jvtpnt
说明
代码从给定的 'string' 中移除元音字母,并将结果存储在 'result' 中。它使用 `for` 循环遍历字符串中的每个字符,如果字符是元音(小写或大写),则将其替换为空字符串。然后将修改后的字符连接起来形成最终字符串 'result',并打印为输出。这段代码演示了一种在 Python 中从字符串中移除元音的简单方法。
代码如下。
输出
Reverse order of array is 75 24 86 24 86 76 23 24 5 12 23
说明
代码以相反的顺序打印给定的数组。它使用 `for` 循环从最后一个元素开始并递减索引,以反向遍历数组。循环单独打印每个元素,以空格分隔,从而形成原始数组的逆序。总之,代码有效地显示了给定数组的逆序。
我们请求您订阅我们的新闻通讯以获取最新更新。