第 1 章 Python 介绍
1.1 概述
Python 是一种简洁、易读、功能强大的编程语言,支持模块化组织代码,具备丰富的标准库和第三方库。
1.2 环境部署
需安装 Python 3.12 版本(自动附带 pip 工具),后续可通过 pip 管理第三方模块。
1.3 开发工具
推荐使用 PyCharm,支持项目管理、代码编辑、解释器配置等功能。
1.4 Python 模块
1.4.1 安装模块
模块是存放功能性代码的文件,用于提升代码可维护性。Python 标准模块可直接导入,第三方模块需通过 pip 安装。
- 安装语法:
pip install 模块名 - 示例(安装 pygame):
pip install pygame - 超时报错解决:需配置国内镜像源,避免网络问题导致安装失败。
1.4.2 pip 镜像源设置
- 升级 pip 并配置镜像源:
python
python -m pip install -i https://pypi.tuna.tsinghua.edu.cn/simple --upgrade pip
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
- 生成并编辑 pip.ini 文件(Windows 系统):
ini
[global]
timeout=40
index-url=http://mirrors.aliyun.com/pypi/simple/
extra-index-url=
https://pypi.tuna.tsinghua.edu.cn/simple/
http://pypi.douban.com/simple/
http://pypi.mirrors.ustc.edu.cn/simple/
[install]
trusted-host=
pypi.tuna.tsinghua.edu.cn
mirrors.aliyun.com
pypi.douban.com
pypi.mirrors.ustc.edu.cn
-
检查安装结果:
pip list -
验证 pygame 安装:
python -m pygame.examples.aliens
1.4.3 导入设置
-
PyCharm 中配置解释器:
- 路径:Settings → Project:xxx → Python Interpreter
- 可添加本地解释器或通过 Python Packages 工具安装模块。
-
导入模块的三种方式:
-
直接导入:
import pygame,调用格式:
模块.函数/变量pythonimport pygame pygame.init() # 调用pygame的init()函数 -
导入指定内容:
from 模块 import 功能pythonfrom pygame import init init() # 直接调用init()函数 -
导入全部内容(不推荐):
from 模块 import *pythonfrom pygame import * init() # 直接调用模块内所有功能
-
-
模块、包、库的区别:
- 模块:单个.py 文件,文件名即模块名。
- 包:含
__init__.py的目录,可包含多个模块或子包。 - 库:相关功能模块的集合(抽象概念)。
第 2 章 Python 基础
2.1 代码格式
Python 代码格式是语法的一部分,不符合规范会导致运行错误。
2.1.1 注释
-
单行注释:以
#开头,可单独占行或跟在代码后。
python# 单行注释:打印Hello,Python print("Hello,Python") # 代码后注释(至少两个空格分隔) -
多行注释:三对单引号或双引号包裹,用于说明函数 / 类功能。
python''' 多行注释:计算BMI指数 功能:接收用户身高体重,计算并判断体重范围 ''' height = input("请输入您的身高(单位为米):") weight = input("请输入您的体重(单位为公斤):") bmi = float(weight) / (float(height) * float(height)) print("您的BMI指数:", bmi) if bmi < 18.5: print("您的体重过轻!") elif 18.5 <= bmi < 24.9: print("正常范围,继续保持!") elif 24.9 <= bmi < 29.9: print("您体重过重!") else: print("该减肥了!")
2.1.2 缩进
-
首选 4 个空格作为一级缩进,Python3 不允许混合 Tab 和空格。
-
同一代码块需保持相同缩进量,否则触发
IndentationErrorpython# 正确示例 if True: print("True") else: print("False") print("执行完毕") # 错误示例(最后一行缩进不规范) if True: print("True") else: print("False") print("hello") # 缩进不匹配,运行报错
2.1.3 语句换行
-
每行代码建议不超过 79 个字符,长语句可利用圆括号、中括号、大括号隐式换行。
python# 字符串换行 string = ("Python是一种面向对象、解释型计算机程序设计语言," "由Guido van Rossum于1989年底发明," "第一个公开发行版发行于1991年。") # 列表换行 number = ["one", "two", "three", "four"] print(number) # 输出:['one', 'two', 'three', 'four']
2.2 标识符和关键字
2.2.1 标识符命名规则
- 由字母、下划线、数字组成,数字不能开头。
- 区分大小写(如
tom和Tom是不同标识符)。 - 不能使用 Python 关键字。
2.2.2 命名建议
- 见名知意(如姓名用
name,年龄用age)。 - 常量名:大写单词或下划线连接(如
ORDER_LIST_LIMIT)。 - 模块名、函数名:小写单词或下划线连接(如
low_with_under)。 - 类名:大驼峰命名(如
Cat、Person)。
2.2.3 关键字
Python3 共有 35 个关键字,不可重复定义:
python
import keyword
print(keyword.kwlist)
# 输出:['False', 'None', 'True', 'and', 'as', 'assert', 'async', 'await', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']
2.3 变量和数据类型
2.3.1 变量
-
变量是标识内存单元的标识符,通过
=赋值绑定数据。
pythondata = 100 # 变量data绑定内存中的100 age = 25 # 变量age绑定内存中的25
2.3.2 数据类型
-
数字类型:
- 整型(int):
101、-239、0b101(二进制)、0o5(八进制)、0x5(十六进制)。 - 浮点型(float):
3.1415、4.2E-10(科学计数法)。 - 复数类型(complex):
3.12+1.23j、-1.23-93j。 - 布尔类型(bool):
True(对应 1)、False(对应 0)。
- 整型(int):
-
字符串(str):单引号、双引号或三引号包裹,如
'Python123'、"Python*&%"、'''Python~(())'''。 -
列表(list):
[]包裹,元素可修改,如[1, 2, 'hello']。 -
元组(tuple):
()包裹,元素不可修改,如(1, 2, 'hello')。 -
集合(set):
{}包裹,元素无序唯一,如{'apple', 'orange', 1}。 -
字典(dict):
{}包裹键值对,键唯一,如{"name": "zhangsan", "age": 18}。 -
查看数据类型:
type()函数。
pythoninfo = {"name": "zhangsan", "age": 18} print(type(info)) # 输出:<class 'dict'>
2.3.3 变量的输入和输出
-
输入:
input()函数,返回字符串类型。
pythonnumber = input("请输入数字:") print(type(number)) # 输入10,输出:<class 'str'>
-
输出:
print()函数,支持多对象、自定义分隔符和结尾符。
pythonzh_name = "张三" en_name = "tom" info = "年龄18岁,毕业于南京大学" # 自定义分隔符为换行符 print(zh_name, en_name, info, sep="\n") # 输出: # 张三 # tom # 年龄18岁,毕业于南京大学
2.5 数字类型
2.5.1 整型
-
支持四种进制:二进制(0b/0B)、八进制(0o/0O)、十进制、十六进制(0x/0X)。
-
进制转换函数:
pythonnumber = 10 print("10的二进制:", bin(number)) # 输出:0b1010 print("10的八进制:", oct(number)) # 输出:0o12 print("0b1010的十进制:", int(0b1010))# 输出:10 print("10的十六进制:", hex(number)) # 输出:0xa
2.5.2 浮点类型
- 科学计数法表示:
-3.14e2(-314)、3.14e-3(0.00314)。 - 取值范围:-1.8e308 ~ 1.8e308,超出范围视为
inf(无穷大)或-inf(无穷小)。
2.5.3 复数类型
-
格式:
real+imagj real为实部,
imag为虚部。
pythoncomplex_num = 1 + 2j print(complex_num.real) # 输出:1.0(实部) print(complex_num.imag) # 输出:2.0(虚部)

