循环

在 Python 中,循环是一种重要的控制结构,用于重复执行一组语句。Python 提供了两种主要的循环结构:for 循环和 while 循环。

for 循环

for 循环是 Python 中用于迭代访问序列元素的重要工具。通过 for 循环,你能够方便地遍历列表、元组、字符串等可迭代对象的元素,执行特定的代码块。 for 循环的基本语法如下:

for 变量 in 可迭代对象:
    # 执行这里的代码块
else:
    # 执行这里的代码块
  • 变量: 在每次迭代中,可迭代对象中的一个元素会被赋值给变量。你可以使用这个变量在代码块中进行操作。
  • 可迭代对象: 任何可以被迭代的对象,例如列表、元组、字符串等。for 循环会按顺序迭代可迭代对象中的元素。
  • else: 循环结束之后执行的代码。
  • 循环语句同样有缩进的要求。

下面是一个简单的例子,演示如何使用 for 循环遍历列表中的元素:

for i in range(5):
    print(i)
else:
    print("end")

这段代码会输出:

0
1
2
3
4
end

执行过程

for 循环的工作原理是,它会依次取出可迭代对象中的每个元素,并将元素赋值给指定的变量,然后执行循环体中的代码块。这个过程会一直持续,直到可迭代对象中的所有元素都被访问完。

让我们通过一个简单的例子来理解 for 循环的工作原理:


for num in range(1, 6):
    square = num ** 2
    print(f"{num} 的平方是 {square}")

这段代码会输出:

1 的平方是 1
2 的平方是 4
3 的平方是 9
4 的平方是 16
5 的平方是 25

在每次迭代中,num 变量都被赋值为 numbers 列表中的一个元素,然后计算平方并输出。

range() 函数与 for 循环结合

range() 函数是 Python 中常用的生成数字序列的函数。结合 for 循环,range() 可以用于指定循环的次数或遍历一定范围的数字。range() 的基本语法如下:

range(start, stop, step)

三个参数只可能为整型数值

  • start 序列起始值,默认为 0,可选值。
  • stop 序列终止值,不包含在序列中。
  • step 步长,即两个相邻数字之间的差值,默认为 1;也为可选值。

根据上面的说明,range 函数可以大致有三种调用方式:

  1. range(stop):从0开始到stop-1结束,循环stop次;
  2. range(start, stop):start开始到stop-1结束,循环stop-start次;
  3. range(start, stop, step):start开始到stop-1结束,每次循环步长为step, 如果step为正数,需要满足stop>start,否则要求stop<start

这里可以用数学中区间来描述startstop的范围 [start, stop),即左闭右开。

示例演示

利用 for 循环计算从1加到100的总和。

summ = 0
for i in range(1, 101):
    summ += i
print(f"1到100的总和为{summ}")

利用 for 循环打印出1-20以内所有的奇数。

"""
利用步长
"""
for i in range(1, 21, 2):
    print(i)


"""
利用if条件语句与 for循环语句的嵌套
"""
for i in range(21):
    if i % 2 == 1:
        print(i)

依次输入期末考试的各科成绩,总计算出平均值。

n = int(input("输入学科数量:"))
score = 0
for i in range(n):
    x = int(input("输入第%d科成绩:" %(i+1)))
    score = score + x
print("平均成绩为:%.2f" %(score/n))

嵌套循环

for 循环可以嵌套在其他 for 循环内,形成嵌套循环。嵌套循环在处理二维结构(例如二维列表)或需要遍历多个维度的情况下非常有用。以下是一个简单的例子:

for i in range(3):
    for j in range(2):
        print(f"({i}, {j})")

这段代码会输出:

(0, 0)
(0, 1)
(1, 0)
(1, 1)
(2, 0)
(2, 1)

示例演示

利用 for 循环的嵌套,打印出乘法口诀表。

for i in range(1, 10):
    for j in range(1, i+1):
        print(f'{j}x{i}={i*j}', end=" ")
    print("")

while 循环

while 循环是 Python 中的一种迭代结构,用于重复执行一组语句,直到指定的条件不再满足。它提供了一种灵活的方式来处理需要多次执行的任务。

while 循环的基本语法如下:

while 条件:
    # 循环体
    # 在每次迭代中,当条件为真时,执行循环体

条件 是一个表达式,当这个表达式的值为真时,循环体将会被执行。当条件为假时,循环结束。

示例演示

以下是一个简单的示例,演示了 while 循环的基本用法:

count = 0

while count < 5:
    print(f"Count: {count}")
    count += 1

