所有文章 > 日积月累 > Python基础:循环结构和循环控制语句
Python基础:循环结构和循环控制语句

Python基础:循环结构和循环控制语句

大家好,之前我们学习了 Python 中的基本语法、条件判断等内容。今天,让我们把目光转向编程中另一个非常重要的概念:循环结构。当我们需要反复执行同一段代码时,就要用到循环。下面就让我们一起看看 Python 中的两种常见循环方式:for 循环while 循环

一、为什么需要循环?

在大多数场景下,我们都需要重复执行某些操作。比方说:

  • 计算 1 到 100 的整数和;
  • 批量处理一组文件;
  • 让程序持续等待用户输入,直到满足退出条件。

如果没有循环,我们只能像流水线一样把相同的代码一遍遍复制粘贴,既笨拙又容易犯错。循环给了我们一个简洁且自动化的方案,只要把要做的事情放在循环体里,程序便能按照需求重复执行,大大提升效率!

二、for 循环

2.1 基本语法

在 Python 中,for 循环通常用来遍历“可迭代对象”(比如列表、元组、字符串、range 等)。它的基本格式是:

for 变量 in 可迭代对象:
# 在循环体中,针对每次迭代的 "变量" 做相应的操作

示例

fruits = ["apple", "banana", "orange"]
for fruit in fruits:
print("I like", fruit)
# 输出
I like apple
I like banana
I like orange
message = "Hello"
for letter in message:
print(letter)
# 输出
H
e
l
l
o

可迭代对象是可以用循环(如 for)逐个访问元素的数据集合,比如列表、字符串、字典等。例如,遍历 ["苹果", "香蕉"] 时,循环会依次取出“苹果”和“香蕉”。它代表一种“可依次取出内容”的特性。

2.2 使用 range() 生成数字序列

如果我们想循环执行固定次数,一种常见方法是结合 range() 函数来使用。range(n) 会生成从 0 到 n-1 的整数序列。

for i in range(5):
print(i)
# 输出
0
1
2
3
4

range(start, end, step) 可以指定起始值——start、结束值(不含)——end和步长——step,步长没有指定的话默认是1。

# 从1到5(不含5),步长为1
for num in range(1, 5):
print(num)
# 输出
# 1
# 2
# 3
# 4
# 从1到10(不含10),步长为2
for num in range(1, 10, 2):
print(num)

# 输出
# 1
# 3
# 5
# 7
# 9

三、while 循环

3.1 基本语法

while 循环适用于我们不知道具体循环次数,但想在某个条件满足前一直循环的场景。语法如下:

while 条件表达式:
# 只要 条件表达式 为 True,就持续执行这个代码块
# 当 条件表达式 为 False,循环结束

示例:计算 1 到 100 的和

sum_value = 0
n = 1

while n <= 100:
sum_value += n
n += 1

print("1 到 100 的和是:", sum_value)
# 输出
1 到 100 的和是: 5050

代码解释:

  • 初始化 sum_value = 0n = 1
  • n <= 100 时,就把 n 累加到 sum_value,然后把 n 加 1;
  • 一旦 n 超过 100,条件不成立,循环结束,输出结果。

3.2 可能出现的“无限循环”

如果你不小心遗漏了更新循环条件的语句(比如上例中的 n += 1),就可能导致 while 永远都不变为 False,从而陷入无限循环。在实际写代码时要留意确保循环能正确终止,否则你的程序可能会卡住或占用大量资源。

四、循环控制语句:break、continue、else

4.1 break 语句

break 用于立即终止当前循环。比如我们想让用户猜数字,如果猜对就结束循环:

secret = 7
while True:
guess = int(input("猜一个数字(1-10):"))
if guess == secret:
print("恭喜你,猜对了!")
break # 猜对就退出循环
else:
print("不对哦,再试试")
# 输出
猜一个数字(1-10):1
不对哦,再试试
猜一个数字(1-10):6
不对哦,再试试
猜一个数字(1-10):7
恭喜你,猜对了!

只要用户猜对,break 就会让循环立刻停止。

4.2 continue 语句

continue跳过当前循环迭代,直接进入下一次循环。一般用来忽略某些特殊情况:

for i in range(1, 6):
if i == 3:
continue # 跳过 i=3 这次循环
print(i)
# 输出
1
2
4
5

4.3 else 与循环

Python 允许在 forwhile 循环后面写 else,只有当循环没有被 break 或异常跳出时,才会执行 else 块。一个常见场景是查找元素:

numbers = [1, 2, 3, 4, 5]
target = 3

for num in numbers:
if num == target:
print("找到目标数字:", target)
break
else:
print("没有找到目标数字")
# 输出
找到目标数字: 3
numbers = [1, 2, 3, 4, 5]
target = 6 # 把目标数字改为6

for num in numbers:
if num == target:
print("找到目标数字:", target)
break
else:
print("没有找到目标数字")
# 输出
没有找到目标数字
  • 如果找到 target 并用 break 跳出循环,就不会执行 else 块。
  • 如果循环完所有元素都没找到,else 块就会执行,打印“没有找到目标数字”。

