Python入门:Python3基础练习题详解,从入门到熟练的 25 个实例(四)
引言
对于Python初学者而言,掌握基础语法和常用数据结构是迈向编程高手的第一步。本系列文章通过25个精心设计的练习题,系统梳理Python3的核心知识点,帮助读者从零基础逐步过渡到熟练应用。本文为第四部分,重点解析列表操作、字典管理、循环控制及函数定义等关键技能。
一、列表操作:从基础到进阶
1. 列表切片与步长控制
实例1:逆序输出列表元素
nums = [1, 3, 5, 7, 9]print(nums[::-1]) # 输出:[9, 7, 5, 3, 1]
关键点:通过[start实现切片,负步长
step]-1表示反向遍历。此技巧在数据反转、时间序列处理中极为常用。
实例2:每隔N个元素取样
data = ['a', 'b', 'c', 'd', 'e', 'f']print(data[::2]) # 输出:['a', 'c', 'e']
应用场景:适用于大数据集抽样、周期性数据提取等场景。
2. 列表推导式:高效生成列表
实例3:平方数列表生成
squares = [x**2 for x in range(10)]print(squares) # 输出:[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
优势:相比传统循环,列表推导式代码更简洁,执行效率更高。
实例4:条件过滤的列表推导
even_squares = [x**2 for x in range(10) if x % 2 == 0]print(even_squares) # 输出:[0, 4, 16, 36, 64]
进阶技巧:结合if条件实现数据筛选,适用于数据清洗场景。
二、字典管理:键值对的高效操作
1. 字典的创建与遍历
实例5:字典合并与更新
dict1 = {'a': 1, 'b': 2}dict2 = {'b': 3, 'c': 4}dict1.update(dict2)print(dict1) # 输出:{'a': 1, 'b': 3, 'c': 4}
注意事项:update()方法会覆盖重复键的值,需谨慎处理数据冲突。
实例6:字典推导式
keys = ['a', 'b', 'c']values = [1, 2, 3]dict_comp = {k: v for k, v in zip(keys, values)}print(dict_comp) # 输出:{'a': 1, 'b': 2, 'c': 3}
优势:相比循环赋值,字典推导式更简洁,尤其适合动态生成字典。
2. 字典的常见操作
实例7:统计词频
text = "apple banana apple orange banana apple"words = text.split()freq = {}for word in words:freq[word] = freq.get(word, 0) + 1print(freq) # 输出:{'apple': 3, 'banana': 2, 'orange': 1}
关键方法:dict.get(key, default)安全获取键值,避免KeyError异常。
实例8:字典排序
scores = {'Alice': 85, 'Bob': 92, 'Charlie': 78}sorted_scores = sorted(scores.items(), key=lambda x: x[1], reverse=True)print(sorted_scores) # 输出:[('Bob', 92), ('Alice', 85), ('Charlie', 78)]
应用场景:适用于成绩排名、销售数据统计等需要排序的场景。
三、循环控制:精准控制流程
1. for循环与enumerate
实例9:遍历列表并获取索引
fruits = ['apple', 'banana', 'cherry']for index, fruit in enumerate(fruits):print(f"Index {index}: {fruit}")
输出结果:
Index 0: appleIndex 1: bananaIndex 2: cherry
优势:enumerate()同时获取索引和值,避免手动维护计数器。
2. while循环与条件控制
实例10:用户输入验证
while True:age = input("请输入年龄(数字):")if age.isdigit():age = int(age)breakelse:print("输入无效,请重新输入!")print(f"您的年龄是:{age}")
关键点:通过isdigit()验证输入合法性,break退出循环。
四、函数定义:模块化编程的核心
1. 函数参数与返回值
实例11:计算阶乘
def factorial(n):if n == 0:return 1else:return n * factorial(n - 1)print(factorial(5)) # 输出:120
递归思想:通过函数自身调用简化问题,需注意递归终止条件。
实例12:可变参数函数
def sum_numbers(*args):return sum(args)print(sum_numbers(1, 2, 3, 4)) # 输出:10
关键语法:*args接收任意数量位置参数,**kwargs接收关键字参数。
2. 函数作用域与闭包
实例13:局部变量与全局变量
count = 0def increment():global count # 声明使用全局变量count += 1increment()print(count) # 输出:1
注意事项:修改全局变量需使用global声明,否则会创建局部变量。
实例14:闭包示例
def outer(x):def inner(y):return x + yreturn inneradd5 = outer(5)print(add5(3)) # 输出:8
闭包特性:内层函数记住外层函数的变量,适用于延迟计算、装饰器等场景。
五、综合实例:实战演练
实例15:斐波那契数列生成器
def fibonacci(n):a, b = 0, 1for _ in range(n):yield aa, b = b, a + bprint(list(fibonacci(10))) # 输出:[0, 1, 1, 2, 3, 5, 8, 13, 21, 34]
关键概念:yield实现生成器,节省内存,适合处理大规模数据。
实例16:文件读写与异常处理
try:with open('test.txt', 'r') as file:content = file.read()print(content)except FileNotFoundError:print("文件不存在!")
最佳实践:使用with语句自动管理文件资源,try-except捕获异常。
总结与建议
- 多实践:通过编写小程序巩固知识点,如计算器、待办事项列表等。
- 善用文档:遇到问题时,优先查阅Python官方文档。
- 参与社区:在Stack Overflow、GitHub等平台交流,加速成长。
通过系统练习这25个实例,读者将逐步掌握Python3的核心语法,为后续学习Web开发、数据分析等高级主题打下坚实基础。