2.5.5 数字类型转换
-
常用函数:
int()、
float()、
complex()pythonnum_one = 2 num_two = 2.2 print(int(num_two)) # 输出:2(浮点转整型,舍弃小数) print(float(num_one)) # 输出:2.0(整型转浮点) print(complex(num_one))# 输出:(2+0j)(整型转复数)
2.6 运算符
2.6.1 算术运算符
| 运算符 | 功能 | 示例(a=2,b=8) |
|---|---|---|
| + | 加法 | a+b → 10 |
| - | 减法 | a-b → -6 |
| * | 乘法 | a*b → 16 |
| / | 除法(浮点数) | a/b → 0.25 |
| // | 整除(取整) | a//b → 0 |
| % | 取余 | a%b → 2 |
| ** | 幂运算 | a**b → 256 |
-
混合运算类型转换规则:
- 整型与浮点型混合 → 整型转浮点型。
- 其他类型与复数混合 → 其他类型转复数。
pythonprint(10 / 2.0) # 输出:5.0(整型转浮点) print(10 - (3 + 5j)) # 输出:(7-5j)(整型转复数)
2.6.2 赋值运算符
-
基础赋值:
num = 3、x = y = z = 1、a, b = 1, 2。 -
复合赋值运算符:
pythonnum = 5 num += 2 # 等价于num = num + 2 → 7 num *= 3 # 等价于num = num * 3 → 21 print(num)# 输出:21 -
海象运算符(Python3.8+):
:=,用于表达式内赋值。
pythonnum_one = 1 result = num_one + (num_two := 2) # num_two赋值为2 print(result) # 输出:3
2.6.3 比较运算符
| 运算符 | 功能 | 示例(x=2,y=3) |
|---|---|---|
| == | 等于 | x==y → False |
| != | 不等于 | x!=y → True |
| > | 大于 | x>y → False |
| < | 小于 | x<y → True |
| >= | 大于等于 | x>=y → False |
| <= | 小于等于 | x<=y → True |
2.6.4 逻辑运算符
| 运算符 | 逻辑表达式 | 功能 | 示例(x=10,y=20) |
|---|---|---|---|
| and | x and y | 均为 True 则返回 y | x and y → 20 |
| or | x or y | 均为 True 则返回 x | x or y → 10 |
| not | not x | 取反 | not x → False |
2.6.5 成员运算符
-
in:判断元素是否在序列中。
not in
:判断元素是否不在序列中。
python
x = "Python"
y = 't'
print(y in x) # 输出:True
print(y not in x) # 输出:False
2.6.6 位运算符(操作整数二进制位)
| 运算符 | 功能 | 示例(a=2,b=3) | ||
|---|---|---|---|---|
| << | 按位左移 | a<<b → 16 | ||
| >> | 按位右移 | a>>b → 0 | ||
| & | 按位与 | a&b → 2 | ||
| 按位或 | a | b → 3 | ||
| ^ | 按位异或 | a^b → 1 | ||
| ~ | 按位取反 | ~a → -3 |
2.6.7 运算符优先级
-
优先级从高到低:括号 → 幂运算 → 乘除 / 取模 / 整除 → 加减 → 位运算 → 比较运算 → 成员运算 → 逻辑运算 → 赋值运算。
-
同级运算符从左到右执行,括号可改变优先级。
pythona = 20 b = 2 c = 15 result_01 = (a - b) + c # 先算括号内 → 18+15=33 result_02 = a / b % c # 先除后取模 → 10%15=10.0 result_03 = c**b * a # 先幂运算后乘法 → 225*20=4500 print(result_01, result_02, result_03) # 输出:33 10.0 4500
2.7 练习
2.7.1 BMI 指数计算
python
# BMI = 体重(kg) / 身高(m)²
height = float(input("请输入身高(米):"))
weight = float(input("请输入体重(公斤):"))
bmi = weight / (height ** 2)
print(f"您的BMI指数: {bmi:.2f}")
if bmi < 18.5:
print("偏轻")
elif 18.5 <= bmi < 24.9:
print("正常")
elif 24.9 <= bmi < 29.9:
print("超重")
elif 29.9 <= bmi < 34.9:
print("肥胖")
else:
print("过度肥胖")