在这个例子中,count 初始化为 0。while count < 5: 表达式检查 count 是否小于 5,如果是真,则执行循环体。在每次循环中,打印 count 的值,并将 count 增加 1。当 count 达到 5 时,循环结束。

循环中的 else 语句

while 循环也支持 else 语句,它在循环条件变为假时执行,除非循环被中断。以下是一个使用 else 的示例:

count = 0

while count < 5:
    print(f"Count: {count}")
    count += 1
else:
    print("Loop completed.")

在这个例子中,当 count 不再小于 5 时,else 语句将被执行,输出 Loop completed.

无限循环

无限循环也叫死循环,在某些情况下,需要一直循环下去来保证程序不间断的运行下去,在 Python 中可以使用 while True: 或者 while 1:实现无限循环。

while True:
    # 无限循环
    print("I am looping.")

循环控制

在 Python 编程语言中,breakcontinue 是两个用于控制循环执行的关键字。它们分别用于中断循环和跳过当前迭代,使程序更加灵活和高效。

  • break: 完全中断循环,跳出循环体。
  • continue: 跳过当前迭代,继续下一次迭代。

如果有循环嵌套,这两个关键字只在其所处的那一层循环发生作用,不会影响该层循环的外部和内部循环。

break 关键字

break 是一个用于中断循环的关键字。当 break 语句被执行时,循环会立即终止,程序将跳出循环体,继续执行循环之后的代码。

while 条件:
    # 循环体
    if 某个条件:
        break  # 中断循环
    # 循环体的其余部分
for 变量 in 可迭代对象:
    # 循环体
    if 某个条件:
        break  # 中断循环
    # 循环体的其余部分

让我们通过一个简单的示例来说明 break 的用法。假设我们要在一个列表中查找某个特定的元素:

A博物馆由于展出的内容比较受欢迎,所以在参观高峰的展出期间采取限流的文案保证馆内不会过于拥挤。具体文案是,参观人员在馆外排队依次进入,管理人员每隔5分钟打开隔离带开放观众进入,同时会进行计数,当本次进入人员达到20人时,会关闭隔离带,其它观众需要等待下一轮开放。

count = 0
while True:
    count = count + 1
    print("进入%d位观众。" % count)
    if count == 20:
        break
else:
    print("停止进入")

上述代码的else部分不会执行,这是因为break是中断整个循环,else也属于循环的一部分。

进入1位观众。
进入2位观众。
进入3位观众。
进入4位观众。
进入5位观众。
进入6位观众。
进入7位观众。
进入8位观众。
进入9位观众。
进入10位观众。
进入11位观众。
进入12位观众。
进入13位观众。
进入14位观众。
进入15位观众。
进入16位观众。
进入17位观众。
进入18位观众。
进入19位观众。
进入20位观众。

continue 关键字

continue 是一个用于跳过当前迭代的关键字。当 continue 语句被执行时,循环会跳过当前迭代的剩余部分,直接进入下一次迭代。

while 条件:
    # 循环体
    if 某个条件:
        continue  # 跳过当前迭代
    # 循环体的其余部分
for 变量 in 可迭代对象:
    # 循环体
    if 某个条件:
        continue  # 跳过当前迭代
    # 循环体的其余部分

某个连队在训练过程中,为了加强战士执行命令的效率,进行一种特殊的训练方式,教官先说出一个1-9之间的数字,然后战士们开始报数,当报到与这个数有关的数字时,该名战士就不要报数,然后下一个战士从下一个数字继续报数。 假设一个连队有150人,请用程序模拟出这个连队的报数情况。 提示:与这个数有关的数字有两种,第一种为个位上的数字为这个数,第二种为这个数的倍数。

print("请教官说出一个1-9之间任意数字")
n = int(input("数字为:"))
print("开始报数")
for i in range(1, 151):
    if i % 10 == n  or i % n  == 0:
        continue
    print(i, end=' ')

使用场景

  • 跳过不满足条件的迭代: 在循环中,当某个条件不满足时,使用 continue 跳过当前迭代。
  • 处理特殊情况: 在处理数据时,遇到特殊情况可使用 continue 避免执行不必要的代码。

breakcontinue 是 Python 中控制循环执行的两个关键字。它们提供了在循环中灵活控制流程的手段,使得程序在面对不同情况时能够更加高效、清晰地执行。合理使用 breakcontinue 可以使代码更具可读性和可维护性。在编写循环时,根据具体需求选择使用 breakcontinue,能够更好地实现代码的逻辑。