Python 循环语句详解:while、for、break、continue 与 range
本文深入解析 Python 中的两种核心循环语句:while 和 for。详细讲解 while 的条件判断、else 子句执行逻辑及死循环处理;阐述 for 遍历可迭代对象的工作机制。重点剖析 break 终止循环、continue 跳过当前迭代以及 range 生成整数序列的具体用法,并通过嵌套循环示例展示复杂逻辑实现。
Python 提供了两种主要的循环语句结构,用于处理重复性任务。
分别是 while 语句和 for 语句。
while 循环语句详解
首先介绍 while 语句的基本用法。
假设我们需要解决这样一个问题:输入一个整数 n,程序需要输出 n 行特定的文本内容。
例如,输出格式为 hello 1、hello 2,直至 hello n。
接下来深入解析 while 语句的具体实现方式。
while 语句的核心作用是根据设定的条件,重复执行一条或多条语句。
其基本语法结构如下所示。
while 真值表达式:
语句块1...... else: 语句块2......
对语法结构的详细说明如下。
1. 程序首先执行真值表达式,测试其布尔值为 True 或 False。 2. 如果真值表达式的测试值为 True,则执行语句块1,随后返回第一步重新进行测试。 3. 如果真值表达式的测试值为 False,则执行 else 子句中的语句块2,然后结束此 while 语句的执行;如果没有 else 子句,则直接结束 while 语句的执行。 4. else 子句部分可以省略(同 if 语句类似)。
例如,打印 10 行的 hello。
i = 1 #创建并初始化一个控制while循环的变量i while i <= 10: print("hello") #此处执行10次 i += 1 #运行结果:[root@localhost data]# ./test.py hello hello hello hello hello hello hello hello hello hello
使用 while 语句时需要注意以下事项。
1. 必须通过控制真值表达式的值来防止出现死循环。 2. 通常使用真值表达式中的循环变量来控制循环条件。 3. 通常在循环语句块内需要改变循环变量,以控制循环的次数和变量的走向。
接下来讨论 while 循环的嵌套应用。
while 语句本身是一种语句,和其他语句一样,可以嵌套在其他复合语句中(如:if 语句、while 语句、for 语句等内部)。
while 语句嵌套的示意结构如下。
while 真值表达式: ....... while 真值表达式2: ...... else: ........ else: ........ 如:
输入一个数,打印指定宽度的正方形: 如:输入:5
n = int(input("输入一个数:")) j = 1 while j <= n: i = 1 while i <= n: print(i,end=' ') i += 1 print() j += 1 ######运行结果: 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5
break 语句与死循环处理
介绍 break 语句的功能。
break 语句用于循环语句(while、for 语句)中,用来终止当前循环语句的执行。
关于 break 语句的详细说明: 1. 当 break 语句执行后,此循环语句 break 之后的语句将不再执行。 2. break 语句通常和 if 语句组合使用。 3. break 语句终止循环时,循环语句的 else 子句将不会被执行。 4. break 语句只能终止当前循环的执行,如果有循环嵌套时,不会跳出嵌套的外层循环。 5. break 语句只能在循环语句(while 或 for 语句)内部使用。 如:
i = 1 while i < 10: print("循环开始i=",i) if i == 5: #当i = 5时结束循环 break i += 1 #运行结果:[root@localhost data]# ./test.py 循环开始i= 1 循环开始i= 2 循环开始i= 3 循环开始i= 4 循环开始i= 5
关于死循环(death loop)的概念。
1. 死循环是指循环条件一直成立的循环。 2. 死循环通常用 break 语句来终止循环。 3. 死循环的 else 子句永远不会执行。 如:用 input 输入一些文字,当输入三个 * 号时,代表输入结束,否则一直循环。
s = "" while True: a = input("请输入文字(***结束)") if a == '***': break s += a + '\n' ##运行结果:[root@localhost data]# ./test.py 请输入文字(***结束)a 请输入文字(***结束)b 请输入文字(***结束)v 请输入文字(***结束)c 请输入文字(***结束)d 请输入文字(***结束)*** #输入三个*** 结束,退出循环 [root@localhost data]#
for 循环与可迭代对象遍历
第二部分:for 语句(循环语句)。
for 语句的作用是用来遍历可迭代对象的数据元素。
其基本语法为: for 变量列表 in 可迭代对象:
语句块1...... else: 语句块2......
对 for 语句语法的说明如下。
1. 可迭代对象每次提供一个元素依次赋值给变量列表中的变量,赋值完毕后执行语句块1,重复执行此步骤。 2. 当可迭代对象不能够提供数据时,执行 else 子句部分的语句块2,然后退出循环。
例如:
s = 'ABCDE' for x in s: print(x) else: print("继续执行此条") #迭代对象不能够提供数据时,继续执行else中的这条 ##运行结果:[root@localhost data]# ./test.py A B C D E 继续执行此条
3. else 子句部分可以省略(同 while 语句类似)。
4. 当在语句内部用 break 终止循环时,else 子句部分语句块2不会执行。 可迭代对象时指能依次获取数据元素的对象。
第四部分:for 循环嵌套。
其逻辑与 while 循环嵌套类似。
例如:
for x in "ABC": for y in "123": print(x + y) ##运行结果: [root@localhost data]# ./test.py A1 A2 A3 B1 B2 B3 C1 C2 C3
经典循环嵌套示例。
用 for 循环嵌套打印如下图形: (输入一个数 n(10 以内)代表矩形的宽度和高度) 如: 输入:5
1 2 3 4 5 2 3 4 5 6 3 4 5 6 7 4 5 6 7 8 5 6 7 8 9
n = int(input("输入一个数:")) for i in range(1, n +1): for j in range(i, i + n): print(j,end=' ') else: print() #运行结果: [root@localhost data]# ./test.py 输入一个数:5 1 2 3 4 5 2 3 4 5 6 3 4 5 6 7 4 5 6 7 8 5 6 7 8 9
continue 语句与跳过迭代
第五部分:continue 语句。
continue 语句用于循环语句(while、for 语句)中,不再执行本次循环内 continue 之后的语句,重新开始一次新循环。
关于 continue 语句的说明。
1. 在 while 语句中执行 continue 语句,将直接跳转到 while 语句的真值表达式重新判断循环条件。 2. 在 for 语句中执行 continue 语句,将会从可迭代对象中取下一个元素,绑定变量后再次进行循环。 如:
for i in range(5): if i == 3: #当i 等于3时,跳过打印,进行下一次循环。 continue print(i) #运行结果 [root@localhost data]# ./test.py 0 1 2 4
示例: 写一个程序,求 1-100 之间所不能被 5,7,11 整除的数的和。
s = 0 for i in range(1,101): if (i % 5) == 0 or (i % 7) == 0 or (i % 11) == 0: continue s += i print(s) #运行结果: [root@localhost data]# ./test.py 3007
range 函数生成整数序列
第六部分:range 函数。
range 函数的作用是创建一个生成一系列整数的可迭代对象(也叫整数序列生成器)。 调用格式: range(stop) 从零开始,每次生成一个整数后加 1 操作,直到 stop 为止(不包含 stop) range(start,stop[,step])从 start 开始,每次生成一个整数后移动 step,直到 stop 为止(不包含 stop,且 step 可以为负数。) 注:如果直接打印 range(5)或(print(range(5)))的时候会得到 range(5),而不是一个列表,这是因为节省空间,防止过大的列表产生。 如:
>>> range(5) range(0, 5) >>> 如果想要到交互模式下得到列表,可以加入 list 到前面来进行,如下: 示例:
>>> list(range(5)) [0, 1, 2, 3, 4] >>> list(range(1,6)) [1, 2, 3, 4, 5] >>> list(range(10,0,-1)) [10, 9, 8, 7, 6, 5, 4, 3, 2, 1] >>> list(range(1,10,2)) [1, 3, 5, 7, 9] >>> list(range(5,0,-2)) [5, 3, 1] >>>
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