第 3 章 流程控制
3.1 条件语句
3.1.1 if 语句(单分支)
python
# 语法:if 条件表达式: 代码块
score = 88
if score >= 60:
print("考试及格") # 输出:考试及格
3.1.2 if-else 语句(双分支)
python
score = 50
if score >= 60:
print("考试及格")
else:
print("考试不及格") # 输出:考试不及格
3.1.3 if-elif-else 语句(多分支)
python
score = 84
if score >= 85:
print("优秀")
elif 75 <= score < 85:
print("良好") # 输出:良好
elif 60 <= score < 75:
print("合格")
else:
print("不合格")
3.1.4 if 嵌套
python
# 计算当月天数(考虑闰年)
year = 2024
month = 2
if month in [1, 3, 5, 7, 8, 10, 12]:
print(f"{month}月有31天")
elif month in [4, 6, 9, 11]:
print(f"{month}月有30天")
elif month == 2:
# 闰年判断:能被400整除,或能被4整除但不能被100整除
if year % 400 == 0 or (year % 4 == 0 and year % 100 != 0):
print(f"{year}年{month}月有29天") # 2024是闰年,输出此句
else:
print(f"{year}年{month}月有28天")
3.2 练习
3.2.1 计算器(四则运算)
python
num1 = float(input("请输入第一个数字:"))
op = input("请输入运算符(+、-、*、/):")
num2 = float(input("请输入第二个数字:"))
if op == '+':
print(f"结果: {num1 + num2}")
elif op == '-':
print(f"结果: {num1 - num2}")
elif op == '*':
print(f"结果: {num1 * num2}")
elif op == '/':
if num2 != 0:
print(f"结果: {num1 / num2}")
else:
print("错误:除数不能为0")
else:
print("错误:无效运算符")

