这篇文章的目标:即使你从没写过任何代码,10 分钟后也能运行一个完整的小程序。
目录
- 环境准备:你需要的只有两样东西
- 第一个程序:Hello, World
- 变量与数据类型:Python 的基本单元
- 运算符与表达式:让数据动起来
- 字符串操作:文本处理的艺术
- 条件判断:程序的智慧抉择
- 循环:重复执行的力量
- 列表:有序的集合
- 字典:键值对的映射
- 函数:代码的复用利器
- 文件读写:与外部世界交互
- 异常处理:让程序更健壮
- 实战小项目:天气查询助手
- Python 语法速查表
- 下一步学习计划
1. 环境准备:你需要的只有两样东西
1.1 安装 Python
Python 3.9+ 即可(推荐 3.11 或 3.12)。
macOS:
brew install python
python3 --version
Linux (Ubuntu/Debian):
sudo apt install python3 python3-pip
python3 --version
Windows: 从 python.org 下载安装包,勾选 “Add Python to PATH”。
1.2 选择一个编辑器
| 编辑器 | 推荐度 | 特点 |
|---|---|---|
| VS Code | ⭐⭐⭐⭐⭐ | 免费、插件丰富、最流行 |
| PyCharm Community | ⭐⭐⭐⭐ | 专业 Python IDE |
| Cursor | ⭐⭐⭐⭐ | 内置 AI 辅助编程 |
| 记事本/Notepad | ⭐ | 不推荐,无语法高亮 |
VS Code 安装 Python 扩展后,即可获得代码补全、调试和格式化的完整支持。
2. 第一个程序:Hello, World
打开编辑器,新建文件 hello.py,输入以下代码:
print("Hello, World!")
保存后,在终端运行:
python3 hello.py
# 输出: Hello, World!
🎉 这就是你的第一个 Python 程序!
还有什么想输出的?
print("你好,Python!")
print(42) # 数字不需要引号
print(3.14)
print(True) # 布尔值
3. 变量与数据类型:Python 的基本单元
变量就像一个贴标签的盒子,你往里面放什么,它就是什么类型。
name = "Alice" # str 字符串
age = 25 # int 整数
height = 1.68 # float 浮点数
is_student = True # bool 布尔值(真/假)
hobbies = None # NoneType 空值
为什么 Python 不需要声明类型?
因为 Python 是动态类型语言——它会在运行时自动识别类型。但这并不意味着类型不重要,稍后你会学到如何通过类型注解让代码更清晰。
type() 函数:查看变量的类型
print(type(name)) # <class 'str'>
print(type(age)) # <class 'int'>
print(type(height)) # <class 'float'>
4. 运算符与表达式:让数据动起来
4.1 算术运算符
a = 10
b = 3
print(a + b) # 13 加法
print(a - b) # 7 减法
print(a * b) # 30 乘法
print(a / b) # 3.333... 除法(总是返回 float)
print(a // b) # 3 整除(向下取整)
print(a % b) # 1 取余
print(a ** b) # 1000 幂运算
4.2 比较运算符
print(5 == 5) # True 等于
print(5 != 3) # True 不等于
print(5 > 3) # True 大于
print(5 <= 3) # False 小于等于
4.3 逻辑运算符
print(True and False) # False
print(True or False) # True
print(not True) # False
print(5 > 3 and 7 < 10) # True
5. 字符串操作:文本处理的艺术
5.1 字符串创建与拼接
# 三种创建方式
greeting = "Hello"
name = 'Alice'
message = """这是一个
多行字符串"""
# 拼接
full_greeting = greeting + ", " + name
print(full_greeting) # Hello, Alice
# f-string(推荐)—— 最优雅的字符串格式化
greeting = f"你好,{name}!你今年{age}岁。"
print(greeting) # 你好,Alice!你今年25岁。
5.2 常用字符串方法
text = " Hello, Python! "
print(text.strip()) # "Hello, Python!" 去除首尾空格
print(text.lower()) # " hello, python! "
print(text.upper()) # " HELLO, PYTHON! "
print(text.replace("Hello", "Hi")) # " Hi, Python! "
print(text.split(", ")) # [' Hello', 'Python! ']
print("Python" in text) # True
print(len(text)) # 18
5.3 字符串索引与切片
s = "Python"
print(s[0]) # P 第一个字符
print(s[-1]) # n 最后一个字符
print(s[0:3]) # Pyt 索引 0 到 2
print(s[:3]) # Pyt 从开始到索引 2
print(s[3:]) # hon 从索引 3 到末尾
print(s[::2]) # Pto 每隔一个字符取一个
print(s[::-1]) # nohtyP 反转字符串
6. 条件判断:程序的智慧抉择
score = 85
if score >= 90:
grade = "A"
print("优秀!")
elif score >= 80:
grade = "B"
print("良好!")
elif score >= 70:
grade = "C"
print("中等")
else:
grade = "D"
print("需要加油")
print(f"等级: {grade}")
输出:
良好!
等级: B
三元表达式(一行 if-else)
result = "及格" if score >= 60 else "不及格"
print(result)
7. 循环:重复执行的力量
7.1 for 循环
# 遍历列表
fruits = ["苹果", "香蕉", "橙子"]
for fruit in fruits:
print(f"我喜欢吃{fruit}")
# 遍历 range
for i in range(5):
print(i) # 0, 1, 2, 3, 4
# enumerate:同时获取索引和值
for index, fruit in enumerate(fruits):
print(f"{index}: {fruit}")
7.2 while 循环
count = 0
while count < 5:
print(f"计数: {count}")
count += 1 # 等价于 count = count + 1
7.3 循环控制
# break:立即退出循环
for i in range(10):
if i == 5:
break
print(i) # 0, 1, 2, 3, 4
# continue:跳过当前迭代
for i in range(5):
if i == 2:
continue
print(i) # 0, 1, 3, 4
7.4 列表推导式(Pythonic 写法)
# 传统写法
squares = []
for x in range(10):
squares.append(x ** 2)
# 列表推导式(更简洁)
squares = [x ** 2 for x in range(10)]
tens = [x for x in range(20) if x % 2 == 0] # 偶数列表
print(tens) # [0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
8. 列表:有序的集合
列表是 Python 最常用的数据结构之一,相当于一个可以装任何东西的数组。
# 创建列表
numbers = [1, 2, 3, 4, 5]
mixed = [1, "hello", 3.14, True] # Python 列表可以混合类型
students = ["Alice", "Bob", "Charlie"]
# 基本操作
print(len(students)) # 3
print(students[0]) # Alice
print(students[-1]) # Charlie(最后一个)
# 修改
students[0] = "Anna" # 修改
students.append("David") # 末尾添加
students.insert(1, "Ben") # 在索引 1 插入
students.remove("Bob") # 移除第一个匹配的元素
# 切片
print(students[1:3]) # ['Ben', 'Charlie']
# 排序
scores = [85, 92, 78, 90]
scores.sort()
print(scores) # [78, 85, 90, 92]
scores.sort(reverse=True)
print(scores) # [92, 90, 85, 78]
# 常用内置函数调用
print(sum(scores)) # 345
print(max(scores)) # 92
print(min(scores)) # 78
9. 字典:键值对的映射
字典是一种键值对数据结构,适合存储有对应关系的数据,如用户信息、配置参数等。
# 创建字典
user = {
"name": "Alice",
"age": 25,
"email": "alice@example.com",
"is_active": True
}
# 访问
print(user["name"]) # Alice
print(user.get("phone", "未设置")) # 未设置(安全访问,不存在时返回默认值)
# 修改与添加
user["age"] = 26
user["phone"] = "13800138000"
# 遍历
def show_dict(d):
for key, value in d.items():
print(f"{key}: {value}")
show_dict(user)
# 删除
print(user.pop("phone", None)) # 删除并返回值
字典与列表的区别
| 特性 | 列表 (list) | 字典 (dict) |
|---|---|---|
| 索引方式 | 数字索引(0, 1, 2…) | 任意不可变键 |
| 顺序性 | 有序 | Python 3.7+ 有序 |
| 适用场景 | 同质数据序列 | 属性-值映射 |
| 查找速度 | O(n) | O(1) |
10. 函数:代码的复用利器
10.1 基本函数定义
def greet(name):
"""向某人打招呼"""
return f"你好, {name}!"
# 调用
message = greet("Alice")
print(message)
10.2 多参数与默认值
def calculate_area(width, height=10):
"""计算矩形面积,高度默认 10"""
return width * height
print(calculate_area(5)) # 50(高默认 10)
print(calculate_area(5, 8)) # 40
print(calculate_area(height=8, width=5)) # 40(关键字参数)
10.3 可变参数
def sum_all(*numbers):
"""接受任意数量的数字并求和"""
total = 0
for n in numbers:
total += n
return total
print(sum_all(1, 2, 3, 4)) # 10
10.4 lambda 表达式(匿名函数)
# 等价于 def square(x): return x ** 2
square = lambda x: x ** 2
print(square(5)) # 25
# 常用场景:配合排序
users = [("Alice", 25), ("Bob", 20), ("Charlie", 30)]
users.sort(key=lambda x: x[1]) # 按年龄排序
print(users) # [('Bob', 20), ('Alice', 25), ('Charlie', 30)]
11. 文件读写:与外部世界交互
11.1 基本文件操作
# 写入文件(自动关闭)
with open("greeting.txt", "w", encoding="utf-8") as f:
f.write("Hello, Python!\n")
f.write("第二行内容\n")
# 读取文件
with open("greeting.txt", "r", encoding="utf-8") as f:
content = f.read()
print(content)
# 逐行读取
with open("greeting.txt", "r", encoding="utf-8") as f:
for line in f:
print(line.strip())
11.2 pathlib(现代推荐方式)
from pathlib import Path
# 路径操作
p = Path("data/users.txt")
p.write_text("Alice, 25\nBob, 30\n", encoding="utf-8")
content = p.read_text(encoding="utf-8")
print(content)
# 检查文件存在
if p.exists():
print(f"{p} 存在,大小: {p.stat().st_size} 字节")
12. 异常处理:让程序更健壮
def safe_divide(a, b):
"""安全除法,处理除零错误"""
try:
result = a / b
return result
except ZeroDivisionError:
return "错误:除数不能为零"
except TypeError:
return "错误:请输入数字"
except Exception as e:
return f"未知错误: {e}"
finally:
print("计算完成")
# 测试
print(safe_divide(10, 2)) # 5.0
print(safe_divide(10, 0)) # 错误:除数不能为零
print(safe_divide("a", 2)) # 错误:请输入数字
13. 实战小项目:天气查询助手
把上面学的知识串起来,写一个完整的小程序:
import json
def load_weather_data():
"""加载天气数据(模拟从文件读取)"""
# 实际项目中这里会调用 API,如 requests.get(url)
return {
"北京": {"temp": 25, "condition": "晴", "humidity": 45},
"上海": {"temp": 28, "condition": "多云", "humidity": 60},
"广州": {"temp": 32, "condition": "雷阵雨", "humidity": 80},
}
def check_weather(city, weather_data):
"""查询指定城市的天气"""
if city in weather_data:
data = weather_data[city]
return (f"🌤 {city} 天气\n"
f"温度: {data['temp']}°C\n"
f"天气: {data['condition']}\n"
f"湿度: {data['humidity']}%")
else:
return f"抱歉,暂无 {city} 的天气信息。"
def main():
"""主程序"""
weather_data = load_weather_data()
print("欢迎使用天气查询助手!")
print("支持城市:北京、上海、广州")
print("输入 'quit' 退出\n")
while True:
city = input("请输入城市名: ").strip()
if city.lower() == "quit":
print("再见!")
break
if city:
print(check_weather(city, weather_data))
print()
if __name__ == "__main__":
main()
运行效果
欢迎使用天气查询助手!
支持城市:北京、上海、广州
输入 'quit' 退出
请输入城市名: 北京
🌤 北京 天气
温度: 25°C
天气: 晴
湿度: 45%
请输入城市名: quit
再见!
14. Python 语法速查表
数据类型
| 类型 | 示例 | 说明 |
|---|---|---|
int | 42 | 整数 |
float | 3.14 | 浮点数 |
str | "hello" | 字符串 |
bool | True/False | 布尔值 |
list | [1, 2, 3] | 有序可变集合 |
dict | {"a": 1} | 键值对映射 |
tuple | (1, 2, 3) | 有序不可变集合 |
set | {1, 2, 3} | 无序不重复集合 |
常用内置函数
| 函数 | 示例 | 说明 |
|---|---|---|
print() | print("Hello") | 输出 |
input() | name = input("姓名: ") | 获取输入 |
len() | len([1, 2, 3]) | 长度 |
range() | range(5) | 生成序列 |
enumerate() | enumerate(items) | 带索引枚举 |
zip() | zip(a, b) | 并行迭代 |
sorted() | sorted([3, 1, 2]) | 排序 |
sum() | sum([1, 2, 3]) | 求和 |
常用字符串方法
| 方法 | 示例 | 说明 |
|---|---|---|
.strip() | " hello ".strip() | 去除首尾空格 |
.split() | "a,b".split(",") | 分割字符串 |
.join() | ",".join(["a", "b"]) | 连接字符串 |
.replace() | "hello".replace("l", "L") | 替换字符 |
.upper() / .lower() | "hello".upper() | 大小写转换 |
.startswith() | "hello".startswith("he") | 前缀判断 |
.find() | "hello".find("l") | 查找位置 |
列表操作
| 操作 | 示例 | 说明 |
|---|---|---|
| 添加 | lst.append(4) | 末尾添加 |
| 插入 | lst.insert(0, "a") | 指定位置插入 |
| 删除 | lst.remove("a") | 移除值 |
| 弹出 | lst.pop() | 移除并返回末尾 |
| 排序 | lst.sort() | 原地排序 |
| 切片 | lst[1:4] | 子列表 |
15. 下一步学习计划
你已经掌握了 Python 的基础知识,接下来建议按以下方向深入:
- 面向对象编程 —— 类、继承、方法(第六篇将要学的内容)
- 模块与包 —— 组织大型项目(第八篇将要学的内容)
- 异常处理进阶 —— 自定义异常、上下文管理器
- 正则表达式 —— re 模块,文本模式匹配
- 虚拟环境 —— venv, conda, 依赖管理
- Web 开发 —— Flask/FastAPI,写第一个 API
- 数据科学 —— NumPy, Pandas 入门
- 自动化 —— 文件批处理、定时任务、爬虫
延伸阅读
- Python 极简入门教程 —— 全面深入的零基础教程
- Python 内置数据结构完全指南 —— 深入理解 list, dict, set
- Python 经典项目实战:从零实现猜数字游戏 —— 动手练一练
- Python 类型系统与 Pydantic V2 —— 为代码加上"类型盔甲"
记住:最好的学习方式就是动手写代码。别只看不练——打开编辑器,把上面的例子全部敲一遍,然后修改、破坏、修复它们。这才是学习 Python 的正确姿势!
继续阅读
探索更多技术文章
浏览归档,发现更多关于系统设计、工具链和工程实践的内容。