四、while
循环嵌套
4.1 循环嵌套
while
嵌套就是:while
里面还有while
while 条件 1: 条件满足时,做的事情1 条件满足时,做的事情2 条件满足时,做的事情3 ...(省略)... while 条件 2: 条件满足时,做的事情1 条件满足时,做的事情2 条件满足时,做的事情3 ...(省略)... 处理条件 2 处理条件 1
4.2 循环嵌套演练 —— 九九乘法表
第 1 步:用嵌套打印小星星
需求
- 在控制台连续输出五行
*
,每一行星号的数量依次递增
* ** *** **** *****
- 使用字符串 * 打印
# 1. 定义一个计数器变量,从数字1开始,循环会比较方便 row = 1 while row <= 5: print("*" * row) row += 1
第 2 步:使用循环嵌套打印小星星
知识点 对 print 函数的使用做一个增强
在默认情况下,print 函数输出内容之后,会自动在内容末尾增加换行
如果不希望末尾增加换行,可以在 print 函数输出内容的后面增加 , end=""
其中 "" 中间可以指定 print 函数输出内容之后,继续希望显示的内容
语法格式如下:
# 向控制台输出内容结束之后,不会换行 print("*", end="") # 单纯的换行 print("")
end=""
表示向控制台输出内容结束之后,不会换行
假设Python
没有提供 字符串的 *
操作 拼接字符串
需求
- 在控制台连续输出五行
*
,每一行星号的数量依次递增
* ** *** **** *****
开发步骤
- 1> 完成 5 行内容的简单输出
- 2> 分析每行内部的
*
应该如何处理?
- 每行显示的星星和当前所在的行数是一致的
- 嵌套一个小的循环,专门处理每一行中
列
的星星显示
row = 1 while row <= 5: # 假设 python 没有提供字符串 * 操作 # 在循环内部,再增加一个循环,实现每一行的 星星 打印 col = 1 while col <= row: print("*", end="") col += 1 # 每一行星号输出完成后,再增加一个换行 print("") row += 1
第 3 步: 九九乘法表
需求 输出 九九乘法表,格式如下:
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
开发步骤
- 打印 9 行小星星
* ** *** **** ***** ****** ******* ******** *********
- 将每一个
*
替换成对应的行与列相乘
# 定义起始行 row = 1 # 最大打印 9 行 while row <= 9: # 定义起始列 col = 1 # 最大打印 row 列 while col <= row: # end = "",表示输出结束后,不换行 # "\t" 可以在控制台输出一个制表符,协助在输出文本时对齐 print("%d * %d = %d" % (col, row, row * col), end="\t") # 列数 + 1 col += 1 # 一行打印完成的换行 print("") # 行数 + 1 row += 1
五、for循环
5.1 语法
for 临时变量 in 序列: 重复执行的代码1 重复执行的代码2 ······
5.2 示例
str = "love" for i in str: print(i) # l o v e
5.2.1 break
str = "love" for i in str: if i == "v": print("遇到v不打印,跳出循环") break print(i)
l
o
遇到v不打印,跳出循环
5.2.2 continue
str = "love" for i in str: if i == "v": print("遇到v不打印,返回循环") continue print(i)
l
o
遇到v不打印,返回循环
e
六、else
循环可以和else配合使用,else下方缩进的代码指的是当循环正常结束之后要执行的代码
6.1 while…else
6.1.1 语法
while 条件: 条件成立重复执行的代码 else: 循环正常结束之后要执行的代码
6.1.2 示例
i = 1 while i <= 3: print("媳妇,我错了") i += 1 else: print("媳妇原谅我了")
媳妇,我错了
媳妇,我错了
媳妇,我错了
媳妇原谅我了
6.1.3 退出循环方式
- break
i = 1 while i <= 3: if i == 2: print("这遍说的不真诚") break print("媳妇,我错了") i += 1 else: print("媳妇原谅我了")
媳妇,我错了
这遍说的不真诚
所谓else指的是循环正常结束之后要执行的代码,即如果是break终止循环的情况,else下方缩进的代码将不执行。
- continue
i = 1 while i <= 3: if i == 2: print("这遍说的不真诚") i += 1 continue print("媳妇,我错了") i += 1 else: print("媳妇原谅我了")
媳妇,我错了
这遍说的不真诚
媳妇,我错了
媳妇原谅我了
因为continue是退出当前一次循环,继续下一次循环,所以该循环在continue控制下是可以正常结束的,当循环结束后,则执行了else下方缩进的代码。
6.2 for…else
6.2.1 语法
for 临时变量 in 序列: 重复执行的代码 else: 循环正常结束之后要执行的代码
所谓else指的是循环正常结束之后要执行的代码,即如果是break终止循环的情况,else下方缩进的代码将不执行。
6.2.2 示例
str = "love" for i in str: print(i) else: print("循环正常结束之后执行的代码")
6.2.3 退出循环的方式
break终止循环
str = "love" for i in str: if i == "v": print("遇到v不打印,跳出循环") break print(i) else: print("循环正常结束之后执行的代码")
l
o
遇到v不打印,跳出循环
continue
str = "love" for i in str: if i == "v": print("遇到v不打印,返回循环") continue print(i) else: print("循环正常结束之后执行的代码")
l
o
遇到v不打印,返回循环
e
循环正常结束之后执行的代码
因为continue是退出当前一次循环,继续下一次循环,所以该循环在continue控制下是可以正常结束的,当循环结束后,则执行了else下方缩进的代码。
七、总结
- 循环的作用:控制代码重复执行
- while语法
while 条件(判断 计数器 是否达到 目标次数): 条件满足时,做的事情1 条件满足时,做的事情2
- while循环嵌套语法
while 条件 1: 条件1成立执行的代码 ...(省略)... while 条件 2: 条件2成立执行的代码 ...(省略)...
- for循环语法
for 临时变量 in 序列: 重复执行的代码1 重复执行的代码2 ······
break退出整个循环
continue退出本次循环,继续执行下一次重复执行的代码
else
while和for都可以配合else使用
else下方缩进的代码含义:当循环正常结束后执行的代码
break终止循环不会执行else下方缩进的代码
continue退出循环的方式执行else下方缩进的代码