3.2.2 猜数字游戏
python
import random
target = random.randint(1, 100) # 随机生成1-100的数字
count = 0
while True:
guess = int(input("请猜一个1-100的数字:"))
count += 1
if guess > target:
print("很遗憾,你猜大了")
elif guess < target:
print("很遗憾,你猜小了")
else:
print(f"恭喜,猜数成功!共猜了{count}次")
break

3.3 循环语句
3.3.1 while 语句(条件循环)
python
# 求和1+2+...+10
i = 1
result = 0
while i <= 10:
result += i
i += 1
print(result)

3.3.2 for 语句(遍历循环)
python
# 遍历字符串
for word in "Python":
print(word) # 逐行输出P、y、t、h、o、n
# 搭配range()函数(生成整数序列)
for i in range(5):
print(i)

3.3.3 循环嵌套
- while 循环嵌套(打印直角三角形):
python
i = 1
while i < 6:
j = 0
while j < i:
print("*", end='')
j += 1
print() # 换行
i += 1

- for 循环嵌套(打印直角三角形):
python
for i in range(1, 6):
for j in range(i):
print("*", end='')
print()
3.4 实训案例
3.4.1 逢 7 拍手游戏(输出 100 以内需拍手的数字)
python
for num in range(1, 101):
if num % 7 == 0 or '7' in str(num):
print(f"{num}: 拍手")
else:
print(num)

3.5 跳转语句
3.5.1 break 语句(终止循环)
python
# 遍历字符串,遇到'o'终止
for i in 'Python':
if i == 'o':
break
print(i, end='')

3.5.2 continue 语句(跳过本次循环)
python
# 遍历字符串,跳过'o'
for i in 'Python':
if i == 'o':
continue
print(i, end='')

