基础练习
简单 练习1:列表基本操作
创建一个包含1到10的列表,然后完成以下操作:
- 打印所有偶数
- 计算列表所有元素的和
- 找出最大值和最小值
查看解答
# 创建列表
numbers = list(range(1, 11))
# 1. 打印偶数
evens = [num for num in numbers if num % 2 == 0]
print("偶数:", evens) # [2, 4, 6, 8, 10]
# 2. 计算和
total = sum(numbers)
print("总和:", total) # 55
# 3. 最大值和最小值
max_num = max(numbers)
min_num = min(numbers)
print(f"最大值:{max_num},最小值:{min_num}") # 最大值:10,最小值:1
简单 练习2:列表元素操作
给定两个列表,完成以下操作:
- 合并两个列表
- 删除重复元素
- 按升序排序
查看解答
list1 = [1, 3, 5, 3, 7]
list2 = [2, 5, 6, 7, 4]
# 1. 合并列表
merged = list1 + list2
print("合并后:", merged) # [1, 3, 5, 3, 7, 2, 5, 6, 7, 4]
# 2. 删除重复元素
unique = list(set(merged))
print("去重后:", unique) # [1, 2, 3, 4, 5, 6, 7]
# 3. 升序排序
sorted_list = sorted(unique)
print("排序后:", sorted_list) # [1, 2, 3, 4, 5, 6, 7]
进阶练习
中等 练习1:列表推导式
使用列表推导式完成以下任务:
- 生成一个包含1-100中所有3的倍数的列表
- 将字符串列表中的所有单词转换为大写
- 过滤出列表中所有长度大于3的单词
查看解答
# 1. 3的倍数
multiples = [x for x in range(1, 101) if x % 3 == 0]
print("3的倍数:", multiples)
# 2. 转换为大写
words = ['hello', 'world', 'python', 'list']
upper_words = [word.upper() for word in words]
print("大写转换:", upper_words) # ['HELLO', 'WORLD', 'PYTHON', 'LIST']
# 3. 过滤长单词
long_words = [word for word in words if len(word) > 3]
print("长单词:", long_words) # ['hello', 'world', 'python']
中等 练习2:矩阵操作
给定一个3x3矩阵(二维列表),完成以下操作:
- 计算每行的和
- 计算每列的和
- 计算对角线元素的和
查看解答
matrix = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
# 1. 计算每行的和
row_sums = [sum(row) for row in matrix]
print("每行的和:", row_sums) # [6, 15, 24]
# 2. 计算每列的和
col_sums = [sum(col) for col in zip(*matrix)]
print("每列的和:", col_sums) # [12, 15, 18]
# 3. 计算对角线和
main_diagonal = sum(matrix[i][i] for i in range(len(matrix)))
print("主对角线和:", main_diagonal) # 15
实际应用
困难 练习1:成绩管理系统
实现一个简单的成绩管理系统,要求:
- 添加学生成绩
- 计算平均分
- 查找最高分和最低分
- 按成绩排序
查看解答
class ScoreManager:
def __init__(self):
self.scores = [] # [(name, score), ...]
def add_score(self, name, score):
self.scores.append((name, score))
def get_average(self):
if not self.scores:
return 0
return sum(score for _, score in self.scores) / len(self.scores)
def get_highest(self):
if not self.scores:
return None
return max(self.scores, key=lambda x: x[1])
def get_lowest(self):
if not self.scores:
return None
return min(self.scores, key=lambda x: x[1])
def sort_scores(self):
return sorted(self.scores, key=lambda x: x[1], reverse=True)
# 使用示例
manager = ScoreManager()
manager.add_score("Alice", 85)
manager.add_score("Bob", 92)
manager.add_score("Charlie", 78)
print("平均分:", manager.get_average())
print("最高分:", manager.get_highest())
print("最低分:", manager.get_lowest())
print("排序后:", manager.sort_scores())
困难 练习2:购物车系统
实现一个简单的购物车系统,包含以下功能:
- 添加商品(名称、价格、数量)
- 删除商品
- 修改商品数量
- 计算总价
查看解答
class ShoppingCart:
def __init__(self):
self.items = [] # [(name, price, quantity), ...]
def add_item(self, name, price, quantity=1):
for i, (item_name, _, _) in enumerate(self.items):
if item_name == name:
self.items[i] = (name, price, self.items[i][2] + quantity)
return
self.items.append((name, price, quantity))
def remove_item(self, name):
self.items = [item for item in self.items if item[0] != name]
def update_quantity(self, name, quantity):
for i, (item_name, price, _) in enumerate(self.items):
if item_name == name:
self.items[i] = (name, price, quantity)
return
def get_total(self):
return sum(price * quantity for _, price, quantity in self.items)
def view_cart(self):
return [(name, price, quantity, price * quantity)
for name, price, quantity in self.items]
# 使用示例
cart = ShoppingCart()
cart.add_item("苹果", 5.0, 3)
cart.add_item("香蕉", 3.5, 2)
cart.add_item("橙子", 4.0, 4)
print("购物车内容:", cart.view_cart())
print("总价:", cart.get_total())
cart.update_quantity("苹果", 5)
cart.remove_item("香蕉")
print("更新后的购物车:", cart.view_cart())
算法实现
困难 练习1:排序算法实现
实现以下排序算法:
- 冒泡排序
- 选择排序
- 插入排序
查看解答
def bubble_sort(arr):
n = len(arr)
for i in range(n):
for j in range(0, n-i-1):
if arr[j] > arr[j+1]:
arr[j], arr[j+1] = arr[j+1], arr[j]
return arr
def selection_sort(arr):
n = len(arr)
for i in range(n):
min_idx = i
for j in range(i+1, n):
if arr[j] < arr[min_idx]:
min_idx = j
arr[i], arr[min_idx] = arr[min_idx], arr[i]
return arr
def insertion_sort(arr):
for i in range(1, len(arr)):
key = arr[i]
j = i-1
while j >= 0 and arr[j] > key:
arr[j+1] = arr[j]
j -= 1
arr[j+1] = key
return arr
# 测试
numbers = [64, 34, 25, 12, 22, 11, 90]
print("冒泡排序:", bubble_sort(numbers.copy()))
print("选择排序:", selection_sort(numbers.copy()))
print("插入排序:", insertion_sort(numbers.copy()))