本文档面向零基础编程学习者,帮助你快速掌握 Python 的核心概念与基础语法。信息化越来越成为一种必备选项,而非加分项,所以掌握一种编程能力,是越来越有必要的。祝君有所获,有所成。目录
Python 简介
环境搭建
第一个程序
基础语法
数据类型
流程控制
函数
常用数据结构
文件操作
面向对象基础
常用标准库
学习建议与资源
. Python 简介
什么是 Python?
Python 是一种高级、解释型、通用的编程语言,由 Guido van Rossum 于 1991 年发布。
Python 的特点
| |
|---|
| 简洁易读 | |
| 开源免费 | |
| 跨平台 | 支持 Windows、macOS、Linux 等操作系统 |
| 丰富的库 | |
| 多范式 | |
Python 的应用领域
Web 开发:Django、Flask 等框架
数据分析:Pandas、NumPy、Matplotlib
人工智能:TensorFlow、PyTorch、Scikit-learn
自动化运维:Ansible、Fabric
网络爬虫:Scrapy、BeautifulSoup
科学计算:SciPy、SymPy
. 环境搭建
2.1 安装 Python
Windows
访问 python.org
下载最新版本的 Python 安装包
重要:安装时勾选 "Add Python to PATH"
点击 "Install Now" 完成安装
macOS
# 使用 Homebrew 安装brew install python3# 或下载安装包从官网安装
Linux (Ubuntu/Debian)
sudo apt updatesudo apt install python3 python3-pip
2.2 验证安装
打开终端(命令提示符),输入:
python --version# 或python3 --version
如果显示版本号(如 Python 3.12.0),说明安装成功。2.3 选择编辑器/IDE
| | |
|---|
| VS Code | | |
| PyCharm | | |
| Jupyter Notebook | | |
| IDLE | | |
3. 第一个程序
3.1 交互式解释器
打开终端,输入 python 或 python3 进入交互模式:
>>> print("Hello, World!")Hello, World!
3.2 编写 Python 文件
创建一个名为 hello.py 的文件:
# hello.pyprint("Hello, World!")print("你好,Python!")
4. 基础语法
4.1 变量与赋值
# 变量不需要声明类型,直接赋值name = "Alice" # 字符串age = 25 # 整数height = 1.75 # 浮点数is_student = True # 布尔值# 同时给多个变量赋值a, b, c = 1, 2, 3# 交换两个变量的值x, y = 10, 20x, y = y, x # x=20, y=10
4.2 命名规则
# 合法的变量名user_name = "Tom"_age = 20score2 = 95# 不合法的变量名# 2score = 95 # 不能以数字开头# my-name = "Tom" # 不能包含连字符# class = "A" # 不能使用关键字
4.3 输入与输出
# 输出print("Hello")print("a =", 10, "b =", 20) # 输出多个值# 格式化输出(f-string,推荐)name = "Bob"age = 30print(f"我叫{name},今年{age}岁")# 输入(程序会等待用户输入)name = input("请输入你的名字:")print(f"你好,{name}!")# 注意:input() 返回的是字符串age = input("请输入年龄:")age = int(age) # 转换为整数
4.4 运算符
# 算术运算符a = 10 + 3 # 加法:13b = 10 - 3 # 减法:7c = 10 * 3 # 乘法:30d = 10 / 3 # 除法:3.333...e = 10 // 3 # 整除:3f = 10 % 3 # 取余:1g = 2 ** 3 # 幂运算:8# 比较运算符(返回 True 或 False)10 > 5 # True10 == 5 # False10 != 5 # True# 逻辑运算符True and False # FalseTrue or False # Truenot True # False
5. 数据类型
5.1 基本数据类型
# 整数 (int)num = 100big_num = 10_000_000 # 可以用下划线分隔,提高可读性# 浮点数 (float)pi = 3.14159scientific = 1.5e-3 # 科学计数法,等于 0.0015# 字符串 (str)text = "Hello, Python!"multiline = """这是多行字符串"""# 布尔值 (bool)flag = True # 或 False# 空值 (NoneType)nothing = None
5.2 类型转换
# 字符串转整数num = int("123") # 123# 整数转字符串s = str(123) # "123"# 字符串转浮点数f = float("3.14") # 3.14# 转布尔值bool(1) # Truebool(0) # Falsebool("") # False(空字符串为 False)bool("hi") # True
5.3 字符串操作
text = "Hello, Python!"# 索引和切片print(text[0]) # 'H'(第一个字符)print(text[-1]) # '!'(最后一个字符)print(text[0:5]) # 'Hello'(切片,不包含结束位置)print(text[7:]) # 'Python!'(从索引7到末尾)print(text[:5]) # 'Hello'(从开始到索引5)# 常用方法print(len(text)) # 14(字符串长度)print(text.upper()) # "HELLO, PYTHON!"print(text.lower()) # "hello, python!"print(text.replace("Python", "World")) # "Hello, World!"print(text.split(", ")) # ['Hello', 'Python!']print("-".join(["a", "b", "c"])) # "a-b-c"# 字符串格式化(f-string)name = "Alice"age = 25print(f"姓名:{name},年龄:{age}")print(f"圆周率:{3.14159:.2f}") # 保留两位小数
6. 流程控制
6.1 条件语句(if-elif-else)
age = 18if age < 13: print("儿童")elif age < 20: print("青少年") # 输出else: print("成年人")# 简写形式(三元表达式)status = "成年" if age >= 18 else "未成年"
6.2 循环语句
for 循环
# 遍历列表fruits = ["苹果", "香蕉", "橙子"]for fruit in fruits: print(fruit)# 遍历字符串for char in "Hello": print(char)# 使用 range()for i in range(5): # 0, 1, 2, 3, 4 print(i)for i in range(1, 6): # 1, 2, 3, 4, 5 print(i)for i in range(0, 10, 2): # 0, 2, 4, 6, 8(步长为2) print(i)# 同时获取索引和值for index, fruit in enumerate(fruits): print(f"{index}: {fruit}")
while 循环
count = 0while count < 5: print(count) count += 1 # 等价于 count = count + 1# 注意:确保循环条件最终会变为 False,否则会形成死循环!
6.3 循环控制
# break:跳出整个循环for i in range(10): if i == 5: break # 当 i 等于 5 时,结束循环 print(i) # 输出 0, 1, 2, 3, 4# continue:跳过当前迭代for i in range(5): if i == 2: continue # 跳过 i=2 print(i) # 输出 0, 1, 3, 4# else:循环正常结束时执行(没有被 break 中断)for i in range(3): print(i)else: print("循环正常结束")
7. 函数
7.1 定义函数
# 基本函数定义def greet(): print("你好!")greet() # 调用函数# 带参数的函数def greet_person(name): print(f"你好,{name}!")greet_person("Alice")# 带返回值的函数def add(a, b): return a + bresult = add(3, 5)print(result) # 8# 默认参数def greet(name, greeting="你好"): print(f"{greeting},{name}!")greet("Bob") # 你好,Bob!greet("Bob", "早上好") # 早上好,Bob!# 关键字参数def introduce(name, age, city): print(f"{name},{age}岁,来自{city}")introduce(age=25, city="北京", name="Alice")
7.2 可变参数
# *args:接收任意数量的位置参数def sum_all(*numbers): total = 0 for n in numbers: total += n return totalprint(sum_all(1, 2, 3)) # 6print(sum_all(1, 2, 3, 4, 5)) # 15# **kwargs:接收任意数量的关键字参数def print_info(**kwargs): for key, value in kwargs.items(): print(f"{key}: {value}")print_info(name="Alice", age=25, city="北京")
7.3 Lambda 表达式(匿名函数)
# 简单的 lambda 函数square = lambda x: x ** 2print(square(5)) # 25# 常用于排序等场景students = [("Alice", 85), ("Bob", 92), ("Charlie", 78)]students.sort(key=lambda x: x[1], reverse=True)print(students) # [("Bob", 92), ("Alice", 85), ("Charlie", 78)]
8. 常用数据结构
8.1 列表(List)
# 创建列表fruits = ["苹果", "香蕉", "橙子"]mixed = [1, "hello", 3.14, True]# 访问元素print(fruits[0]) # "苹果"print(fruits[-1]) # "橙子"(最后一个)# 修改元素fruits[1] = "葡萄"# 添加元素fruits.append("西瓜") # 末尾添加fruits.insert(1, "芒果") # 在索引1处插入# 删除元素fruits.remove("苹果") # 删除第一个匹配的元素del fruits[0] # 删除指定索引的元素popped = fruits.pop() # 删除并返回最后一个元素# 列表切片print(fruits[1:3]) # 子列表print(fruits[:2]) # 前两个print(fruits[::-1]) # 反转列表# 列表操作numbers = [3, 1, 4, 1, 5]numbers.sort() # 排序(原地修改)numbers.reverse() # 反转print(len(numbers)) # 长度print(3 in numbers) # 判断是否包含# 列表推导式(快速创建列表)squares = [x**2 for x in range(5)] # [0, 1, 4, 9, 16]evens = [x for x in range(10) if x % 2 == 0] # [0, 2, 4, 6, 8]
8.2 元组(Tuple)
# 元组是不可变的列表coordinates = (10, 20)point = 3, 4 # 括号可以省略# 元组解包x, y = coordinatesprint(x, y) # 10 20# 元组不可修改# coordinates[0] = 5 # 会报错!# 单元素元组(注意逗号)single = (1,) # 必须加逗号
8.3 字典(Dictionary)
# 创建字典person = { "name": "Alice", "age": 25, "city": "北京"}# 访问值print(person["name"]) # "Alice"print(person.get("gender", "未知")) # "未知"(键不存在时返回默认值)# 添加/修改person["age"] = 26person["gender"] = "女"# 删除del person["city"]# 遍历字典for key in person: print(f"{key}: {person[key]}")for key, value in person.items(): print(f"{key}: {value}")# 字典推导式squares_dict = {x: x**2 for x in range(5)}# {0: 0, 1: 1, 2: 4, 3: 9, 4: 16}
8.4 集合(Set)
# 创建集合(无序、不重复)fruits = {"苹果", "香蕉", "橙子", "苹果"} # 自动去重print(fruits) # {"苹果", "香蕉", "橙子"}# 常用操作fruits.add("西瓜")fruits.remove("香蕉")# 集合运算a = {1, 2, 3, 4}b = {3, 4, 5, 6}print(a | b) # 并集:{1, 2, 3, 4, 5, 6}print(a & b) # 交集:{3, 4}print(a - b) # 差集:{1, 2}print(a ^ b) # 对称差集:{1, 2, 5, 6}
9. 文件操作
9.1 读取文件
# 方式1:使用 with 语句(推荐,自动关闭文件)withopen("data.txt", "r", encoding="utf-8") asfile: content = file.read() # 读取全部内容 print(content)# 方式2:逐行读取withopen("data.txt", "r", encoding="utf-8") asfile: for line in file: print(line.strip()) # strip() 去除首尾空白# 方式3:读取为列表with open("data.txt", "r", encoding="utf-8") as file: lines = file.readlines() # 每行作为列表的一个元素
9.2 写入文件
# 写入模式(覆盖原有内容)withopen("output.txt", "w", encoding="utf-8") asfile: file.write("第一行\n") file.write("第二行\n")# 追加模式(在末尾添加)with open("output.txt", "a", encoding="utf-8") as file: file.write("追加的内容\n")# 写入多行lines = ["第一行", "第二行", "第三行"]withopen("output.txt", "w", encoding="utf-8") asfile: file.write("\n".join(lines))
9.3 文件模式说明
10. 面向对象基础
10.1 类与对象
# 定义类class Dog: # 类属性(所有实例共享) species = "Canis familiaris" # 构造方法(初始化对象时调用) def __init__(self, name, age): self.name = name # 实例属性 self.age = age # 实例方法 def bark(self): return f"{self.name} 说:汪汪!" def get_info(self): return f"{self.name} 今年 {self.age} 岁"# 创建对象(实例化)my_dog = Dog("Buddy", 3)# 访问属性和方法print(my_dog.name) # "Buddy"print(my_dog.bark()) # "Buddy 说:汪汪!"print(my_dog.get_info()) # "Buddy 今年 3 岁"
10.2 继承
# 父类class Animal: def __init__(self, name): self.name = name def speak(self): raise NotImplementedError("子类必须实现此方法")# 子类class Cat(Animal): def __init__(self, name, color): super().__init__(name) # 调用父类的构造方法 self.color = color def speak(self): return f"{self.name} 说:喵喵!"class Dog(Animal): def speak(self): return f"{self.name} 说:汪汪!"# 使用my_cat = Cat("Kitty", "白色")my_dog = Dog("Buddy")print(my_cat.speak()) # "Kitty 说:喵喵!"print(my_dog.speak()) # "Buddy 说:汪汪!"
11. 常用标准库
11.1 os 模块(操作系统接口)
import os# 获取当前工作目录print(os.getcwd())# 列出目录内容print(os.listdir("."))# 创建目录os.mkdir("new_folder")# 检查文件是否存在print(os.path.exists("file.txt"))# 拼接路径path = os.path.join("folder", "subfolder", "file.txt")
11.2 datetime 模块(日期时间)
from datetime import datetime, timedelta# 获取当前时间now = datetime.now()print(now) # 2024-01-15 10:30:00.000000# 格式化输出print(now.strftime("%Y-%m-%d%H:%M:%S")) # "2024-01-15 10:30:00"# 解析字符串为日期birthday = datetime.strptime("2000-05-20", "%Y-%m-%d")# 时间计算future = now + timedelta(days=7)print(future)
11.3 random 模块(随机数)
import random# 随机整数print(random.randint(1, 10)) # 1 到 10 之间的随机整数# 随机选择fruits = ["苹果", "香蕉", "橙子"]print(random.choice(fruits))# 打乱列表numbers = [1, 2, 3, 4, 5]random.shuffle(numbers)print(numbers)# 随机浮点数print(random.random()) # 0.0 到 1.0 之间
11.4 json 模块(JSON 数据处理)
import json# Python 字典转 JSON 字符串data = {"name": "Alice", "age": 25}json_str = json.dumps(data, ensure_ascii=False)print(json_str) # '{"name": "Alice", "age": 25}'# JSON 字符串转 Python 对象parsed = json.loads(json_str)print(parsed["name"]) # "Alice"# 读写 JSON 文件with open("data.json", "w", encoding="utf-8") as f: json.dump(data, f, ensure_ascii=False, indent=2)with open("data.json", "r", encoding="utf-8") as f: loaded = json.load(f)
12. 学习建议与资源
12.1 学习路径建议
第1周:基础语法 -> 变量、数据类型、运算符
第2周:流程控制 -> if/else、for/while 循环
第3周:函数 -> 定义、参数、返回值
第4周:数据结构 -> 列表、字典、元组、集合
第5周:文件操作与异常处理
第6周:面向对象编程
第7-8周:选择方向深入学习(Web/数据分析/AI等)
12.2 编程好习惯
写注释:解释"为什么",而不是"做什么"
命名规范:变量用小写+下划线(user_name),类用大驼峰(UserInfo)
使用 with 语句:确保文件等资源正确关闭
不要重复造轮子:善用标准库和第三方库
多练习:编程是技能,需要大量实践
12.3 推荐学习资源
12.4 常见错误与解决
# 错误1:缩进不一致def hello(): print("Hello") # 4个空格 print("World") # 5个空格 -> IndentationError# 正确:保持一致的缩进(建议4个空格)# 错误2:索引越界arr = [1, 2, 3]print(arr[3]) # IndexError# 正确:索引从0开始,最大索引为 len(arr)-1# 错误3:修改遍历中的列表for item in arr: arr.remove(item) # 危险!会导致跳过元素# 正确:遍历副本for item in arr[:]: arr.remove(item)
附录:快速参考表
常用内置函数
| |
|---|
print() | |
input() | |
len() | |
type() | |
int() | |
range() | |
enumerate() | |
zip() | |
sorted() | |
sum() | |
数据结构速查
| | |
|---|
list | | [1, 2, 3] |
tuple | | (1, 2, 3) |
dict | | {"a": 1} |
set | | {1, 2, 3} |
恭喜!你已经了解了 Python 的核心基础知识。编程最好的学习方式就是动手写代码,现在就开始你的第一个项目吧!