Python基础(一)
第1章:Python介绍
Python 是一种始于 1991 年的高级编程语言,由荷兰程序员吉多·范罗苏姆开发,其核心设计理念为“简洁、可读性强和高度通用”。
从特点上看,Python 使用清晰的语法结构,去除了多余的符号冗余(例如强制分号、大括号),通过缩进规范代码逻辑,使代码更接近自然语言,降低了学习与阅读的难度,即便是非专业开发者也能迅速掌握。同时,它具备庞大且活跃的生态系统,内置丰富的标准库,并且第三方库覆盖了各行各业——从数据分析(Pandas、NumPy)、人工智能(TensorFlow、PyTorch)、Web 开发(Django、Flask),到自动化运维、爬虫开发、科学计算和教育科研等领域,都有成熟的工具支持,实现了“一种语言,多种应用场景”。
从应用价值来看,Python 兼具易用性和强大的功能:既适合编程初学者巩固基础,也能满足企业级项目的开发需求。目前已被谷歌、亚马逊、字节跳动等科技公司广泛应用于核心业务中,同时也是高校计算机教育和科研机构数据处理的主流选择,在全球编程语言流行度排行榜上长期名列前茅,是兼具实用性和发展潜力的主要编程语言之一。
第2章:Python基础
2.1 代码格式:Python 的 “语法规范”
与其他语言不同,Python 的代码格式本身就是其语法的一部分,不正确的格式会导致程序出错。
2.1.1 注释:代码的“说明文本”
注释用于解释代码的功能,不会参与程序的实际运行,分为单行注释和多行注释。
- 单行注释
- 规范要求:在
之后加空格;如果与代码同处一行,则代码和注释间至少留两个空格。# - 多行注释(文档说明)
以
#
开始,可以单独占一行或跟在代码后面。
# 单行注释:打印Hello,Python(单独占一行)
print("Hello,Python") # 单行注释:与代码共行(至少2个空格分隔)
使用三对双引号
"""或三对单引号
'''包裹。
主要用于解释函数、类或代码块的总体功能,因此也称为文档说明。
'''
多行注释:BMI指数计算程序
功能:接收用户身高体重,计算BMI并判断体重范围
height = input("请输入您的身高(单位为米):")
print("您的身高:",height)
weight = input("请输入您的体重(单位为公斤):")
print("您的体重:",weight)
bmi = float(weight)/(float(height)*float(height))
print("您的BMI指数:",bmi)
if bmi < 18.5:
print("您的体重过轻!")
if bmi >= 18.5 and bmi <24.9:
print("正常范围,继续保持!")
if bmi >= 24.9 and bmi <29.9:
print("您体重过重!")
if bmi >= 29.9:
print("该减肥了!")
'''
扩展:选中你想要注释的代码段,然后按Ctrl+/ 即可全部被注释掉。
2.1.2 缩进:代码的“层级关系”
作用:区分不同的代码块(如循环、条件判断中的内部代码)。
- 规范要求:Python3 推荐使用 4 个空格作为一级缩进(不建议使用 Tab 键);不允许混合使用 Tab 和空格;同一代码块必须保持相同的缩进量,否则会报错。
错误示例及提示:
if True:
print ("True")
else:
print ("False")
print (”hello”) # 缩进量不匹配,导致错误
# 报错信息:`IndentationError: unindent does not match any outer indentation level`(缩进不匹配)
正确示例:
if True:
print("True")
else:
print("False")
print("False")
2.1.3 语句换行:长代码的“适当拆分”
规范:建议每行代码不超过 79 个字符。
- 技巧:在圆括号
、中括号()
或大括号[]
内的语句可以直接换行(隐式连接),无需额外添加括号。{}
# 字符串换行(圆括号内隐式连接)
string = ("Python是一种面向对象、解释型计算机程序设计语言,"
"由Guido van Rossum于1989年底发明。"
"第一个公开发行版发行于1991年,"
"Python源代码同样遵循GPL(GNU General Public License)协议。")
# 列表换行(中括号内隐式连接)
number = ["one", "two",
"three", "four"]
print(number)2.2 标识符和关键字:Python 的 “合法命名” 与 “保留字”
2.2.1 标识符:自定义的 “名字”
用于命名变量、函数、类等的符号,需遵循以下规则:
- 组成:字母(a-z/A-Z)、下划线(_)、数字(0-9),且不能以数字开头
- 大小写敏感:
和tom
是不同的标识符Tom - 不能使用 Python 关键字
命名规范(建议):
- 见名知意:如姓名用
、年龄用nameage - 常量名:全大写,多单词用下划线连接(如
)ORDER_LIST_LIMIT - 模块 / 函数名:全小写,多单词用下划线连接(如
)low_with_under - 类名:每个单词首字母大写(如
、Cat
)Person
2.2.2 关键字:Python 的 “保留字”
关键字是 Python 已经使用的、不允许开发人员重复定义的标识符。Python3 中一共有 35 个关键字,每个关键字都有不同的功能。
- 1)Python3 关键字列表(共 35 个)
输出结果: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)查看关键字用法
import keyword print(help("for")) # 查看 for 关键字的详细功能
2.3 变量和数据类型:Python 的 “数据容器”
2.3.1 变量:可变化的 “数据标识”
定义:用标识符关联内存中的数据,通过变量名快速访问数据
语法:
变量名 = 值
(
=
是赋值运算符,不是数学中的等号)
示例:
data = 100 # 变量 data 关联内存中的数据 100
2.3.2 数据类型
Python 数据类型分为基础类型(数字)和组合类型,可通过
type()
函数查看类型。
| 类型分类 | 具体类型 | 说明 | 示例 |
|---|---|---|---|
| 数字类型 | 整型(int) | 整数(正负均可)
、
|
|
| 数字类型 | 浮点型(float) | 小数或科学计数法
、
|
|
| 数字类型 | 复数类型(complex) | 实部 + 虚部(j 表示虚数单位)
、
|
|
| 数字类型 | 布尔类型(bool) | 仅
(真)/
(假),是 int 子类
、
|
|
| 组合类型 | 字符串(str) | 有序字符集合,单 / 双 / 三引号包裹
、
、
|
|
| 组合类型 | 列表(list) | 有序、任意数据类型,长度不固定,
包裹
|
|
| 组合类型 | 元组(tuple) | 有序,任意数据类型,长度不固定,只能查看不能修改,适用于高安全场景,
包裹
|
|
| 组合类型 | 集合(set) | 无序(因为无下标),去重(如果有多份相同的数据会被视为一份数据输出)->(元素必须唯一),
包裹
|
|
| 组合类型 | 字典(dict) | 无序键值对集合,
形式,一一对应,
包裹
|
查看数据类型示例:
info = {"name": "zhangsan", "age": 18}
print(type(info)) # 输出 <class 'dict'>(字典类型)
扩展:
# 在 Python 中,集合(set)是一种无序、可变的数据类型,主要功能体现在以下几个方面:
- 去重:集合中的元素具有唯一性,会自动去除重复值。例如:
lst = [1, 2, 2, 3, 3, 3] s = set(lst) # 结果为 {1, 2, 3} - 集合运算:支持数学中的集合操作,如交集(&)、并集(|)、差集(-)、对称差集(^)等,方便处理元素间的关系。例如:
a = {1, 2, 3} b = {3, 4, 5} print(a & b) # 交集:{3} print(a | b) # 并集:{1, 2, 3, 4, 5} print(a - b) # 差集:{1, 2} - 高效的成员判断:判断元素是否存在于集合中(in 操作)的时间复杂度为 O (1),远快于列表的 O (n),适用于频繁做成员检查的场景。
- 存储无序唯一元素:当不需要关注元素的顺序,只需要确保唯一性时,集合是比列表更合适的选择。
- 集合的元素必须是不可变类型(如整数、字符串、元组等),且自身是可变的(可添加、删除元素)。如果需要不可变的集合,可以使用 frozenset。
2.3.3 变量的输入与输出:人机交互基础
1)输入:
input()
函数
功能:接收用户键盘输入,返回字符串类型(即使输入数字)
语法:
input([prompt])
(
prompt
是输入提示信息,可选)
示例:
number = input("请输入数字:")
print(type(number)) # 不论输入任何值,返回的都是 str 类型
运行结果:
请输入数字:10
<class 'str'>
输出:
print()
函数
功能:将数据输出到控制台,支持所有类型的数据
语法:
print(*objects, sep=' ', end='\n', file=sys.stdout)
objects
:需要输出的对象(可以是多个,用逗号分隔)
sep
:对象之间的分隔符,默认为空格
end
:输出的结尾字符,默认为换行符
\n
file
:输出的目标(默认是控制台)
示例:
zh_name = "张三"
en_name = "Tom"
info = "年龄18岁,毕业于南京大学,兴趣爱好广泛"
print(zh_name, en_name, info, sep="\n") # 使用换行符分隔多个对象
运行结果:
张三
tom
年龄18岁,毕业于南京大学,兴趣爱好广泛
2.4:数字类型:Python 中的数值表示
Python 提供了四种核心数字类型,分别适用于不同的数值场景,支持进制转换、类型转换等灵活操作。
2.4.1 整型(int):整数的表示与进制转换
定义
:用于表示整数,支持以下四种进制表示:
二进制:以
0b
或
0B
开头(例如
0b101
)
八进制:以
0o
或
0O
开头(例如
0o12
)
十进制:默认表示方式(例如
10
)
十六进制:以
0x
或
0X
开头(例如
0xA
)
进制转换函数
:
函数
功能
示例
结果
bin(x)
十进制转二进制
bin(10)
'0b1010'
oct(x)
十进制转八进制
oct(10)
'0o12'
int(x)
其他进制转十进制(base 指定原进制)
int(0b1010)
或
int('1010', 2)
10
hex(x)
十进制转十六进制
hex(10)
'0xa'
示例代码
:
number = 10
print("10的二进制:", bin(number)) # 10的二进制: 0b1010
print("10的八进制:", oct(number)) # 10的八进制: 0o12
print("0b1010的十进制:", int(0b1010)) # 0b1010的十进制: 10
print("10的十六进制:", hex(number)) # 10的十六进制: 0xa
2.4.2 浮点型(float):实数与科学计数法
定义:用于表示带有小数部分的实数(如3.14、0.9),也支持科学记数法(e或E表示 10 的幂):
示例:
-3.14e2
(等同于
-314
)、
3.14e-3
(等同于
0.00314
)
存储特性:
占用 8 字节(64 位),遵循 IEEE 标准
取值范围:
-1.8e308 ~ 1.8e308
,超出此范围将被视为
inf
(正无穷大)或
-inf
(负无穷小)
2.4.3 复数型(complex):实部与虚部的组合
定义:由实部和虚部构成,格式为real + imagj(其中 j 是虚数单位):
示例:
1 + 2j
(实部 1,虚部 2)、
2j
(实部 0,虚部 2)
属性访问:通过
real
获取实部,
imag
获取虚部(返回浮点型):
complex_num = 1 + 2j
print(complex_num.real) # 运行结果 1.0
print(complex_num.imag) # 运行结果 2.0
2.4.4 布尔型(bool):特殊的整型
定义
:表示逻辑值,仅有两个取值:
True
(真)和
False
(假)
本质
:布尔型是整型的一个子类,
True
等同于
1
,
False
等同于
布尔值判断规则
:以下情况会被判定为
False
,其他情况下则为
True
:
None
、
False
所有数字类型的 0(
、
0.0
、
0j
)
空序列(
''
、
()
、
[]
)
空字典(
{}
)
示例代码
:
print(bool(0)) # False
print(bool('')) # False
print(bool(1)) # True
print(bool([1,2]))# True
2.4.5 数字类型转换:强制类型转换函数
Python 提供了三个核心转换函数,支持数字类型之间的灵活转换:
函数
功能
示例
结果
int(x)
转换为整型(舍去小数部分)
int(2.2)
2
float(x)
转换为浮点型
float(2)
2.0
complex(x)
转换为复数(虚部为 0)
complex(2)
(2+0j)
示例代码
:
num_one = 2
num_two = 2.2
print(int(num_two)) # 执行结果 2 print(float(num_one)) # 执行结果 2.0 print(complex(num_one)) # 执行结果 (2+0j) 2.5:运算符:Python 中的运算核心 运算符是用于执行数据计算的特殊符号,按功能可分为七大类,支持单目 / 双目操作,遵循明确的优先级规则。 2.5.1 算术运算符:数值计算的基础 用于执行加减乘除等数学计算,支持相同 / 不同类型数值的混合计算。 运算符 功能 示例(a=2,b=8) 结果加法+a + b10减法-b - a6乘法*a * b16除法(返回浮点型)/b / a4.0整除(向下取整)//9 // 24取余(模运算)%9 % 21幂运算(a 的 b 次方)**a ** 3混合运算类型转换规则: 整型与浮点型混合计算时:整型 → 浮点型(如8) 其他类型与复数混合计算时:其他类型 → 复数(如10 / 2.0 = 5.0) 2.5.2 赋值运算符:变量赋值与复合操作 用于将值或表达式结果赋给变量,支持简单赋值、多变量赋值和复合赋值。 (1)基础赋值 简单赋值:10 - (3+5j) = (7-5j)(将 3 赋值给变量num = 3) 多变量赋值: x = y = z = 1 # 多个变量赋同一值(x、y、z 均为 1) a, b = 1, 2 # 解包赋值(a=1,b=2) (2)复合赋值运算符(操作 + 赋值) 运算符 等价形式 示例(num=1) 结果num+=num = num + xnum += 23-=num = num - xnum -= 1*=num = num * xnum *= 33/=num = num / xnum /= 20.5//=num = num // xnum //= 2%=num = num % xnum %= 21**=num = num **xnum **= 2(3)海象运算符(Python 3.8+) 符号:1,用于 表达式内部赋值 ,简化代码逻辑: num_one = 1 # 表达式中为 num_two 赋值,同时参与操作 result = num_one + (num_two := 2) print(result) # 3(等价于 1 + 2) print(num_two) # 2(变量已被赋值) 2.5.3 比较运算符:数值关系判断 用于比较两个数值的关系,结果仅为:=(真)或True(假)。 运算符 功能 示例(x=2,y=3) 结果False等于(判断值是否相等)==x == yFalse不等于!=x != yTrue大于>x > yFalse小于<x < yTrue大于等于>=x >= 2True小于等于<=y <= 22.5.4 逻辑运算符:布尔值逻辑操作 用于组合多个布尔表达式,返回False或True,关键字为False(与)、and(或)、or(非)。 运算符 功能 示例(x=10,y=20) 结果not全为真则真,否则假andx > 5 and y < 25True任一为真则真,全假则假orx < 5 or y > 15True取反(真变假,假变真)notnot (x == y)短路特性:True:左侧为and时,直接返回False,不计算右侧False:左侧为or时,直接返回True,不计算右侧 2.5.5 成员运算符:序列元素判断 用于判断元素是否存在于序列(字符串、列表、元组等)中,关键字为True和in。 运算符 功能 示例(x=“Python”,y=‘t’) 结果not in元素在序列中返回inTruey in xTruenot in
元素不在序列中返回
True
y not in x
False
示例代码:
x = "Python"
y = 't'
print(y in x) # True('t' 是 "Python" 的字符)
print('z' not in x) # True('z' 不是 "Python" 的字符)
2.5.6 位运算符:二进制位级运算
用于对整数的二进制位进行直接操作,仅支持整型操作数。
| 运算符 | 功能说明 | 示例(a=2,b=3) | 结果 |
|---|---|---|---|
|
操作数按位左移 | |
16 |
|
操作数按位右移 | |
|
|
左操作数与右操作数执行按位与运算 | 2 | ` |
|
左操作数与右操作数执行按位或运算 | a` | `a |
|
左操作数与右操作数执行按位异或运算 | 1 | |
|
操作数按位取反 | -3 |
关键说明:
- 左移
位 ≈ 乘以n
(如2^n
,即8 << 2 = 32
)8*2? - 右移
位 ≈ 除以n
(如2^n
,即8 >> 2 = 2
)8/2?
按位取反:
~x = -(x+1)(如 ~9 = -10)
详解:
按位左移(<<)是指将二进制形式操作数的所有位全部左移n位,高位丢弃,低位补0。以十进制9为例,9转为二进制后是00001001,将转换后的二进制数左移4位。
按位右移(>>)是指将二进制形式操作数的所有位全部右移n位,低位丢弃,高位补0。以十进制8为例,8转换为二进制后是00001000,将转换后的二进制数右移2位。
按位与(&)是指将参与运算的两个操作数对应的二进制位进行“与”操作。当对应的两个二进制位均为1时,结果位就为1,否则为0。以十进制9和3为例,9和3转换为二进制后分别是00001001和00000011。
按位或(|)是指将参与运算的两个操作数对应的二进制位进行“或”操作。若对应的两个二进制位有一个为1时,结果位就为1。若参与运算的数值为负数,参与运算的两个数均以补码出现。以十进制8和3为例,8 和3转换为二进制后分别是00001000和00000011。
按位异或(^)是指将参与运算的两个操作数对应的二进制位进行“异或”操作。当对应的两个二进制位中有一个为1,另一个为0时,结果位为1,否则结果位为0。以十进制8和4为例,8和4转换为二进制后分别是00001000和00000100。
按位取反(~)是指将二进制的每一位进行取反,0取反为1,1取反为0。按位取反操作首先会获取这个数的补码,然后对补码进行取反,最后将取反结果转换为原码,例如,对9按位取反的计算过程如下:
2.5.7 运算符优先级:运算顺序规则
当表达式包含多个运算符时,按优先级从高到低执行(优先级相同则从左到右),小括号
() 可强制改变执行顺序。
优先级从高到低 (核心常用类):
- 括号:
() - 幂运算:
** - 位运算:
~ - 算术运算:
、*
、/
、//
→%
、+- - 位运算:
、<<
→>>
→&
→^| - 比较运算:
、==
、!=
、>
、<
、>=<= - 逻辑运算:
→not
→andor - 赋值运算:
、=
、+=
等(优先级最低)-=
示例代码:
a = 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
第3章:Python流程控制
程序默认按自上而下的顺序执行,而流程控制语句能改变执行顺序,实现分支、循环等复杂逻辑。Python 中的流程控制主要分为条件语句、循环语句和跳转语句。
3.1:条件语句
条件语句是程序的 “决策器”,它根据判断条件的真假,让程序有选择地执行不同代码块。就像生活中:
12306 在购票前需要进行身份验证(通过后→进入购票页面,未通过→重新验证)
高铁进站之前需先检票(成功→安检),然后经过安检(成功→进站)
Python 提供了 4 种核心条件语句结构,涵盖从简单到复杂的决策场景。
3.1.1 单分支:if 语句
语法格式
if 条件表达式:
代码块 # 条件为真时执行(注意缩进,通常4个空格)
执行逻辑
若
条件表达式的布尔值为
True(条件成立),则执行缩进的代码块;
若为
False(条件不成立),则跳过代码块,继续执行后续代码。
实战案例:成绩合格判断
某中学英语模拟考,60 分及以上为 “合格”,判断小明(88 分)的成绩结果:
score = 88
if score >= 60:
print("小明的成绩评估:合格")
运行结果:
小明的成绩评估:合格3.1.2 双分支:if-else 语句
语法格式
if 条件表达式:
代码块1 # 条件成立时执行
else:
代码块2 # 条件不成立时执行
执行逻辑
二选一操作:条件成立→代码块 1,否则→代码块 2,覆盖所有可能性。
实战案例:成绩及格 / 不及格判断
修改成绩,对比两次执行结果:
# 案例1:成绩88分
score = 88
if score >= 60:
print("考试及格")
else:
print("考试不及格")
# 运行结果:考试及格
# 案例2:成绩50分
score = 50
if score >= 60:
print("考试及格")
else:
print("考试不及格")
# 运行结果:考试不及格
3.1.3 多分支:if-elif-else 语句
语法格式
if 条件1:
代码块1 # 条件1成立执行
elif 条件2:
代码块2 # 条件1不成立、条件2成立时执行
elif 条件3:
代码块3 # 前两个条件都不成立、条件3成立时执行
...
else:
代码块n # 所有条件都不成立时执行(可选)
执行逻辑
按顺序判断条件,
只要有一个条件成立,就执行对应的代码块后直接退出整个结构;
所有条件都不成立时,则执行 else 代码块(else 可省略,此时无匹配时不执行任何操作)。
实战案例:成绩等级评定
按分数划分等级:≥85→优秀,75-84→良好,60-74→合格,<60→不合格:
score = 84
if score >= 85:
print("优秀")
elif 75 <= score < 85:
print("良好")
elif 60 <= score < 75:
print("合格")
else:
print("不合格")
运行结果:
良好3.1.4 嵌套分支:if 嵌套
语法格式
if 外层条件:
外层代码块 # 外层条件成立时执行
if 内层条件:
内层代码块 # 外层条件成立 + 内层条件成立时执行
else:
内层else代码块 # 外层成立、内层不成立时执行
else:
外层else代码块 # 外层条件不成立时执行
执行逻辑
先判断外层条件,
只有在外层条件成立的情况下,才会进一步判断内层条件;
内层条件可以嵌套多层(建议不超过 3 层,以避免影响代码可读性)。
生活场景类比
高铁进站:先检票(外层条件)→ 检票通过后,再安检(内层条件)→ 安检通过才能进站。
实战案例1:计算当月天数
根据年份和月份,计算当月天数:
大月(1、3、5、7、8、10、12):31 天
小月(4、6、9、11):30 天
2 月:闰年 29 天,平年 28 天(闰年判断:能被 400 整除,或能被 4 整除但不能被 100 整除)
year = 2024
month = 2
if month in [1, 3, 5, 7, 8, 10, 12]:
print(f"{year}年{month}月有31天")
elif month in [4, 6, 9, 11]:
print(f"{year}年{month}月有30天")
elif month == 2:
# 内层条件:判断是否为闰年
if year % 400 == 0 or (year % 4 == 0 and year % 100 != 0):
print(f"{year}年{month}月有29天")
else:
print(f"{year}年{month}月有28天")
else:
print("输入的月份无效(需为1-12)")
运行结果:
2024年2月有29天实战案例2:带输入校验的成绩评定
实际开发中,需要处理用户输入错误(如输入非数字、分数超出 0-100 范围),结合
isdigit()函数(判断字符串是否为纯数字)实现输入校验:
需求:
输入成绩,判断等级(优秀 / 良好 / 中等 / 合格 / 不合格);
若输入非数字或分数超出 0-100,提示 “输入有误” 并重新输入。
代码实现:
根据成绩判断优良中差,90以上是优秀,80-89是良好,70-79是中等,60-69是合格,59以下不合格
score = input('请输入成绩:')
# 判断输入是否为数值类型的字符串
if score.isdigit() and 0<=float(score)<=100:
# 类型转换
score = float(score)
# 内嵌条件语句(多分支语句)
if score >= 90:
print('优秀')
elif score >= 80 and score < 90:
print('良好')
elif score >= 70 and score < 80:
print('中等')
elif score >= 60 and score < 70:
print('合格')
else:
print('不合格')
else:
print('输入不合法')
关键说明:
isdigit()
:仅判断字符串是否为非负整数(如 "88"→True,"88.5"→False,"abc"→False);
3.2 循环语句
Python 提供了两种核心循环语句:
while语句和for语句,以及循环嵌套功能,使我们能够用简洁的语法实现复杂的重复逻辑。
3.2.1 while 语句:条件满足时循环
while语句是条件循环的核心,适用于「只要符合某个条件,就重复执行代码」的情境。其执行逻辑是:先判断条件是否成立,若成立则执行循环体,完成后再次检查条件,直到条件不再成立时退出循环。
语法格式
while 条件表达式:
# 循环体(需重复执行的代码块)
代码语句1
代码语句2
...
注意:Python 使用缩进(通常是4个空格)来区分代码块,循环体必须缩进,否则会引发错误。
实战案例:1~10 求和
需求:计算 1+2+3+…+10 的结果。
# 初始化变量:i 用于遍历 1~10,result 用于存储总和
i = 1
result = 0
# 循环条件:i 小于等于 10 时继续循环
while i <= 10:
result += i # 等价于 result = result + i,累计当前 i 的值
i += 1 # i 自增 1,防止无限循环
# 循环结束后打印结果
print("1~10 的和为:", result)
运行结果:
1~10 的和为: 55
特殊场景:无限循环
如果
while的条件表达式始终为True,循环将一直执行,这被称为「无限循环」。实际开发中需谨慎使用,但可通过break语句手动退出(后续会讲解)。
示例:简单的无限循环
# 条件始终为 True,循环将持续执行
while True:
print("这是无限循环,按 Ctrl+C 可终止")
运行结果(将不断输出,需手动停止):
这是无限循环,按 Ctrl+C 可终止
这是无限循环,按 Ctrl+C 可终止
...
3.2.2 for 语句:遍历可迭代对象
for语句是遍历循环的核心,适用于「逐一访问目标对象中的所有元素」的情景(例如遍历字符串、列表、字典等)。其执行逻辑是:依次取出可迭代对象的每个元素,赋值给临时变量,然后执行循环体,直到所有元素被遍历完毕。
语法格式
for 临时变量 in 可迭代对象:
# 循环体:处理当前临时变量对应的元素
代码语句1
代码语句2
...
可迭代对象:指可以「逐一访问」的对象,包括字符串、列表、元组、字典以及 range() 函数生成的序列等。
临时变量:每次循环会自动接收可迭代对象的下一个元素,变量名可根据需要自定义(如
i、word、item等)。
实战案例 1:遍历字符串
需求:逐个打印字符串 “Python” 中的每个字符。
# 遍历字符串 "Python",将每个字符依次赋值给临时变量 word
for word in "Python":
print(word)
运行结果:
P
y
t
h
o
n
实战案例 2:搭配 range() 函数
range()是 Python 的内置函数,用于生成一个整数序列(可迭代对象),通常与for循环结合使用以实现「固定次数的循环」。
range() 函数的三种用法
| 用法 | 说明 | 示例 | 生成的序列 |
|---|---|---|---|
| range(n) | 生成 0 ~ n-1 的整数序列 | range(5) | 0, 1, 2, 3, 4 |
| range(start, end) | 生成 start ~ end-1 的整数序列 | range(2, 6) | 2, 3, 4, 5 |
| range(start, end, step) | 生成 start ~ end-1 的序列,步长为 step | range(1, 10, 2) | 1, 3, 5, 7, 9 |
示例:循环 5 次打印数字
# range(5) 生成 0~4 的序列,循环执行 5 次 for i in range(5):
print("当前数字:", i)
运行结果:
当前数字: 0
当前数字: 1
当前数字: 2
当前数字: 3
当前数字: 4
3.2.3 循环嵌套:实现复杂逻辑
循环之间可以互相包含(
while
包含
while
、
for
包含
for
、
while
包含
for
等),用于实现更复杂的重复逻辑(比如打印图形、多维数据处理等)。
核心原则:
外层循环执行一次,内层循环完整运行一轮。
while 循环嵌套
语法格式:
while 外部条件表达式:
# 外部循环体
外部代码语句
while 内部条件表达式:
# 内部循环体
内部代码语句
实战案例:打印由 “*” 组成的直角三角形
需求:打印 5 行直角三角形,第 1 行 1 个 “
”,第 2 行 2 个”
”,…,第 5 行 5 个"*"。
# 外部循环:控制行数(1~5 行)
row = 1
while row <= 5:
# 内部循环:控制每行的 "*" 数量(每行的 "*" 数 = 当前行数)
col = 1
while col <= row:
print("*", end="") # end="" 表示不换行,默认 end="\n"(换行)
col += 1
print() # 每行结束后换行
row += 1
运行结果:
*
**
***
****
*****
for 循环嵌套
语法格式:
for 外部临时变量 in 外部可迭代对象:
# 外部循环体
外部代码语句
for 内部临时变量 in 内部可迭代对象:
# 内部循环体
内部代码语句
实战案例:打印同样的直角三角形
用
for
循环嵌套实现上述需求,代码更简洁:
# 外部循环:控制行数(range(1,6) 生成 1~5 的序列,对应 5 行)
for row in range(1, 6):
# 内部循环:控制每行的 "*" 数量(每行的 "*" 数 = 当前行数)
for col in range(row):
print("*", end="")
print() # 换行
运行结果(与 while 嵌套一致):
*
**
***
****
*****
3.3 :循环控制语句(跳转语句)
在实际开发中,我们可能需要提前退出循环、跳过某次循环,此时需要用到
break
和
continue
语句:
语句
功能
break
立即终止当前循环,跳出循环体
continue
跳过当前循环的剩余代码,直接进入下一次循环
3.3.1 break 语句
需求:遍历 1~10,遇到偶数时终止循环。
for i in range(1, 11):
if i % 2 == 0:
break # 遇到偶数(i=2)时终止循环
print("当前数字:", i)
运行结果:
当前数字: 1
3.3.2 continue 跳过循环
需求:遍历 1~10,只打印奇数(跳过偶数)。
for i in range(1, 11):
if i % 2 == 0:
continue # 遇到偶数时跳过当前循环,不执行后续打印
print("当前奇数:", i)
运行结果:
当前奇数: 1
当前奇数: 3
当前奇数: 5
当前奇数: 7
当前奇数: 9
3.4:循环小结
循环类型
核心场景
语法简洁度
适用对象
while
条件驱动的循环(未知循环次数)
中等
任意条件表达式
for
遍历可迭代对象(已知循环次数)
较高
字符串、列表、range () 等
循环嵌套
复杂重复逻辑(如多维数据、图形)
-
上述两种循环的组合
小建议:
已知循环次数或需要遍历对象时,优先使用
for
循环(代码更简洁、可读性更高);
未知循环次数(如等待用户输入)时,使用
while
循环;
循环嵌套的层数不宜过多(建议不超过 3 层),否则会降低代码可读性;
避免无意识的无限循环,必要时用
break
手动退出。


雷达卡


京公网安备 11010802022788号







