第一课先把 Python 代码的“骨架”搞明白。
1. Python 程序是什么
Python 程序通常保存在以 .py 结尾的文本文件中,例如:
first_program.py
文件内容:
print("你好,Python!")
print("这是我的第一个程序。")
在 PowerShell 中进入文件所在目录,然后运行:
python first_program.py
Python 默认从上到下、从左到右依次执行代码,所以输出是:
你好,Python!
这是我的第一个程序。
如果上下交换两行代码,输出顺序也会改变。
2. 最简单的程序结构
先看一个完整但简单的例子:
# 这是程序说明
# 文件名:student.py
student_name = "小明"
student_age = 18
def show_student():
"""显示学生信息。"""
print("姓名:", student_name)
print("年龄:", student_age)
if __name__ == "__main__":
show_student()
它可以分成五个部分:
注释
↓
变量或配置
↓
函数定义
↓
程序入口
↓
执行函数
你现在不需要完全理解函数和 __name__,先知道这是常见结构。
初学阶段写成下面这样也完全可以:
# 学生信息程序
student_name = "小明"
student_age = 18
print("姓名:", student_name)
print("年龄:", student_age)
3. 缩进是什么
Python 使用缩进表示代码的归属关系。
看这个程序:
age = 20
if age >= 18:
print("已经成年")
print("可以进入")
print("程序结束")
注意:
if age >= 18:
末尾有一个英文冒号 :。
下面两行向右缩进了四个空格:
print("已经成年")
print("可以进入")
它们都属于 if。
最后一行没有缩进:
print("程序结束")
它不属于 if,无论条件是否成立都会运行。
结构可以理解为:
如果年龄大于或等于18:
输出“已经成年”
输出“可以进入”
输出“程序结束”
输出结果:
已经成年
可以进入
程序结束
4. 为什么缩进很重要
下面是错误代码:
age = 20
if age >= 18:
print("已经成年")
运行时可能出现:(indented block:翻译过来就是缩进块)(IndentationError:缩进错误)
IndentationError: expected an indented block
意思是:
Python 发现
if后面应该有一个缩进代码块,但你没有缩进。
正确写法:
age = 20
if age >= 18:
print("已经成年")
再看一个错误:
age = 20
if age >= 18:
print("已经成年")
print("可以进入")
两行代码的缩进不一致,也会报错。
IndentationError: unexpected indent unexpected:意外的
正确写法:(可以按下Ctrl + alt + L自动缩进)
age = 20
if age >= 18:
print("已经成年")
print("可以进入")
记住三条规则:
- 每一级缩进使用四个空格。
- 同一级代码必须对齐。
- 不要混用 Tab 和空格。
大部分编辑器按一次 Tab 会自动插入四个空格,这是可以的。
5. 多层缩进
代码块里面还可以包含代码块:
age = 20
has_ticket = True
if age >= 18:
print("年龄检查通过")
if has_ticket:
print("票据检查通过")
print("允许进入")
print("检查结束")
归属关系是:
第一层:整个程序
第二层:年龄检查
第三层:票据检查
不要为了“好看”随便缩进:
print("第一行")
print("第二行")
第二行没有理由缩进,因此会报错。
缩进只应该出现在需要代码块的结构下面,例如:
if 条件:
代码
for 数据:
代码
while 条件:
代码
def 函数名():
代码
这些内容后面几周会分别学习。
6. 注释
注释是写给人看的说明,Python 不会执行它。
单行注释以 # 开头:
# 计算用户明年的年龄
age = 18
next_year_age = age + 1
print(next_year_age)
也可以写在代码右边:
port = 8080 # 本地测试服务端口
不过不要堆太多行尾注释,单独写在上一行通常更清楚。
多行说明可以连续使用多个 #:
# 这个程序用于模拟本地服务端。
# 当前只负责接收测试请求。
# 后续会增加协议解析功能。
7. 三引号不是普通注释
你可能会看到这种写法:
"""
这是一个本地协议测试程序。
作者:小明
"""
三引号创建的是多行字符串。放在模块、类或函数开头时,它叫作 docstring(文档字符串),用于说明代码用途。
例如:
def show_message():
"""显示欢迎信息。"""
print("欢迎学习 Python")
不要把三引号当作随处使用的多行注释。普通注释继续使用 #。
8. 好注释与坏注释
坏注释只是重复代码:
# 把年龄设置为18
age = 18
# 输出年龄
print(age)
代码本身已经表达得很清楚,注释没有提供额外信息。
更好的注释说明“为什么”:
# 测试协议要求年龄字段使用默认值18
age = 18
print(age)
再举一个以后会遇到的例子:
# RC4 加解密使用同一个操作,因为两者都是与密钥流进行 XOR
result = process_rc4(data, key)
好的注释通常解释:
- 为什么要这样写
- 数据有什么特殊格式
- 这里有什么容易踩的坑
- 这段代码负责什么业务逻辑
9. 第一周学习安排
第一天
- 创建和运行
.py文件 - 理解代码从上到下执行
- 学习
print()
第二天
- 理解代码块
- 学习四空格缩进
- 故意制造并修复
IndentationError
第三天
- 单行注释
- 行尾注释
docstring- 判断哪些注释没有价值
第四天
- 阅读有两层缩进的代码
- 判断每行代码属于哪个代码块
- 练习调整代码顺序
第五天
完成下面的综合练习。
10. 第一个练习
创建 week1.py:
# 第一周 Python 练习
# 作用:显示学习者信息
name = "把这里改成你的名字"
goal = "学习 Python 和安全逆向脚本开发"
print("姓名:", name)
print("学习目标:", goal)
if name == "把这里改成你的名字":
print("你还没有修改名字")
else:
print("配置完成")
print("开始学习")
运行它,然后修改 name,再运行一次,观察两次输出的区别。
11. 修复缩进练习
下面的代码故意写错了。不要复制正确答案,自己修复:
# 修复这个程序
score = 85
if score >= 60:
print("考试通过")
print("继续努力")
print("程序结束")
正确运行后应该输出:
考试通过
继续努力
程序结束
12. 本课作业
自己创建 my_profile.py,要求:
- 文件开头至少写两行注释
- 创建姓名、年龄、学习目标三个变量
- 使用
print()输出三个变量 - 使用一个
if...else... if内至少有两行正确缩进的代码- 故意制造一次缩进错误,读完报错后再修复
做完把 my_profile.py 的代码和运行结果可以发给AI去检查一下。
然后下一节我们讲变量、基本数据类型以及 print() 的详细用法。








暂无评论内容