五、循环的嵌套与复杂应用

5.1 嵌套循环

示例:九九乘法表

for i in range(1, 10):
for j in range(1, i + 1):
print(f"{j}×{i}={i*j}", end='\t')
print()
# 输出
1×1=1
1×2=2 2×2=4
1×3=3 2×3=6 3×3=9
1×4=4 2×4=8 3×4=12 4×4=16
1×5=5 2×5=10 3×5=15 4×5=20 5×5=25
1×6=6 2×6=12 3×6=18 4×6=24 5×6=30 6×6=36
1×7=7 2×7=14 3×7=21 4×7=28 5×7=35 6×7=42 7×7=49
1×8=8 2×8=16 3×8=24 4×8=32 5×8=40 6×8=48 7×8=56 8×8=64
1×9=9 2×9=18 3×9=27 4×9=36 5×9=45 6×9=54 7×9=63 8×9=72 9×9=81

解析:

for i in range(1, 10):
# range(1, 10) 会生成从 1 到 9(不包含 10)的整数序列,也就是 1, 2, 3, ..., 9
# i 在每次循环时会依次取上面序列中的值,因此当最外层循环运行时,i 会依次是 1, 2, 3, ..., 9
# 这个循环相当于“控制行数”或者“控制哪一行的乘法”,因为最常见的乘法表是按行从 1×1 开始,到 9×9 结束。

for j in range(1, i + 1):
# 这是一个“内层循环”,用来控制每一行中要打印哪些乘法式子
# 注意这里的 range(1, i + 1) 表示从 1 到 i(包含 i)。因为 range(a, b) 默认是不包含 b 的,写 i + 1 才能把 i 本身包含进来
# 举例:当外层的 i = 3 时,range(1, i + 1) 就是 range(1, 4),也就是 1, 2, 3。因此会打印 1×3=3、2×3=6、3×3=9 这几个乘法式子
# 每一行打印完对应的乘法公式后,才会回到外层循环,让 i 进入下一个值,打印下一行

print(f"{j}×{i}={i*j}", end='\t')
# print() 函数默认在输出结束后会换行(即 end='\n')。但是这里把 end 改成了 '\t'(制表符),所以不会立即换行,而是用一个 Tab 空格来分隔各个乘法结果,让它们在同一行显示并对齐
# f"{j}×{i}={i*j}" 中的 f 表示“格式化字符串(f-string)”。把 j、i、i*j 的值自动填进字符串里,这样在打印时就能显示具体的乘法过程和结果

print()
# 此处打印空白是为了打印完一行的乘法式子后进行换行

5.2 循环与条件判断的结合

示例:输出1到100之间的质数

for num in range(2, 101):
is_prime = True
for i in range(2, int(num ** 0.5) + 1):
if num % i == 0:
is_prime = False
break
if is_prime:
print(num, end=' ')
# 输出
2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97

六、列表推导式(拓展)

6.1 列表推导式

列表推导式就是用一行简短的代码来创建或生成一个新列表的方式。它看起来很像在一对方括号 [] 里面写了一个小小的 for 循环,并且可以在循环里加入一些条件判断(可选)。

语法结构:

[表达式 for 变量 in 可迭代对象 if 条件]

如果你想生成一个包含 1 到 5 的列表,常见的做法是:

numbers = []
for i in range(1, 6):
numbers.append(i)

print(numbers)
# 输出
[1, 2, 3, 4, 5]

而有了列表推导式,就可以把上面的循环简化成:

numbers = [i for i in range(1, 6)]
print(numbers)
# 输出
[1, 2, 3, 4, 5]

这两段代码的效果是一模一样的!只是第二段更短、更直观。

示例:生成平方数列表

squares = [x ** 2 for x in range(1, 11)]
print(squares)
# 输出
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

七、常见问题与注意事项

  • 缩进

Python 使用缩进来表示循环体。一旦你写完 forwhile 后面的冒号 :, 所有属于循环体的代码都必须在同一缩进层级。

  • 注意更新循环条件

while 循环中,若忘记更新条件变量,容易进入无限循环。如果这不符合预期,需要及时纠正。

  • 慎用 breakcontinue

它们能让逻辑更灵活,但也可能让程序流程难以追踪。使用前最好想清楚代码逻辑。

  • 组合条件

想要一次遍历多个序列或者做复杂判断时,可以结合 if-elserange()zip() 等函数、结构或运算符一起使用。

八、总结

  • for 循环

常用于遍历已有序列或固定次数的循环(借助 range())。

  • while 循环

条件为真时持续执行,适用于需要不确定次数的重复操作。

  • break和continue
    可插入循环内部,控制循环流转
  • 循环 + 条件判断

是实现大多数逻辑的基础,灵活运用能编写出丰富多样的功能。

有了循环,你的 Python 程序就不仅能做条件判断,还能自动重复执行特定操作,从而轻松解决各种批量任务、累加计算或数据处理。多多练习和应用,你就能进一步领悟到编程的“自动化”魅力了!

#你可能也喜欢这些API文章!