📚 本教程专为编程小白设计,通过三天的学习,带你掌握Python基础知识AI编程时代下无需强记语法,快速过一遍,能看懂即可
1:环境与工具链搭建
安装Python
首先,我们需要安装最新稳定版的Python。
访问Python官网:www.python.org/downloads/
下载最新版本(我现在的是3.12.3)
安装时**勾选"Add Python to PATH"**(这一步很关键!)
安装完成后,打开命令行(Windows按Win+R,输入cmd)输入:
python --version
如果显示了Python版本号,说明安装成功啦!
配置VS Code
VS Code是目前最受欢迎的代码编辑器之一:
下载安装VS Code:code.visualstudio.com/
打开VS Code,进入扩展市场(左侧栏第5个图标,或快捷键Ctrl+Shift+X)
搜索并安装以下扩展:
Python(Microsoft官方扩展)
Pylance(语法提示增强)
IntelliCode(代码自动补全)
创建虚拟环境
虚拟环境就像是为每个项目创建的"小房间",可以避免不同项目的依赖冲突。
Windows系统:
# 创建名为"mypython"的虚拟环境python -m venv mypython# 激活虚拟环境mypython\Scripts\activate# 此时命令行前会出现(mypython)前缀,说明已进入虚拟环境# 安装某个库,例如requestspip install requests# 退出虚拟环境deactivate
小贴士:当你看到命令行前面有(环境名)
,就表示你已经在虚拟环境中啦!
2:基础语法回顾
变量与数据类型
Python中变量无需声明类型,直接赋值即可使用:
# 数字类型age = 25 # 整数height = 175.5 # 浮点数# 字符串name = "小明"message = '你好,世界!' # 单引号双引号都可以# 布尔值is_student = True has_pet = False# 打印变量print(f"我叫{name},今年{age}岁,身高{height}cm")
条件判断
使用if-elif-else
结构:
score = 85if score >= 90: print("优秀!")elif score >= 80: print("良好!")elif score >= 60: print("及格")else: print("需要努力了")# 输出:良好!
循环结构
for循环适合遍历可迭代对象:
# 打印1到5for i in range(1, 6): print(i)# 遍历列表fruits = ["苹果", "香蕉", "橙子"]for fruit in fruits: print(f"我喜欢吃{fruit}")
while循环适合不确定次数的循环:
# 猜数字游戏import randomsecret = random.randint(1, 10)guess = 0while guess != secret: guess = int(input("猜一个1到10之间的数:")) if guess > secret: print("猜大了!") elif guess < secret: print("猜小了!") print("恭喜,猜对了!")
函数定义
函数是可重复使用的代码块:
# 定义函数def say_hello(name): """打招呼函数""" return f"你好,{name}!"# 调用函数message = say_hello("小红")print(message) # 输出:你好,小红!# 带默认参数的函数def calculate_price(price, discount=0.9): return price * discountprint(calculate_price(100)) # 输出:90.0print(calculate_price(100, 0.8)) # 输出:80.0
3:列表与元组
列表基础操作
列表是Python中最常用的数据结构之一:
# 创建列表students = ["小明", "小红", "小刚", "小丽"]# 访问元素print(students[0]) # 输出:小明print(students[-1]) # 输出:小丽(负索引从末尾开始)# 添加元素students.append("小华") # 在末尾添加students.insert(1, "小芳") # 在指定位置添加# 删除元素students.remove("小刚") # 删除指定元素removed = students.pop() # 弹出最后一个元素并返回# 获取列表长度print(len(students))
列表推导式
列表推导式是Python中非常强大的特性,可以用一行代码创建新列表:
# 传统方式:生成1到10的平方squares = []for i in range(1, 11): squares.append(i ** 2)print(squares) # [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]# 使用列表推导式squares = [i ** 2 for i in range(1, 11)]print(squares) # 同样输出:[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]# 带条件的列表推导式:获取偶数的平方even_squares = [i ** 2 for i in range(1, 11) if i % 2 == 0]print(even_squares) # 输出:[4, 16, 36, 64, 100]
排序
理解sort()
和sorted()
的区别:
numbers = [3, 1, 4, 1, 5, 9, 2]# sorted()函数返回新的排序列表,原列表不变sorted_numbers = sorted(numbers)print(numbers) # [3, 1, 4, 1, 5, 9, 2]print(sorted_numbers) # [1, 1, 2, 3, 4, 5, 9]# sort()方法直接修改原列表numbers.sort()print(numbers) # [1, 1, 2, 3, 4, 5, 9]# 降序排序numbers.sort(reverse=True)print(numbers) # [9, 5, 4, 3, 2, 1, 1]# 按字符串长度排序words = ["苹果", "香蕉", "葡萄", "西瓜", "草莓"]words.sort(key=len)print(words) # ['苹果', '西瓜', '香蕉', '草莓', '葡萄']
元组
元组与列表类似,但创建后不能修改:
# 创建元组coordinates = (10, 20)person = ("张三", 25, "北京")# 访问元素name, age, city = person # 元组拆包print(f"{name}今年{age}岁,住在{city}")# 尝试修改会报错# coordinates[0] = 15 # TypeError: 'tuple' object does not support item assignment
元组应用场景:
作为字典的键(因为列表不可哈希)
函数返回多个值
数据不应被修改的场景
# 元组作为字典键locations = { (39.9, 116.4): "北京", (31.2, 121.5): "上海", (23.1, 113.3): "广州"}# 函数返回多个值def get_user_info(): return "张三", 30, "工程师"name, age, job = get_user_info()
4:字典与集合
字典基础
字典是键-值对的集合,访问速度非常快:
# 创建字典student = { "name": "小明", "age": 15, "scores": {"语文": 95, "数学": 90, "英语": 85}}# 访问元素print(student["name"]) # 输出:小明print(student["scores"]["语文"]) # 输出:95# 添加或修改元素student["gender"] = "男"student["age"] = 16# 检查键是否存在if "phone" in student: print(student["phone"])else: print("没有电话信息")
字典的高级用法
get()
和setdefault()
方法:
# get方法:安全地获取值,如果键不存在返回默认值phone = student.get("phone", "未知")print(phone) # 输出:未知# setdefault:如果键不存在,设置默认值并返回student.setdefault("address", "北京") # 添加新键值对print(student["address"]) # 输出:北京# 统计单词频率的实际应用text = "苹果 香蕉 苹果 草莓 香蕉 苹果"words = text.split()word_count = {}for word in words: # 如果单词不存在,设为1;已存在则+1 word_count[word] = word_count.get(word, 0) + 1print(word_count) # {'苹果': 3, '香蕉': 2, '草莓': 1}
字典推导式
和列表推导式类似,可以用简洁的方式创建字典:
# 创建平方字典:{数字: 平方值}squares = {x: x**2 for x in range(1, 6)}print(squares) # {1: 1, 2: 4, 3: 9, 4: 16, 5: 25}# 反转字典的键值对inventory = {"苹果": 10, "香蕉": 5, "橙子": 8}reversed_dict = {count: fruit for fruit, count in inventory.items()}print(reversed_dict) # {10: '苹果', 5: '香蕉', 8: '橙子'}# 筛选字典scores = {"小明": 95, "小红": 85, "小刚": 72, "小丽": 63}high_scores = {name: score for name, score in scores.items() if score >= 80}print(high_scores) # {'小明': 95, '小红': 85}
集合
集合是不重复元素的无序集合,擅长去重和集合运算:
# 创建集合fruits = {"苹果", "香蕉", "橙子", "苹果"} # 注意重复的"苹果"会被自动去除print(fruits) # {'香蕉', '橙子', '苹果'}# 集合运算a = {1, 2, 3, 4, 5}b = {4, 5, 6, 7, 8}print(a | b) # 并集:{1, 2, 3, 4, 5, 6, 7, 8}print(a & b) # 交集:{4, 5}print(a - b) # 差集:{1, 2, 3}print(a ^ b) # 对称差集:{1, 2, 3, 6, 7, 8}# 去重应用numbers = [1, 2, 2, 3, 3, 3, 4, 5, 5]unique_numbers = list(set(numbers))print(unique_numbers) # [1, 2, 3, 4, 5]
集合的实际应用
# 比较两个文件中的共同单词file1_words = {"Python", "编程", "学习", "基础", "语法"}file2_words = {"Python", "函数", "类", "编程", "进阶"}# 两个文件共有的单词common_words = file1_words & file2_wordsprint(f"共有单词: {common_words}") # {'Python', '编程'}# file1独有的单词only_in_file1 = file1_words - file2_wordsprint(f"只在file1中: {only_in_file1}") # {'学习', '基础', '语法'}
5:第一天复盘与练习
单词频率统计项目
这个项目将结合我们学过的知识,读取文本文件并统计单词出现频率:
def word_frequency_counter(filename): """ 统计文本文件中单词出现的频率,并返回出现频率最高的10个单词 """ # 初始化一个空字典来存储单词计数 word_count = {} try: # 打开并读取文件 with open(filename, 'r', encoding='utf-8') as file: # 读取所有内容并转换为小写 text = file.read().lower() # 去除标点符号(简化版,实际可能需要更多处理) for char in ',.!?":;()[]{}': text = text.replace(char, ' ') # 按空格分割单词 words = text.split() # 统计每个单词出现的次数 for word in words: word_count[word] = word_count.get(word, 0) + 1 except FileNotFoundError: print(f"错误:找不到文件 '{filename}'") return {} # 按频率排序并返回前10个单词 sorted_words = sorted(word_count.items(), key=lambda x: x[1], reverse=True) return dict(sorted_words[:10])# 测试函数if __name__ == "__main__": # 假设我们有一个名为'sample.txt'的文件 result = word_frequency_counter('sample.txt') print("出现频率最高的10个单词:") for word, count in result.items(): print(f"'{word}': {count}次")
如何创建测试文件
可以创建一个示例文本文件来测试上面的代码:
# 创建一个示例文本文件with open('sample.txt', 'w', encoding='utf-8') as f: f.write(""" Python是一种广泛使用的解释型、高级和通用的编程语言。Python支持多种编程范式, 包括面向对象、命令式、函数式和过程式编程。它拥有动态类型系统和垃圾回收功能, 能够自动管理内存使用,并且具有一个庞大而全面的标准库。Python由Guido van Rossum创建, 第一版发布于1991年。Python的设计哲学强调代码的可读性和简洁的语法,尤其是使用空格缩进来划分代码块。 Python编程语言经常被称为胶水语言,它可以把用其他语言制作的各种模块连接在一起。 """)
项目优化与拓展
增加停用词过滤:忽略常见但无意义的词如"the"、"is"、"and"等
添加词干提取:将不同形式的单词(如"run"、"runs"、"running")归为同一个词
可视化结果:使用matplotlib绘制词频柱状图
# 添加停用词过滤功能def word_frequency_counter_improved(filename, stopwords=None): """ 增强版单词频率统计,支持停用词过滤 """ if stopwords is None: stopwords = {"的", "了", "和", "在", "是", "我", "有", "与"} word_count = {} try: with open(filename, 'r', encoding='utf-8') as file: text = file.read().lower() for char in ',.!?":;()[]{}': text = text.replace(char, ' ') words = text.split() # 过滤停用词 filtered_words = [word for word in words if word not in stopwords] for word in filtered_words: word_count[word] = word_count.get(word, 0) + 1 except FileNotFoundError: print(f"错误:找不到文件 '{filename}'") return {} sorted_words = sorted(word_count.items(), key=lambda x: x[1], reverse=True) return dict(sorted_words[:10])
学习经验总结
完成这一天的学习后,应该掌握了Python的基础知识。以下是一些持续提高的建议:
多练习,少记忆:编程是实践性很强的技能,多动手写代码
阅读他人的代码:了解更多编程思维和最佳实践
解决实际问题:寻找生活中可以用Python解决的小问题
学习错误调试:不要害怕错误,从错误中学习
持续学习:Python生态系统庞大,可以根据兴趣学习数据分析、Web开发、自动化等方向
🌟 小贴士:AI编程时代,已经不需要完全动手写代码,了解所有的语法,重点是理解含义,能看懂即可,不需要记语法!不需要记语法!不需要记语法!
本文使用 文章同步助手 同步