📚 全栈开发学习系列
01 路线总览与环境搭建 ✅
02 Python 语法基础(当前篇)
03 Python 进阶:文件操作、模块与异常处理
04 C 语言与内存:指针、分配与释放
05 数据结构与算法:链表、栈与队列
06 Git 版本控制:分支、合并与冲突解决
07 Linux 命令行:文件、权限与进程管理

Python 语法基础:变量、类型与流程控制

从零写出第一个 Python 程序,掌握变量、数据类型、条件判断、循环与函数
基础篇 Python 阶段一
读完本篇你将能:用三种方式运行 Python 程序,区分整数、浮点数、字符串、布尔四种基本类型,用 f-string 格式化输出,编写 if/elif/else 条件分支和 for/while 循环,并定义带参数和返回值的函数,独立完成一个命令行计算器。
📑 本文目录
01运行 Python 的三种方式
02变量与基本数据类型
03字符串操作与 f-string
04运算符速览
05条件判断:if / elif / else
06循环结构:for 与 while
07函数定义与使用
08动手练习

01 运行 Python 的三种方式

上一篇你在三台设备上跑通了 Hello World。现在正式学语法之前,先掌握三种运行 Python 代码的方式,在不同场景下灵活切换。

方式一:脚本文件(最常用)

用 Vim 创建 .py 文件,写完代码后用 python3 命令执行。这是日常开发的标准做法。

Terminal
vim hello.py
# 在 Vim 中输入以下代码,保存退出
python3 hello.py
hello.py
print("Hello, Python!")
print("我的第一个 Python 程序")
# 运行后输出:
Hello, Python!
我的第一个 Python 程序

方式二:交互模式(练手专用)

直接输入 python3 进入交互式解释器,输一行执行一行。适合随手测试语法,但代码不会保存。按 Ctrl+D 或输入 exit() 退出。

