本文提供了一系列Python编程基础练习题,涵盖了列表操作、循环结构、字符串处理和元组特性等内容。通过这些练习题,读者可以巩固对Python语言的理解并提升编程技能。
1. 给定两个列表 l1 = [11, 22, 33]
和 l2 = [22, 33, 44]
,请完成以下任务:
- a. 找出两个列表中相同的元素。
- b. 找出仅存在于
l1
中的元素。 - c. 找出仅存在于
l2
中的元素。 - d. 找出两个列表中不同的元素。
l1 = [11, 22, 33]
l2 = [22, 33, 44]
common_elements = list(set(l1) & set(l2))
only_in_l1 = list(set(l1) - set(l2))
only_in_l2 = list(set(l2) - set(l1))
different_elements = list(set(l1) ^ set(l2))
print("相同元素: ", common_elements)
print("仅在l1中: ", only_in_l1)
print("仅在l2中: ", only_in_l2)
print("不同元素: ", different_elements)
2. 使用数字1到8组成互不相同且无重复的两位数,计算共有多少种组合方式。
count = 0
for i in range(1, 9):
for j in range(1, 9):
if i != j:
count += 1
print(f"总共有 {count} 种组合。")
3. 输出九九乘法表。
for i in range(1, 10):
for j in range(1, i + 1):
print(f"{j} * {i} = {i * j} ", end='')
print()
4. 补充print()
方法的使用示例。
print('raito', end=' 结尾')
print('raito')
print('raito', 'tsuki', 'rei', sep=' 中间')
5. 给定列表li = [1, 2, 3, 4]
, 计算所有可能的两两组合。
li = [1, 2, 3, 4]
combinatiOns= [(li[i], li[j]) for i in range(len(li)) for j in range(i + 1, len(li))]
print(combinations)
6. 解决百钱买百鸡问题:用100文钱买100只鸡,其中公鸡5文一只,母鸡3文一只,小鸡3只一文。求解购买方案。
solutiOns= []
for x in range(0, 21): # 公鸡最多20只
for y in range(0, 34): # 母鸡最多33只
z = 100 - x - y
if z % 3 == 0 and 5 * x + 3 * y + z // 3 == 100:
solutions.append((x, y, z))
print(solutions)
7. 将列表中的元素用下划线连接成字符串。
li = ['alex', 'eric', 123]
li[2] = str(li[2]) # 将数字转换为字符串
result = '_'.join(li)
print(result)
8. 对给定元组tu = ('alex', 'eric', 'rain')
进行多种操作。
tu = ('alex', 'eric', 'rain')
print(f"元组长度: {len(tu)}")
print(f"第2个元素: {tu[1]}")
print(f"前2个元素: {tu[:2]}")
for item in tu:
print(item)
for index in range(len(tu)):
print(index)
for index, item in enumerate(tu, start=10):
print(f"序号 {index}: {item}")
9. 分析元组tu = ('alex', [11, 22, {'k1': 'v1', 'k2': ['age', 'name'], 'k3': (11, 22, 33)}, 44])
的特性和可变性。
tu = ('alex', [11, 22, {'k1': 'v1', 'k2': ['age', 'name'], 'k3': (11, 22, 33)}, 44])
print(f"元组特性: 元组是不可变的,但内部的可变对象如列表和字典可以被修改。")
print(f"第一个元素是否可修改: 不可修改")
tu[1][2]['k2'].append('seven')
print(f"添加元素后的元组: {tu}")
print(f"'k3'对应的值类型: 元组,不可修改")
10. 在列表nums = [2, 7, 11, 15, 1, 8, 7]
中找到任意两个元素相加等于9的索引对。
nums = [2, 7, 11, 15, 1, 8, 7]
pairs = [(i, j) for i in range(len(nums)) for j in range(i + 1, len(nums)) if nums[i] + nums[j] == 9]
print(pairs)
11. 对列表li = ['alex', 'eric', 'rain']
进行多种操作。
li = ['alex', 'eric', 'rain']
print(f"列表长度: {len(li)}")
li.append('seven')
print(f"追加元素后: {li}")
li.insert(0, 'Tony')
print(f"插入元素后: {li}")
li[1] = 'Kelly'
print(f"修改元素后: {li}")
li.remove('eric')
print(f"删除元素后: {li}")
del li[1]
print(f"删除索引1的元素后: {li}")
del li[1]
print(f"删除索引1的元素后: {li}")
del li[1:3]
print(f"删除多个元素后: {li}")
li.reverse()
print(f"反转后的列表: {li}")
for i in range(len(li)):
print(i)
for k, v in enumerate(li, start=100):
print(f"序号 {k}: {v}")
for item in li:
print(item)
12. 实现分页显示内容的功能。
user_list = [{'name': f'alex-{i}', 'email': f'alex{i}@live.com', 'pwd': f'pwd{i}'} for i in range(1, 302)]
while True:
try:
page = int(input("请输入要查看的页码(1-30):"))
if page <1 or page > 30:
raise ValueError
start = (page - 1) * 10
end = start + 10
result = user_list[start:end]
for item in result:
print(item)
except ValueError:
print("输入内容格式错误,请输入有效的页码。")