目录
一、什么是循环
定义:将事物(代码)循环执行
作用:减少代码的重复编辑与执行
二、循环的分类
Python 提供了 for 循环和 while 循环两种循环语句
for 循环:重复执行语句
while 循环:在给定的判断条件为 true 时执行循环体,否则退出循环体
三、while 循环
Python 编程中 while 语句用于循环执行程序,即在某条件下,循环执行某段程序,以处理需要重复处理的相同任务
语法结构:
while 循环条件:
循环体语句
[else:
执行语句]
# else语句是在循环体正常结束时才执行的语句,当循环被中断时不执行,
# 当遇到 break、return 和有异常发生时都会中断循环
错误示范:
n = 10
while n > 0: # 这是个错误示范,因为这是个死循环,一旦开始运行,将会不停的
print('Hello Python') # 打印“Hello Python”,直到手动停止或者系统内存被占满
注意:不能写死循环(要给代码找出口)
正确示范:
n = 1
while n < 11:
print('Hello Python') # }循环体,循环打印10遍“Hello Python”
n += 1 # n=n+1,当n=10的时最后一次打印,因为再+1就不满足条件
示例:
i = 1
while i * i < 10:
print(str(i),"*",str(i),"=",i * i)
i += 1
else:
print("循环结束")
# 运行结果:1 * 1 = 1
# 2 * 2 = 4
# 3 * 3 = 9
# 循环结束
示例改:
i = 1
while i * i < 10:
if i == 3:
break
print(str(i),"*",str(i),"=",i * i)
i += 1
else:
print("循环结束")
# 运行结果:1 * 1 = 1
# 2 * 2 = 4
1、while 循环应用场景一
犯了错惹老婆生气,需要输出100次 “媳妇,我错了” 才能被原谅
n = 1
while n <= 100:
print('媳妇⼉,我错了')
n += 1
print('谢谢媳妇儿的原谅,以后再也不犯这个错了')
2、while 循环应用场景二
请计算1-100的和
num = 1 # 循环取值
sum = 0 # 加和变量,从0开始
while num < 101: # <101的效果等同于<=100
sum += num # sum=sum+num 加和变量在每次循环中加一次num的数值
num += 1 # num=num+1 每完成一次循环取值加1
print(sum) # 等循环结束后打印加和变量,结果是5050
3、while 循环应用场景三
请计算1-100偶数和
方法一:
思考:偶数即是和2求余结果为0的数字,可以加⼊条件语句判断是否为偶数,为偶数则累加,同理奇数即是和2取余结果不为0的数字
num = 1
sum = 0
while num < 101:
if num % 2 == 0: # %表示求余或者求模,如果余数等于0,即表达式成立,num是偶数
sum += num
num += 1
print(sum)
方法二:
思考:偶数从0开始依次加2得来的,故可以使用 num += 2 来表示
num = 0
sum = 0
while num < 101:
# print(num)
sum += num
num += 2
print(sum)
4、while 循环应用场景四
计算水仙花数。提示:水仙花数是一个三位数,三位数各位的立方之和等于三位数本身
i = 100; n1 = 0; n2 = 0; n3 = 0 # 前置条件可以用分号隔开放在同一行
while i < 1000:
n1 = i // 100
n2 = (i - n1 * 100) // 10
n3 = i - n1 * 100 - n2 * 10
if i == (n1**3+n2**3+n3**3):
print(i,end="\t")
i += 1
# 运行结果:153 370 371 407
AI解释代码: 以上代码是一个寻找水仙花数的程序,水仙花数指一个三位数,其个位、十位、百位数字的立方和等于该数本身。 程序中的变量 i 初始化为 100,n1、n2 和 n3分别初始化为 0 。 通过 while 循环,当 i 小于 1000 时,进入循环体。循环体中首先将 i 分别除以 100、10 和 1,得到百位数、十位数和个位数,并分别赋值给 n1、n2 和 n3。 然后通过 if 语句判断 i 是否等于它的各个位数的立方和。若相等,则将 i 输出,并在末尾加上制表符(\t)。 最后,将 i 加 1,继续进行下一次循环,直到 i 大于等于 1000,程序结束。
四、循环控制语句
Python 提供了 break、continue 和 pass三种循环控制语句
break语句:在语句块执行过程中终止循环,并且跳出整个循环
continue语句:在语句块执行过程中终止并跳出本次循环,执行下一次循环
pass语句:pass 是空语句,是为了保持程序结构的完整性
1、break 语句应用场景
# 从 1 打印到 100,但是到了 50 的时候我希望停止整个循环
num = 1
while num < 101:
print(num)
if num == 50:
break # 结束整个循环
num += 1
2、continue 语句应用场景
# 从1 打印到100,只有50不打印
num = 0
while num < 100:
num += 1
if num == 50:
continue # 跳过本次循环,进入下一次循环
print(num)
注意:以上两个例子里面起始数字不同,print 语句所在的位置也不同,其实最关键的是变量重新赋值的语句位置不同,如果其位于 continue 的后面,则会一直执行下去
五、while循环嵌套
执行流程:当内部循环执行完成之后,再执行下⼀次外部循环的条件判断
1、while 循环嵌套应用场景一
和女朋友闹矛盾生气了,为了哄女朋友,你决定每天道歉一次 ,并买三束鲜花 ,计划总共持续10天 。当你在第四天,买了第2束花后,女朋友不生气了,整个循环都会退出
x = 1
while x < 11:
y = 1
while y < 4:
print("道歉第%d天," % x, "买了%d束花" % y)
if x == 4 and y == 2: #
break # 这两句是为了实现小循环退出
y += 1
if x == 4: #
print("女朋友不生气了") #
break # 这三句是为了实现大循环退出
x += 1
AI 解释代码: 这段代码包含了两个嵌套循环。外层循环使用了 while 循环,初始条件为 x=1,当 x 小于 11 时执行循环体,每次循环结束 x 增加 1。 内层循环同样使用了 while 循环,初始条件为 y=1,当 y 小于 4 时执行循环体,每次循环结束 y 增加 1。在每次内层循环体中,会输出“道歉第x天,买了y束花”的信息。同时,当 x 为 4 且 y 为 2 时,会使用 break 语句退出内层循环,此时输出的信息只有前四天的。 当 x 为 4 时,会输出“女朋友不生气了”,同时使用 break 语句退出外层循环,此时整个程序结束。 总结一下,这段代码的功能是模拟男友向女友道歉送花的情况。外层循环控制送花的天数,内层循环控制每天送花的束数,当送花的天数为4且送花的束数为2时,女友不生气了,程序结束。
2、while 循环嵌套应用场景二
使用 while 循环编写一个99乘法表
思考:使用while循环嵌套的方式,一个变量循环控制行,一个变量循环控制列,是第几行就有几列
x = 1 # 定义x为行变量
while x <= 9: # 让行从1循环到9
y = 1 # 定义y为列变量
while y <= x: # 当列<行时,例如第5行的1 2 3 4 5列依次进入循环
# format函数为大括号赋值,end=''函数是每次打印完不换行
print('{}*{}={}'.format(y, x, x*y), end='\t') # end='/t'是为每次打印加4个空格
y += 1
print('') # print()方法默认是自动换行的,如果不希望换行就使用一个end属性
x += 1
AI 解释代码: 以上代码是一个九九乘法表的输出程序,具体解释如下: 1、定义变量 x 为行变量,初始值为 1; 2、进入外层 while 循环,循环条件是当 x 小于等于 9 时,即从第 1 行循环到第 9 行; 3、在外层 while 循环中,定义变量 y 为列变量,初始值为 1 ; 4、进入内层 while 循环,循环条件是当 y 小于等于 x 时,即在第 x 行从第 1 列循环到第 x 列; 5、在内层 while 循环中,使用 print 函数输出乘法表的内容,输出格式为“ yx=xy ”,使用 format 函数进行字符串格式化,同时使用 end='\t' 参数不换行并且每次输出后加上 4 个空格; 6、内层 while 循环结束后,使用 print 函数输出一个空行,从而实现在控制台输出一个完整的乘法表; 7、外层 while 循环结束后,整个程序结束。 运行结果: 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