Python学习路线
第一阶段:Python基础编程
学习目标:
- 掌握Python的基本语法和核心概念。
- 能够编写简单的Python程序。
学习内容:
- Python安装与环境配置
- 变量、数据类型(整型、浮点型、字符串等)
- 运算符与表达式
- 控制结构(if-else、for循环、while循环)
- 函数定义与调用
- 列表、元组、字典、集合等数据结构
练习:编写一个Python程序,该程序接收一个字符串作为输入,并统计该字符串中每个字符出现的次数(不区分大小写,且只考虑字母和数字字符)。最后,按照字符出现的频率从高到低(如果频率相同,则按字母顺序)排序,并打印结果。
def count_chars(s):
# 将字符串转换为小写,并移除非字母数字字符
cleaned_s = ''.join(filter(str.isalnum, s.lower()))
# 使用字典来统计每个字符的出现次数
char_count = {}
for char in cleaned_s:
if char in char_count:
char_count[char] += 1
else:
char_count[char] = 1
# 根据频率和字母顺序对字符进行排序
# 注意:sorted函数默认按照字母顺序排序,但我们可以提供一个自定义的key函数来改变排序方式
# 这里我们使用lambda函数来首先按照频率排序(降序),如果频率相同,则按照字母顺序排序
sorted_chars = sorted(char_count.items(), key=lambda x: (-x[1], x[0]))
# 打印结果
for char, count in sorted_chars:
print(f"{char}: {count}")
# 测试
input_string = "Hello, World! 123"
count_chars(input_string)
第二阶段:Python进阶编程
学习目标:
- 深入理解Python的高级特性。
- 掌握面向对象编程(OOP)的基本概念。
- 能够处理异常和文件操作。
学习内容:
- 函数高级用法(默认参数、可变参数、关键字参数、Lambda函数)
- 面向对象编程(类、对象、继承、封装、多态)
- 异常处理(try-except-else-finally)
- 文件和目录操作
- 模块和包的使用
练习:给定一个嵌套的字典列表,其中每个字典可以包含多种类型的数据,包括嵌套的列表和字典。你的任务是编写一个Python程序,以递归方式遍历这个列表,并收集所有类型为int
(整数)或float
(浮点数)的数据项。最终,将所有收集到的数值数据放入一个列表中并返回。
def extract_numbers(data):
"""
递归地遍历嵌套字典列表,并收集所有整数和浮点数。
"""
numbers = []
def _extract(item):
if isinstance(item, (int, float)):
numbers.append(item)
elif isinstance(item, list):
for subitem in item:
_extract(subitem)
elif isinstance(item, dict):
for value in item.values():
_extract(value)
# 对于其他类型,我们不做任何操作
# 处理列表中的每个元素,包括可能是整数的直接元素
for item in data:
_extract(item)
return numbers
# 测试
data = [
{"name": "Alice", "age": 30, "scores": [88.5, 92, 95]},
{"name": "Bob", "info": {"height": 1.85, "age": 25}, "scores": [90, 95]},
{"name": "Charlie", "data": [{"value": 78}, {"value": 82.3}, {"value": 88}]},
100
]
print(extract_numbers(data))
第三阶段:Python应用实践
学习目标:
- 掌握Python在不同领域的应用,如Web开发、数据分析、机器学习等。
- 能够独立完成小型项目。
学习内容:
- Web开发基础(HTML/CSS/JavaScript、Flask/Django框架)
- 数据分析与可视化(NumPy、Pandas、Matplotlib、Seaborn)
- 机器学习基础(scikit-learn库、TensorFlow/PyTorch框架)
- 网络编程与并发(socket编程、多线程/多进程、asyncio)
练习: 学生成绩管理系统,计算每个学生的平均分(四舍五入到小数点后两位),然后按照平均分从高到低(如果平均分相同,则按姓名字母顺序)排序学生列表,并打印出排序后的结果。
def calculate_average(scores_str):
"""计算平均分,输入为分数字符串,用逗号分隔,返回平均分(保留两位小数)"""
scores = list(map(float, scores_str.split(',')))
return round(sum(scores) / len(scores), 2)
def read_scores(file_path):
"""读取文件,返回学生姓名和对应分数的字典"""
students = {}
with open(file_path, 'r') as file:
for line in file:
name, scores_str = line.strip().split(' ', 1)
students[name] = calculate_average(scores_str)
return students
def sort_students_by_average(students):
"""按平均分(降序),如果平均分相同则按姓名字母顺序排序学生"""
sorted_students = sorted(students.items(), key=lambda x: (-x[1], x[0]))
return sorted_students
def print_sorted_students(sorted_students):
"""打印排序后的学生列表"""
for name, average in sorted_students:
print(f"{name}: {average:.2f}")
# 测试
file_path = 'student_scores.txt'
students = read_scores(file_path)
sorted_students = sort_students_by_average(students)
print_sorted_students(sorted_students)
最后,如果你也想自学Python,可以关注我。我会把踩过的坑分享给你,让你不要踩坑,提高学习速度,还整理出了一套系统的学习路线,这套资料涵盖了诸多学习内容:开发工具,基础视频教程,项目实战源码,51本电子书籍,100道练习题等。相信可以帮助大家在最短的时间内,能达到事半功倍效果,用来复习也是非常不错的。
最后,如果你也想自学Python,可以关注我。
我还整理出了一套系统的学习路线,这套资料涵盖了诸多学习内容: 【点击这里】领取!
包括:Python激活码+安装包、Python web开发,Python爬虫,Python数据分析,人工智能、自动化办公等学习教程。带你从零基础系统性的学好Python!开发工具,基础视频教程,项目实战源码,51本电子书籍,100道练习题等。相信可以帮助大家在最短的时间内,能达到事半功倍效果,用来复习也是非常不错的。