🐍 Python 快速进阶目录
第一阶段:基础语法与变量 (The Basics)
- 内容:
print()输出、变量定义、基本数据类型(整数、浮点数、字符串)。 - 核心目标:学会和计算机"说话",存储简单信息。
第二阶段:逻辑控制 (Flow Control)
- 内容:条件判断 (
if/elif/else)、逻辑运算符、循环结构 (for,while)。 - 核心目标:让程序学会"思考"和自动化"重复劳动"。
第三阶段:数据大管家 (Data Structures)
- 内容:列表 (
List)、字典 (Dictionary)、常用操作(增删改查)。 - 核心目标:这是灵活运用的关键,学会高效地组织和管理大量数据。
第四阶段:函数与模块化 (Functions & Modules)
- 内容:定义函数 (
def)、参数传递、引入外部库 (import)。 - 核心目标:学会代码复用,像搭积木一样写程序,而不是从零造轮子。
第五阶段:文件操作与综合实战 (File I/O & Practice)
- 内容:读取 txt/csv 文件、写入文件、简单的异常处理。
- 核心目标:能够让你的程序与外部文件交互,解决实际问题。
第一阶段基础变量与语法
-
-
- [🐍 Python 快速进阶目录](#🐍 Python 快速进阶目录)
- [1. 核心概念讲解](#1. 核心概念讲解)
-
- [A. 让程序说话:`print()`](#A. 让程序说话:
print()) - [B. 数据的容器:变量 (Variables)](#B. 数据的容器:变量 (Variables))
- [C. 超好用的"魔法":f-string (格式化字符串)](#C. 超好用的“魔法”:f-string (格式化字符串))
- [D. 让程序听你的:`input()`](#D. 让程序听你的:
input())
- [A. 让程序说话:`print()`](#A. 让程序说话:
- [💻 PyCharm 实操环节](#💻 PyCharm 实操环节)
- [🎯 第一阶段通关测试:【简易个人名片生成器】](#🎯 第一阶段通关测试:【简易个人名片生成器】)
- [**第二阶段:逻辑控制 (Flow Control)**](#第二阶段:逻辑控制 (Flow Control))
-
- [A. Python 的灵魂:缩进 (Indentation) ⚠️ **超级重要**](#A. Python 的灵魂:缩进 (Indentation) ⚠️ 超级重要)
- [B. 此时此刻非彼时:条件判断 (if/elif/else)](#B. 此时此刻非彼时:条件判断 (if/elif/else))
- [C. 拒绝手动重复:循环 (For Loop)](#C. 拒绝手动重复:循环 (For Loop))
- [💻 PyCharm 实操环节](#💻 PyCharm 实操环节)
- [🎯 第二阶段通关测试:【FizzBuzz 报数游戏】](#🎯 第二阶段通关测试:【FizzBuzz 报数游戏】)
- [**第三阶段:数据大管家 (Data Structures)**](#第三阶段:数据大管家 (Data Structures))
-
- [A. 列表 (List):有序的收纳盒](#A. 列表 (List):有序的收纳盒)
- [B. 字典 (Dictionary):带标签的档案柜](#B. 字典 (Dictionary):带标签的档案柜)
- [💻 PyCharm 实操环节](#💻 PyCharm 实操环节)
- [🎯 第三阶段通关测试:【简易库存管理系统】](#🎯 第三阶段通关测试:【简易库存管理系统】)
- [**第四阶段:函数与模块化 (Functions & Modules)**](#第四阶段:函数与模块化 (Functions & Modules))
-
- [A. 定义函数 (Functions)](#A. 定义函数 (Functions))
- [B. 引入模块 (Modules)](#B. 引入模块 (Modules))
- [💻 PyCharm 实操环节](#💻 PyCharm 实操环节)
- [🎯 第四阶段通关测试:【简易计算器 & 抽奖机】](#🎯 第四阶段通关测试:【简易计算器 & 抽奖机】)
- [**第五阶段:文件操作与综合实战 (File I/O)**](#第五阶段:文件操作与综合实战 (File I/O))
-
- [A. 传统的笨办法(不推荐)](#A. 传统的笨办法(不推荐))
- [B. 优雅的办法:`with open`(强烈推荐)](#B. 优雅的办法:
with open(强烈推荐)) - [C. 三种常用模式](#C. 三种常用模式)
- [💻 PyCharm 实操环节](#💻 PyCharm 实操环节)
- [🎯 第五阶段通关测试:【持久化日记本】](#🎯 第五阶段通关测试:【持久化日记本】)
- [🚀 最终挑战:【毕业设计 - 命令行记账小助手】](#🚀 最终挑战:【毕业设计 - 命令行记账小助手】)
-
没问题,那我们马上开始!🔥
这是 第一阶段:基础语法与变量。
1. 核心概念讲解
A. 让程序说话:print()
这是 Python 里最常用的指令,把括号里的内容显示在屏幕上。
- 如果是数字,直接写。
- 如果是文字 (字符串),必须加引号 (单引号
'或双引号"都可以,但要成对)。
python
print("Hello World") # 输出文字
print(666) # 输出数字
print("666") # 输出文字类型的 "666"(看起来一样,但在电脑眼里不一样)
B. 数据的容器:变量 (Variables)
想象变量就是贴了标签的盒子。你把数据放进去,下次直接喊盒子上的名字(标签),电脑就知道你要用里面的数据。
Python 很聪明,不需要你提前告诉它盒子里装的是什么类型(不像 C 或 Java),它会自动识别。
常见数据类型:
- String (字符串): 文本信息。 *例如:
"Gemini","123"* - Integer (整数): 没有小数点的数字。 *例如:
18,-5* - Float (浮点数): 带小数点的数字。 *例如:
3.14,19.9* - Boolean (布尔值): 只有真假。 *例如:
True,False*
python
name = "张三" # 把 "张三" 装进 name 盒子
age = 25 # 把 25 装进 age 盒子
height = 1.75 # float 类型
is_student = True # bool 类型
print(name) # 输出:张三
C. 超好用的"魔法":f-string (格式化字符串)
这是 Python 最让人喜欢的特性之一!如果你想把变量和普通文字拼在一起输出,不要用 + 号去拼(容易报错),用 f-string。
用法: 在引号前加个 f,然后在字符串里用 {} 把变量包起来。
python
name = "李四"
age = 30
# 以前的笨办法(不推荐): print("我是" + name + ",今年" + str(age) + "岁")
# 现在的酷办法(推荐):
print(f"我是{name},今年{age}岁,明年我就{age + 1}岁了!")
D. 让程序听你的:input()
程序不应该只是自言自语。input() 可以暂停程序,等待用户输入内容。
注意:input() 接收到的内容,默认永远是字符串 (String) 类型。
python
hobby = input("请输入你的爱好:")
print(f"哇,原来你也喜欢{hobby}!")
💻 PyCharm 实操环节
现在请打开你的 PyCharm:
- 创建一个新的 Python 文件(例如
lesson1.py)。 - 把上面的代码敲进去运行一下,感受一下。
- 重点: 只有亲手敲过,那些报错(比如漏了括号、漏了引号)才会让你印象深刻。
🎯 第一阶段通关测试:【简易个人名片生成器】
任务要求:
编写一个 Python 程序,完成以下步骤:
- 询问用户的 姓名。
- 询问用户的 出生年份(注意:用户输入的是字符串,比如 "1995")。
- 程序内部计算出该用户的 大致年龄 (用 2025 减去出生年份)。 *提示:你需要把输入的年份转成整数,用
int()包裹一下,例如int(year_str)*。 - 询问用户 最喜欢的编程语言。
- 最后用 f-string 一次性打印出一句完整的话,格式如下:
"你好 [姓名],原来你今年 [年龄] 岁了啊!祝你早日精通 [编程语言]!"
print("what's your name?")
name = input()
print("In which year were you born? " )
year = input()
age=2025-int(year)
print("what's your favourite language?")
language = input()
print(f"你好{name},原来你今年 {age} 岁了啊!祝你早日精通 {language}!")
批改:
# 你的写法
print("what's your name?")
name = input()
# 更 Pythonic 的写法(效果一样,少写一行)
name = input("What's your name? ")
第二阶段:逻辑控制 (Flow Control)
A. Python 的灵魂:缩进 (Indentation) ⚠️ 超级重要
在 C 或 Java 里,代码块是用大括号 {} 包起来的。但在 Python 里,我们只用缩进(通常是 4 个空格或 1 个 Tab)。
- 缩进对其,就代表它们属于同一个"组织"。
- 缩进不对,程序必废。
B. 此时此刻非彼时:条件判断 (if/elif/else)
让程序根据不同的情况做不同的事。
if: 如果...elif: (else if 的缩写) 或者如果...else: 否则... (以上都不满足时)
**注意冒号 :** ------ 每一句判断语句结尾都要加冒号!
python
score = 85
if score >= 90:
print("大神!") # 注意这里有缩进
elif score >= 60:
print("及格了。") # 这里也有缩进
else:
print("下次加油!") # 这里也有缩进
# print("结束") # 如果这行不缩进,不管上面怎么判断,这行最后都会执行
C. 拒绝手动重复:循环 (For Loop)
如果你想打印 100 次"你好",千万别写 100 行 print。
range() 函数:生成一串数字。
range(5)-> 生成 0, 1, 2, 3, 4 (注意:从 0 开始,不包含 5)range(1, 4)-> 生成 1, 2, 3
python
# 让 i 依次代表 0 到 4
for i in range(5):
print(f"这是第 {i+1} 次循环")
💻 PyCharm 实操环节
请在 PyCharm 中新建 lesson2.py,尝试下面的逻辑。
🎯 第二阶段通关测试:【FizzBuzz 报数游戏】
这是一个经典的面试题,用来测试逻辑思维。
任务要求:
编写一个程序,使用 for 循环遍历从 1 到 20 的数字(包含 20)。
对于每个数字 i:
- 如果这个数字能被 3 整除(提示:使用求余运算符
%,如i % 3 == 0),打印"Fizz"。 - 如果这个数字能被 5 整除,打印
"Buzz"。 - 如果这个数字既能被 3 又能被 5 整除,打印
"FizzBuzz"。 - 如果以上都不满足,直接打印这个数字本身。
预期输出大概是这样的:
text
1
2
Fizz
4
Buzz
Fizz
...
14
FizzBuzz
...
提示: 判断的顺序很重要哦!要把最苛刻的条件放在最前面。
开始吧!写完把代码发给我! ⚔️
for i in range(1,21):
if i%3==0:
if i%5==0:
print("FizzBuzz")
else:
print("Fizz")
elif i%5==0:
print("Buzz")
else:
print(i)
指导:
# 另一种常见写法(扁平化)
for i in range(1, 21):
if i % 3 == 0 and i % 5 == 0: # 同时满足,最苛刻的条件放最上面
print("FizzBuzz")
elif i % 3 == 0:
print("Fizz")
elif i % 5 == 0:
print("Buzz")
else:
print(i)
第三阶段:数据大管家 (Data Structures)
这一关非常关键。在实际工作中,我们很少处理单个变量,通常都是处理一堆 数据。Python 有两个最强大的武器:列表 (List) 和 字典 (Dictionary)。
A. 列表 (List):有序的收纳盒
就像一个超市购物清单,里面的东西是有顺序的。
- 符号 :方括号
[] - 索引 (Index) :重点!Python 的计数是从 0 开始的! 第一个元素是
[0]。
python
# 创建列表
fruits = ["苹果", "香蕉", "橘子"]
# 查
print(fruits[0]) # 输出:苹果
print(fruits[-1]) # 负数代表倒着数,-1 就是最后一个:橘子
# 增
fruits.append("葡萄") # 加到最后面
# 改
fruits[1] = "大西瓜" # 把香蕉改成大西瓜
# 删
fruits.remove("苹果") # 删掉苹果
B. 字典 (Dictionary):带标签的档案柜
就像我们查字典,通过"拼音(键 Key)"找到"解释(值 Value)"。它是键值对 (Key-Value Pair) 的集合。
- 符号 :花括号
{} - 特点:查找速度极快,不管里面有多少数据。
python
# 创建字典: 学生姓名 -> 分数
scores = {
"张三": 85,
"李四": 92,
"王五": 78
}
# 查:通过 Key 查 Value
print(scores["李四"]) # 输出:92
# 增/改:如果 Key 不存在就是新增,存在就是修改
scores["赵六"] = 100 # 新增赵六
scores["张三"] = 99 # 张三进步了,改成 99
# 常用操作:看看有哪些 Key
print(scores.keys())
💻 PyCharm 实操环节
新建 lesson3.py,把上面的代码敲一遍,重点体会一下 List 的 [0] 和 Dict 的 ["key"] 的区别。
🎯 第三阶段通关测试:【简易库存管理系统】
任务要求:
我们要结合列表 、字典 和之前学的循环来做一个小功能。
- 创建一个列表
products,里面初始有:"手机","电脑"。 - 创建一个字典
prices,记录价格:{"手机": 3000, "电脑": 5000}。 - 进货操作 :请用代码往
products列表里追加一个"耳机"。 - 定价操作 :请用代码往
prices字典里添加耳机的价格,比如200。 - 盘点展示(难点):
- 使用
for循环遍历products列表。 - 在循环中,通过商品名字去
prices字典里把价格取出来。 - 打印格式:
商品:手机,价格:3000元...
错误版本
products=["手机","电脑"]
prices={"手机": 3000, "电脑": 5000}
products.append("耳机")
prices["耳机"]=200
i=0
for i in products:
print(f'商品:{products[i]},价格:{prices["products[i]"]}元')
错误原因没有理解在python的循环里,这个i已经变成了列表里的值。
正确版本
products=["手机","电脑"]
prices={"手机": 3000, "电脑": 5000}
products.append("耳机")
prices["耳机"]=200
i=0
for i in products:
print(f'商品:{i},价格:{prices[i]}元')
哎呀,这就差一点点!🤏 你的逻辑是对的,但是栽在了 Python 循环的一个"特权"上。
如果直接运行你的代码,应该会报错:TypeError: list indices must be integers...。
我们来分析一下为什么:
❌ 问题出在这里:
python
for i in products:
# 这里 Python 和 C/Java 不一样。
# i 不再是数字下标 (0, 1, 2),i 直接就是那个东西了!
# 第一轮:i = "手机"
# 第二轮:i = "电脑"
# 所以当你写 products[i] 时,等于是在写 products["手机"] -> 列表不能用字查,只能用数字查。
# 另外,prices["products[i]"] 里的引号把 products[i] 变成了一句死板的话,而不是变量。
✅ 修正后的代码:
因为 i 已经是商品名字了,直接用它就行!
python
products = ["手机", "电脑"]
prices = {"手机": 3000, "电脑": 5000}
products.append("耳机")
prices["耳机"] = 200
# 建议把变量名 i 改成 item 或 p (product),读起来更顺口
for p in products:
# p 现在就是 "手机", "电脑", "耳机"
# 直接用 p 去字典里查价格
print(f'商品:{p},价格:{prices[p]}元')
你可以在 PyCharm 里改一下试试,看看是不是成功了?理解了这个,Python 的循环你会觉得比其他语言舒服太多了。
如果你改好了并理解了这一点,我们就进入第四阶段:函数与模块化。这一关是把"写脚本"变成"写工程"的分水岭。
第四阶段:函数与模块化 (Functions & Modules)
这一关的目标是:学会"偷懒"------把重复的代码打包,以后一行指令调用。
A. 定义函数 (Functions)
就像我们数学里的 ,你给它一个原料,它给你加工后的结果。
- 关键字 :
def(definition) - 结构 :
def 名字(参数): - 返回值 :
return(把结果扔回来,如果不写 return,函数跑完就结束了,不给你任何东西)
python
# 定义一个做加法的工具
def add_numbers(a, b):
result = a + b
return result
# 调用它
he = add_numbers(3, 5)
print(he) # 输出 8
B. 引入模块 (Modules)
Python 之所以强大,是因为它有全世界最大的"工具库"。你想画图、做网站、搞 AI,都不用自己写核心代码,直接借用别人的。
- 关键字 :
import
比如,我们要算一个随机数,或者算复杂的数学(比如根号):
python
import random # 引入随机数工具箱
import math # 引入数学工具箱
# 生成一个 1 到 100 的随机整数
lucky_num = random.randint(1, 100)
print(f"今天的幸运数字是:{lucky_num}")
# 算 16 的平方根
root = math.sqrt(16)
print(root)
💻 PyCharm 实操环节
新建 lesson4.py。
🎯 第四阶段通关测试:【简易计算器 & 抽奖机】
任务要求:
- 自定义函数 :写一个函数叫
calc_area(radius),用来计算圆的面积。
- 公式: (或者用
3.14 * radius ** 2) - 函数要
return面积结果。
- 调用函数:计算半径为 5 的圆面积,并打印出来。
- 模块使用:
- 引入
random库。 - 创建一个列表
names = ["张三", "李四", "王五", "你的名字"]。 - 使用
random.choice(names)随机选一个人作为"中奖者"并打印出来。
这个练习让你既学会造工具(函数),又学会用别人的工具(模块)。动手试试! 🛠️
代码
import random
def calc_area(radius):
result=3.14 * radius** 2
return result
print(calc_area(5))
names = ["张三", "李四", "王五", "你的名字"]
print(random.choice(names))
满分!💯 完全正确,无可挑剔!
你现在的代码风格已经非常像一个熟练的 Python 程序员了:
- 引用规范 :
import放在最上面,符合行业标准。 - 逻辑清晰:函数定义 -> 调用 -> 模块使用,一气呵成。
👨🏫 老师的小补充(追求完美版):
虽然 3.14 够用了,但如果你做高精度计算,Python 自带了一个更精准的 。
python
import math
# math.pi 会提供 3.1415926535... 更加精确
result = math.pi * radius ** 2
🎉 第四阶段通关! 现在你已经掌握了 Python 的 80% 核心功能。接下来是最后一关,也是让你的程序从"玩具"变成"工具"的关键------不仅要在内存里跑,还要把结果存下来。
第五阶段:文件操作与综合实战 (File I/O)
这一关的目标是:学会读写文件(txt),让数据持久化保存。
A. 传统的笨办法(不推荐)
就像打开冰箱拿大象:打开 -> 放进去 -> 关门。
python
f = open("test.txt", "w") # w 代表 write (写入模式)
f.write("Hello World")
f.close() # ⚠️ 很多人容易忘写这一句,导致文件损坏或占用
B. 优雅的办法:with open(强烈推荐)
这是 Python 独有的"上下文管理器"。
它的意思是:"只要在这个缩进的代码块里,文件就是打开的;一旦代码跑出这个缩进,Python 自动帮你关掉文件。" 再也不用担心忘记 close() 了!
C. 三种常用模式
"w"(Write): 覆盖写 。如果文件不存在,创建它;如果存在,清空里面的内容重写(慎用!)。"a"(Append): 追加写。在文件末尾接着写,不会清空原来的。"r"(Read): 只读。
python
# 1. 写入 (w 模式)
with open("data.txt", "w", encoding="utf-8") as f:
f.write("这是第一行数据。\n") # \n 是换行符
# 2. 追加 (a 模式)
with open("data.txt", "a", encoding="utf-8") as f:
f.write("这是追加的内容。")
# 3. 读取 (r 模式)
with open("data.txt", "r", encoding="utf-8") as f:
content = f.read() # 一次性读完
print("文件里的内容是:")
print(content)
注:encoding="utf-8" 是为了防止中文乱码,养成好习惯加上它。
💻 PyCharm 实操环节
新建 lesson5.py。这是我们要完成的最后一个基础实战,我们来做一个**"学习日记本"**。
🎯 第五阶段通关测试:【持久化日记本】
任务要求:
- 使用
input()询问用户:"今天学到了什么?" - 使用
with open和"a"(追加模式),把用户输入的内容写入到一个叫diary.txt的文件中。
- 提示:为了美观,可以在写入的内容后面加个换行符
\n。
-
写入完成后,使用
"r"(读取模式) 打开这个文件,把里面所有的历史记录都打印出来,展示给用户看。learn=input("今天学到了什么")
with open("diary.txt","a",encoding="utf-8") as f:
f.write(f"{learn}\n")
with open("diary.txt","r",encoding="utf-8") as f:
print(f.read())
🎉 恭喜你!满分通关! 🎓
你的代码非常完美,尤其是你灵活运用了 f-string (f"{learn}\n") 来处理写入格式,这比用 + 号拼接要优雅得多。
现在,你已经掌握了 Python 的 六大基石:
- 变量 (存数据)
- 逻辑判断 (做决定)
- 循环 (做重复工作)
- 数据结构 (列表/字典管理数据)
- 函数 (打包工具)
- 文件操作 (永久保存)
🚀 最终挑战:【毕业设计 - 命令行记账小助手】
为了让你真正达到"灵活运用",我们需要把前面学的这 6 点全部串联起来,做一个真正有用的小软件。
项目目标:
做一个记账程序,它能一直运行,直到你输入"退出"。它能记录你花的每一笔钱,保存到文件,并告诉你一共花了多少钱。
功能需求(请尝试自己实现):
- 死循环 :程序启动后,使用
while True:让它一直运行。 - 交互:每次循环都问用户:"输入项目 (输入 q 退出):" 和 "输入金额:"。
- 退出机制 :如果用户在输入项目时输入了
q,使用break结束循环。 - 保存 :把每一笔"项目 - 金额"写入
bills.txt。 - 展示(加分项) :程序开始时,先读取
bills.txt,把里面的金额加起来,打印:"你之前一共花了 xx 元"。
💡 给你一个骨架(填空题):
python
# 1. 这里先写读取功能,计算历史总金额并打印
# total_money = 0
# with open... (如果文件不存在可能会报错,可以先手动新建一个空的 bills.txt)
print("--- 欢迎使用记账小助手 ---")
while True:
item = input("\n请输入消费项目 (输入 q 退出): ")
# 2. 这里写退出判断
if item == 'q':
print("退出程序,下次见!")
break # 打断循环
price = input("请输入金额: ")
# 3. 这里写写入文件操作
# 记得把 price 转成 int 或 float 才能计算,
# 但写入文件时必须是 string
print(f"记账成功:{item} 花费 {price} 元")
这是你从"新手"迈向"入门"的最后一战。写完这个,你就可以自豪地说你会 Python 基础了! 动手试试吧! 💪
# 1. 这里先写读取功能,计算历史总金额并打印
total_money = 0
with open("bills.txt","r",encoding="utf-8") as f:
for line in f:
total_money+=int(f.readline())
print(f"--- 欢迎使用记账小助手 (历史总消费: {total_money} 元)---")
while True:
item = input("\n请输入消费项目 (输入 q 退出): ")
# 2. 这里写退出判断
if item == 'q':
print("退出程序,下次见!")
break # 打断循环
price = input("请输入金额: ")
with open("bills.txt","a",encoding="utf-8") as f:
f.write(f"{price}\n")
# 3. 这里写写入文件操作
# 记得把 price 转成 int 或 float 才能计算,
# 但写入文件时必须是 string
print(f"记账成功:{item} 花费 {price} 元")