3.6 阶段案例:房贷计算器
python
# 房贷计算公式:
# 每月月供 = 贷款金额 × [月利率×(1+月利率)^还款月数] ÷ [(1+月利率)^还款月数 - 1]
# 还款总额 = 每月月供 × 期限×12
# 支付利息 = 还款总额 - 贷款金额×10000
loan_type = input("请选择贷款类型(商业贷款/公积金贷款/组合贷款):")
loan_amount = float(input("请输入贷款金额(万):"))
years = int(input("请输入贷款期限(年):"))
rate = 0.0
# 设置利率
if loan_type == "商业贷款":
if years <= 5:
rate = 4.75 # 五年及以下利率
else:
rate = 4.90 # 五年以上利率
elif loan_type == "公积金贷款":
if years <= 5:
rate = 2.75
else:
rate = 3.25
elif loan_type == "组合贷款":
print("组合贷款需分别输入商业和公积金贷款金额")
commercial_amount = float(input("商业贷款金额(万):"))
fund_amount = float(input("公积金贷款金额(万):"))
loan_amount = commercial_amount + fund_amount
# 简化处理:组合贷款按各自利率加权平均(实际需分别计算)
if years <= 5:
rate = (commercial_amount * 4.75 + fund_amount * 2.75) / loan_amount
else:
rate = (commercial_amount * 4.90 + fund_amount * 3.25) / loan_amount
# 计算
monthly_rate = rate / 100 / 12 # 月利率
total_months = years * 12 # 总月数
loan_amount_total = loan_amount * 10000 # 贷款总金额(元)
# 月供计算
monthly_payment = loan_amount_total * (monthly_rate * (1 + monthly_rate)**total_months) / \
((1 + monthly_rate)**total_months - 1)
total_payment = monthly_payment * total_months
interest = total_payment - loan_amount_total
# 输出结果
print(f"每月月供参考(元): {monthly_payment:.2f}")
print(f"还款总额(元): {total_payment:.2f}")
print(f"支付利息(元): {interest:.2f}")

第 4 章 字符串
4.1 字符串介绍
4.1.1 字符串定义
-
单引号:
'Python123' -
双引号:
"Python*&%" -
三引号(多行):
'''Python~(())''' -
转义字符:
\用于处理特殊字符,如
\'(单引号)、
\\(反斜杠)、
\n(换行)、
\t(制表符)。
pythonprint('let\'s go') # 输出:let's go print("E:\\python\\code") # 输出:E:\python\code print("第一行\n第二行") # 换行输出 -
原始字符串:前缀
r/
Rpythonprint(r'转义字符:\n表示换行:\t表示制表符') # 输出:转义字符:\n表示换行:\t表示制表符
4.2 格式化字符串
4.2.1 使用 % 格式化
| 格式符 | 说明 |
|---|---|
| %s | 字符串 |
| %d | 整数 |
| %f | 浮点数 |
| %c | 字符 |
python
# 单个格式符
age = 20
print("我今年%d岁" % age) # 输出:我今年20岁
# 多个格式符
name = 'jerry'
print("我的姓名是%s,今年%d岁" % (name, age)) # 输出:我的姓名是jerry,今年20岁
# 浮点数精度控制
pi = 3.1415926
print("π的值:%.2f" % pi)

4.2.2 使用 format () 方法格式化
python
# 位置匹配
name = 'tom'
age = 20
print("姓名:{}, 年龄:{}".format(name, age)) # 输出:姓名:tom, 年龄:20
# 索引匹配
print("姓名:{0}, 年龄:{1}".format(name, age)) # 输出同上
# 名称匹配
print("姓名:{a}, 年龄:{b}".format(a=name, b=age)) # 输出同上
# 浮点数精度控制
r = 5
area = 3.1415926 * r**2
print("半径:{a}, 面积:{b:.2f}".format(a=r, b=area))

4.2.3 使用 f-string 格式化(Python3.6+)
python
name = 'jerry'
age = 20
print(f"姓名:{name}, 年龄:{age}") # 输出:姓名:jerry, 年龄:20
# 表达式嵌入
print(f"半径5的圆面积: {3.1415926 * 5**2:.2f}")

