Python基础 : for循环和range函数
文章目录
一、知识点详解
1.1 for循环
-
for循环的作用
- 用于重复执行
特定次数
的代码块。 - 专门用来处理
序列
类型数据(如字符串、数字序列)。
- 用于重复执行
-
基本语法结构
for 临时变量 in 可迭代对象:
循环体代码
# 示例:遍历单词中的字母
for letter in "ABC":
print(letter)
# 输出:
# A
# B
# C
1.2 range()函数
-
range的作用
- 生成一组整数序列
- 常用于控制循环次数
-
使用方式
使用方式 | 示例 | 生成序列(关键规则) |
---|---|---|
range(stop) | range(3) | 0,1,2 (默认步长1,start=0 ,stop=3 ,步长正数时要求 start < stop ) |
range(start, stop) | range(2,5) | 2,3,4 (步长1,start=2 < stop=5 ) |
range(start, stop, step) | range(1,10,3) | 1,4,7 (步长3,正数,至 1+3n < 10 时停止) |
特殊反向场景 | range(5, 1, -1) | 5,4,3,2 (步长-1,负数,至 5-1n ≤ 1 时停止) |
注意:
当 step > 0
时,必须 start < stop
;
当 step < 0
时,必须 start > stop
,否则生成空序列(不执行循环)。
# 生成0 - 4的序列
for i in range(5):
print(i, end=" ") # 输出:0 1 2 3 4
# 生成5 - 7的序列
for num in range(5,8):
print(num, end=" ") # 输出:5 6 7
1.3 for循环的常见应用
- 重复固定次数
# 打印3次欢迎语
for _ in range(3):
print("欢迎学习Python!")
- 累加计算
# 计算1 + 2 + 3 + 4
total = 0
for num in range(1,5):
total += num
print("总和:", total) # 输出:10
- 结合条件判断
# 找出10以内的偶数
for i in range(11):
if i % 2 == 0:
print(i, "是偶数")
1.4 for循环 VS while循环
对比项 | for 循环 | while 循环 |
---|---|---|
循环变量管理 | 自动获取序列中的值 | 需要手动初始化并更新变量 |
适用场景 | 明确循环次数/遍历序列 | 不确定循环次数的条件循环 |
语法复杂度 | 结构简单,不易出错 | 需要维护循环条件,容易造成死循环 |
for循环控制语句:(与while
循环相同)
break
:提前终止循环。
continue
:跳过当前循环。
else
:循环正常结束后执行(非break中断时)
# 对比示例
# for循环实现
for i in range(3):
print(i) # 自动生成0,1,2
# while循环实现
j = 0
while j < 3:
print(j)
j += 1 # 必须手动增加
1.5 常见问题
-
为什么range(
5
)生成0 - 4
?
计算机习惯从0开始计数,
range()函数生成的数字序列, 遵循左闭右开
原则, 即左侧包含, 右侧不包含
记忆口诀 :range(n)生成n个数字(从0开始) -
什么时候用下划线(
_
):当循环变量在代码中不需要使用时。
# 打印5次提示语
for _ in range(5):
print("数据处理中...")
- 如何正确使用步长(step)?
# 错误(步长正数,start > stop,空序列)
range(5, 3) # 等价于 range(5, 3, 1),生成空序列
# 正确(步长负数,start > stop,反向生成)
range(5, 3, -1) # 生成 [5, 4]
- 当
step > 0
时,序列生成规则为start, start+step, start+2*step, ...
,直至值 ≥ stop 时停止; - 当
step < 0
时,序列生成规则为start, start+step, start+2*step, ...
,直至值 ≤ stop 时停止。
二、说明示例
2.1 文本内容清洗
# 包含干扰特殊符号的英文单词
word = "#$Hel!lo@"
# 初始化空字符串用于存储清洗后的单词
cleaned_word = ""
# 遍历单词中的每个字符
for char in word:
# 检查字符是否为字母
if char.isalpha():
# 如果是字母,添加到清洗后的单词中
cleaned_word += char
print(f"原始带符号的单词: {word}")
print(f"清洗后的单词: {cleaned_word}")
2.2 打印乘法口诀表(for循环版本)
# 使用 for 循环实现九九乘法表
for i in range(1, 10): # 外层循环控制行数(1到9)
for j in range(1, i + 1): # 内层循环控制每行的列数(1到i)
print(f"{j}×{i}={i*j}", end="\t") # 用制表符对齐
print() # 每行结束后换行
2.3 打印等腰三角形(for循环版本)
# 输入等腰三角形的高度(行数)
n = int(input("请输入等腰三角形的高度(行数):"))
# 外层循环控制行数
for i in range(1, n + 1):
# 打印左侧空格(控制等腰对称性)
for _ in range(n - i):
print(" ", end="")
# 打印星号(每行星号数 = 2*i - 1)
for _ in range(2 * i - 1):
print("*", end="")
# 每行结束后换行
print()
说明:
在乘法口诀表和等腰三角形的实现中,for 循环相比 while 循环在代码量以及可读性方面展现出明显优势。
三、知识点总结
- for循环:重复执行特定次数的代码块,专门处理序列类型数据。
- range():生成一组整数序列,常用于控制循环次数。
- 1.4 for循环 VS while循环:
for
循环(遍历循环):适合处理“有明确目标元素”或“固定次数”的任务,语法简洁,聚焦元素操作。while
循环(条件循环):适合处理“不确定次数”或“依赖条件判断”的任务,灵活性高,但需注意避免死循环。
- 易错点:
- range左闭右开:
range(n)
生成n个元素,从0开始。 - 迭代变量作用域:循环外访问可能出错,避免依赖循环外的临时变量。
- 可迭代对象类型:确保遍历的是序列(如字符串、列表),非序列类型(如整数)会报错。
- range左闭右开:
四、识点考察题
count = 0
for _ in range(7, 3, 2):
count += 1
print(count)
运行以上代码会打印多少个元素( )
A. 0
B. 1
C. 2
D. 3
答案:A. 0