Interactive Mode
python3
Python 3.12.x (default, ...)
[...
>>> print(2 + 3)
5
>>> exit()

方式三:shebang 直接执行

在文件第一行写 #!/usr/bin/env python3,给文件加上执行权限后就能像系统命令一样直接运行。这在树莓派和云服务器上部署脚本时很有用。

Terminal + hello.py
1
2
3
4
5
6
7
8
#!/usr/bin/env python3
print("直接执行模式")
# 给文件加执行权限
chmod +x hello.py
# 直接运行(不再需要 python3 前缀)
./hello.py

02 变量与基本数据类型

Python 变量像贴了标签的盒子——你不需要提前声明盒子的类型,放进去什么数据,变量就是什么类型。用 = 赋值,用 type() 查看类型。

四种基本类型

类型 名称 示例 用途
int 整数 25, -100, 0 计数、索引
float 浮点数 3.14, -0.5, 2.0 小数运算
str 字符串 "hello", 'Python' 文本处理
bool 布尔值 True, False 条件判断
Python
device_name = "树莓派"
ram_gb = 8
cpu_temp = 52.3
is_online = True
print(type(device_name))  # <class 'str'>
print(type(ram_gb))     # <class 'int'>
print(type(cpu_temp))   # <class 'float'>

变量命名规则

• 只能用字母、数字、下划线,不能以数字开头
• 区分大小写:age 和 Age 是两个不同变量
• 用蛇形命名法(snake_case):cpu_temp 而非 cpuTemp
• 不能用 Python 关键字:if、for、def、class 等
⚠️ 常见错误
1st_device = "mac" — 变量名不能以数字开头,会报 SyntaxError
✓ 正确:device_1 = "mac"

03 字符串操作与 f-string

你已经会定义字符串变量了。现在学习字符串最常用的三个操作:f-string 格式化、切片、内置方法。这三个技能覆盖日常 80% 的文本处理需求。

f-string 格式化输出

f-string 是 Python 3.6+ 推荐的字符串格式化方式。在字符串前加 f,用 {} 嵌入变量。比旧的 %s 和 .format() 更直观。

Python
device = "Termux"
uptime_hours = 72
print(f"设备: {device}, 已运行: {uptime_hours} 小时")
# 输出: 设备: Termux, 已运行: 72 小时
# f-string 内可直接写表达式
print(f"已运行 {uptime_hours / 24:.1f} 天")
# 输出: 已运行 3.0 天

字符串切片

用 [起始:结束] 截取字符串的一段。索引从 0 开始,结束位置不包含。省略起始默认从头开始,省略结束默认到末尾。

Python
filename = "sensor_log.txt"
print(filename[0:6])   # sensor
print(filename[-4:])    # .txt(负索引从末尾倒数)
print(filename[:-4])   # sensor_log(去掉扩展名)

常用字符串方法

方法 功能 示例
.upper() 转大写 "abc".upper() → "ABC"
.strip() 去首尾空白 " hi ".strip() → "hi"
.split() 分割成列表 "a,b,c".split(",")
.replace() 替换子串 "v1".replace("1","2")

04 运算符速览

掌握了变量和字符串,接下来需要运算符把数据「加工」成结果。Python 运算符分三类:算术、比较、逻辑。重点记住两个容易混淆的: / 是真除法(结果有小数), // 是整除(直接砍掉小数)。

算术运算符

运算符 功能 示例 结果
+ 加 7 + 3 10
/ 真除法 7 / 2 3.5
// 整除 7 // 2 3
% 取余 7 % 2 1
** 幂运算 2 ** 10 1024
💡 小贴士
判断一个整数是奇数还是偶数,只需看 x % 2 的结果:0 是偶数,1 是奇数。这在循环跳行、数据分组的场景中非常常用。

比较与逻辑运算符

比较运算符返回 True 或 False,逻辑运算符把它们组合起来。这是下一节条件判断的基础。

Python
temp = 38
# 比较运算
print(temp > 37)   # True
print(temp == 37)  # False
# 逻辑运算(and/or/not)
print(temp > 37 and temp < 42)  # True
print(not (temp > 40))           # True

05 条件判断:if / elif / else

你已经会比较运算了。条件判断让程序根据比较结果走不同分支——比如温度超过阈值就报警,否则继续监控。Python 用 if / elif / else 三个关键字实现,靠缩进(4 个空格)区分代码块。

temp_monitor.py
1
2
3
4
5
6
7
8
9
cpu_temp = int(input("输入CPU温度: "))
if cpu_temp >= 80:
    print(f"⚠️ 危险! CPU温度 {cpu_temp}°C,立即降温")
elif cpu_temp >= 60:
    print(f"⚠ 温度偏高: {cpu_temp}°C")
else:
    print(f"✅ 温度正常: {cpu_temp}°C")

运行后输入不同温度值,程序走不同分支。关键点:if 条件为 True 时执行其下缩进块,否则检查 elif,都不满足则走 else。

⚠️ 常见错误
if cpu_temp > 80:
print("危险") — print 行没有缩进,Python 报 IndentationError
✓ 正确:if 下方的代码行必须缩进 4 个空格(不是 Tab)。Vim 配置了 expandtab 后按 Tab 自动转空格。

06 循环结构:for 与 while

条件判断让程序分叉,循环让程序重复。for 循环用于「已知次数」的重复,while 循环用于「满足条件就继续」的重复。两个控制语句 break 跳出循环, continue 跳过本轮。

for 循环 + range()

range(n) 生成 0 到 n-1 的整数序列。range(a, b) 生成 a 到 b-1。

ping_check.py
1
2
3
4
5
6
7
8
9
# 模拟 3 次网络连通性检测
for i in range(1, 4):
    print(f"第 {i} 次检测...")
    if i == 3:
        print("检测完成,退出循环")
        break
# 输出: 第1次... 第2次... 第3次... 检测完成

while 循环

while 适合「不知道要循环几次,但知道什么时候停」的场景。条件为 True 就继续,为 False 就退出。务必确保循环体内有改变条件的操作,否则死循环。

Python
retry = 0
while retry < 3:
    print(f"重连尝试 {retry + 1}/3")
    retry += 1
# 输出: 重连尝试 1/3 2/3 3/3
💡 小贴士
for 和 while 的选择原则:知道循环次数用 for(如遍历设备列表),不知道次数但知道终止条件用 while(如重试直到成功)。不确定时优先 for,它更不容易写出死循环。

07 函数定义与使用

前面写的代码都是「从上到下执行一次」。当同一段逻辑要重复使用时,把它封装成函数——给这段代码起个名字,传入参数就能调用。函数是代码复用的基本单元,后续所有项目都建立在函数之上。

定义和调用函数

用 def 定义函数,括号内写参数, return 返回结果。调用时写函数名加括号。

calc.py
1
2
3
4
5
6
7
8
9
10
def check_device(name, temp, threshold=60):
    """检查设备温度是否超标"""
    if temp >= threshold:
        return f"{name}: ⚠ {temp}°C 超标"
    return f"{name}: ✅ {temp}°C 正常"
# 调用函数(threshold 有默认值,可省略)
print(check_device("树莓派", 52))
# 输出: 树莓派: ✅ 52°C 正常
print(check_device("云服务器", 78, 70))

第 1 行定义了 check_device 函数,三个参数中 threshold=60 是默认参数——调用时不传就用 60。第 2 行三引号字符串是文档说明,可用 help(check_device) 查看。

函数的四个关键概念

1 参数是入口——函数通过参数接收外部数据
2 return 是出口——函数通过 return 把结果交还给调用者
3 默认参数让调用更灵活——不传就用默认值
4 函数没有 return 时默认返回 None
⚠️ 常见错误
result = check_device("树莓派") — 函数需要 name 和 temp 两个必传参数,只传一个会报 TypeError
✓ 正确:result = check_device("树莓派", 52) — 必传参数必须都给值

08 动手练习

以下练习在任意一台设备上完成(推荐 macOS 或 Termux)。用 Vim 编辑,用 python3 文件名.py 运行。

🟢 基础验证
创建 device_info.py,定义三个变量:设备名(字符串)、内存大小(整数)、是否在线(布尔值),用 f-string 输出格式化信息。
参考解法:
name = "树莓派"
ram = 8
online = True
print(f"{name} | {ram}GB | 在线: {online}")
🟡 组合应用
编写一个命令行计算器程序 calc.py:用 input() 接收两个数字和一个运算符(+、-、*、/),用 if/elif 判断运算符并输出结果。要求:除法时检测除数是否为 0,是则输出错误提示。
提示:用 float(input("...")) 把输入转为浮点数。结构参考:input 取值 → if/elif 判断运算符 → print 结果或错误。
🔴 开放挑战
设计一个多设备温度监控脚本 monitor.py:定义一个函数 check_temp(name, temp, threshold),然后用 for 循环遍历一个包含 3 台设备温度数据的列表(用嵌套列表或字典存储),对每台设备调用该函数并输出结果。要求:函数能根据温度返回不同级别的告警信息,循环结束后统计有多少台设备超标。
参考方向:设备数据可用列表存储,如 devices = [["树莓派", 52], ["云服务器", 78], ["Termux", 45]]。函数返回 "正常"/"警告"/"危险" 三种状态,循环中用变量计数超标设备数。
📖 知识回顾
三种运行方式 int/float/str/bool f-string 格式化 字符串切片 算术/比较/逻辑运算符 if/elif/else for + range() while 循环 break / continue def 定义函数 参数与返回值 默认参数
下篇预告
03 Python 进阶:文件操作、模块与异常处理
掌握了变量、类型、流程控制和函数后,下一篇将学习读写文件、导入标准库模块、用 try/except 处理程序运行时错误,编写更健壮的 Python 工具。
关注获取全栈开发系列全部文章