4.4 字符串的常见操作
4.4.1 查找与替换
-
查找:
find(sub, start=0, end=len(str)),返回子串首次出现索引,未找到返回 - 1。
pythonstring = 'Python' print(string.find('t')) # 输出:2('t'在索引2位置) print(string.find('x')) # 输出:-1(未找到)
-
替换:
replace(old, new, count=-1),count 指定替换次数。
pythontext = "八百标兵奔北坡,北坡炮兵并排跑。炮兵怕把标兵碰,标兵怕碰炮兵炮。" # 全部替换 new_text1 = text.replace('标兵', '战士') print(new_text1) # 替换2次 new_text2 = text.replace('标兵', '战士', 2) print(new_text2)
4.4.2 分割与拼接
-
分割:
split(sep=None, maxsplit=-1),返回列表。
pythontext = "八百标兵奔北坡 北坡炮兵并排跑" print(text.split()) # 默认按空格分割 → ['八百标兵奔北坡', '北坡炮兵并排跑'] print(text.split('兵')) # 按'兵'分割 → ['八百标', '奔北坡 北坡炮', '并排跑'] print(text.split('兵', 2)) # 分割2次 → ['八百标', '奔北坡 北坡炮', '并排跑']
-
拼接:
join(iterable)或
+/
*python# join()方法 symbol = '-' string = 'Python' print(symbol.join(string)) # 输出:P-y-t-h-o-n # +运算符(拼接字符串) print('Py' + 'thon') # 输出:Python # *运算符(重复拼接) print('ab' * 3) # 输出:ababab

4.4.3 删除指定字符
| 方法 | 功能 |
|---|---|
| strip([chars]) | 删除首尾指定字符(默认空格) |
| lstrip([chars]) | 删除首部指定字符 |
| rstrip([chars]) | 删除尾部指定字符 |
python
text = ' 人生苦短,我用Python! '
print(text.strip()) # 输出:人生苦短,我用Python!(删除首尾空格)
print(text.lstrip()) # 输出:人生苦短,我用Python! (删除首部空格)
print(text.rstrip()) # 输出: 人生苦短,我用Python!(删除尾部空格)
# 删除指定字符(如*)
text2 = '*人生苦短,我用Python!*'
print(text2.strip('*')) # 输出:人生苦短,我用Python!

4.4.4 大小写转换
| 方法 | 功能 |
|---|---|
| upper() | 全部转为大写 |
| lower() | 全部转为小写 |
| capitalize() | 首字母大写 |
| title() | 每个单词首字母大写 |
python
string = 'Life is short. I use Python'
print(string.upper()) # 输出:LIFE IS SHORT. I USE PYTHON
print(string.lower()) # 输出:life is short. i use python
print(string.capitalize()) # 输出:Life is short. i use python
print(string.title()) # 输出:Life Is Short. I Use Python
| 功能 |
| --------------- | ---------------------------- |
| strip([chars]) | 删除首尾指定字符(默认空格) |
| lstrip([chars]) | 删除首部指定字符 |
| rstrip([chars]) | 删除尾部指定字符 |
```python
text = ' 人生苦短,我用Python! '
print(text.strip()) # 输出:人生苦短,我用Python!(删除首尾空格)
print(text.lstrip()) # 输出:人生苦短,我用Python! (删除首部空格)
print(text.rstrip()) # 输出: 人生苦短,我用Python!(删除尾部空格)
# 删除指定字符(如*)
text2 = '*人生苦短,我用Python!*'
print(text2.strip('*')) # 输出:人生苦短,我用Python!
外链图片转存中...(img-PLWW7Mgm-1767093616485)
4.4.4 大小写转换
| 方法 | 功能 |
|---|---|
| upper() | 全部转为大写 |
| lower() | 全部转为小写 |
| capitalize() | 首字母大写 |
| title() | 每个单词首字母大写 |
python
string = 'Life is short. I use Python'
print(string.upper()) # 输出:LIFE IS SHORT. I USE PYTHON
print(string.lower()) # 输出:life is short. i use python
print(string.capitalize()) # 输出:Life is short. i use python
print(string.title()) # 输出:Life Is Short. I Use Python