Skip to content

参考答案

返回

题目 1

描述: 实现一个函数 remove_duplicates ,它接受一个列表并返回一个新列表, 该列表包含原列表中的唯一元素,且保持原列表元素的顺序不变。

答案 1: 列表去重

python
def remove_duplicates(lst):
    # 使用 set 来记录已经出现的元素
    seen = set()
    result = []
    for item in lst:
        if item not in seen:
            result.append(item)
            seen.add(item)
    return result

# 测试用例
print(remove_duplicates([1, 2, 2, 3, 4, 4, 4]))  # [1, 2, 3, 4]

解释: 此函数通过遍历输入列表,利用一个集合(set)来追踪已经出现过的元素。如果遇到一个新元素,就将其添加到结果列表和集合中。

题目 2

描述: 实现一个函数 fibonacci ,它接受一个正整数 n 作为输入,并返回斐波 那契数列的第 n 项。

答案 2: 斐波那契数列

python
def fibonacci(n):
    if n <= 1:
        return n
    else:
        return fibonacci(n - 1) + fibonacci(n - 2)

# 测试用例
print(fibonacci(5))  # 5

解释: 此函数是一个递归函数,用于计算斐波那契数列的第 n 项。斐波那契数列的每一项是前两项的和,其基本情形是前两项分别为 0 和 1。

题目 3

描述: 实现一个函数 compress_string ,它将字符串中连续的重复字符压缩为一个字符和这个字符重复的次数。例如,输入 'aaaabbbccdaa' 应该返回 'a4b3c2d1a2' 。

答案 3: 字符串压缩

python
def compress_string(s):
    if not s:
        return ""

    compressed = []
    count = 1
    for i in range(1, len(s)):
        if s[i] == s[i - 1]:
            count += 1
        else:
            compressed.append(s[i - 1] + str(count))
            count = 1
    compressed.append(s[-1] + str(count))
    return ''.join(compressed)

# 测试用例
print(compress_string("aaaabbbccdaa"))  # 'a4b3c2d1a2'

解释: 此函数通过遍历字符串,并对连续出现的字符计数。当遇到不同的字符时,将前一个字符及其计数添加到结果列表中,然后重置计数。

题目 4

描述: 实现一个函数 find_max ,返回给定数字列表中的最大数。不要使用内置的 max() 函数。

答案 4: 查找列表中的最大数

python
def find_max(lst):
    if not lst:
        return None
    max_num = lst[0]
    for num in lst[1:]:
        if num > max_num:
            max_num = num
    return max_num

# 测试用例
print(find_max([1, 3, 2, 8, 5]))  # 8

解释: 此函数初始化最大值为列表的第一个元素,然后遍历列表的其余元素。如果发现更大的元素,就更新最大值。

题目 5

描述: 定义一个名为 Vehicle 的基类,具有属性 name 和 max_speed ,以及 一 个 display_info 方 法 。 然后定义一个名为 Car 的 子 类 , 它继承 Vehicle ,添加一个 gear 属性,并重写 display_info 方法以显示所有属 性。

答案 5: 简单的类继承

python
class Vehicle:
    def __init__(self, name, max_speed):
        self.name = name
        self.max_speed = max_speed

    def display_info(self):
        print(f"Vehicle Name: {self.name}, Max Speed: {self.max_speed}")

class Car(Vehicle):
    def __init__(self, name, max_speed, gear):
        super().__init__(name, max_speed)
        self.gear = gear

    def display_info(self):
        super().display_info()
        print(f"Gears: {self.gear}")

# 测试用例
v1 = Vehicle("Bike", 20)
v1.display_info()  # Vehicle Name: Bike, Max Speed: 20

car1 = Car("Ford", 120, 5)
car1.display_info() # Vehicle Name: Ford, Max Speed: 120, Gears: 5

解释: Vehicle 类是一个基础类,包含基本属性和一个显示信息的方法。Car 类继承自 Vehicle,添加了额外的 gear 属性,并重写了 display_info 方法来包含 gear 信息。在 Car 类中,使用 super() 调用了基类的方法来避免代码重复。