一、while循环语句
1、循环语句
循环语句可以使指定的代码块重复指定的次数
2、循环语句的分类
while循环 和 for循环
3、语法
while 条件表达式 :
代码块
else :
代码块
4、执行流程
while语句在执行时,会先对while后的条件表达式进行求值判断,
如果判断结果为True,则执行循环体(代码块),
循环体执行完毕,继续对条件表达式进行求值判断,以此类推,
直到判断结果为False,则循环终止,如果循环有对应的else,则执行else后的代码块
5、循环的三个条件
#①初始化表达式,通过初始化表达式初始化一个变量
i = 0
# ②条件表达式,条件表达式用来设置循环执行的条件
while i < 10 :
print(i)
# ③更新表达式,修改初始化变量的值
i += 1
6、特殊
条件表达式恒为True的循环语句,称为死循环,它会一直运行,慎用!
while True :
print('hello')
7、代码示例:
# 创建一个执行十次的循环
i = 0
while i < 10 :
i += 1
print(i,'hello')
else :
print('else中的代码块')
二、while循环练习
1、求100以内所有奇数之和
# 分步骤:①先获取所有100以内的数
# ②判断每个数是否是奇数
# 方式一:
result = 0
while i < 100 :
i += 1
# 判断i是否是奇数
if i % 2 != 0:
result += i
print('result =', result) # 2500
# 方式二:
i = 1
result = 0
while i < 100:
print(i)
result += i
i += 2
print('result =', result) # 2500
2、求100以内所有7的倍数之和,以及个数
分步骤:①获取100以内所有的数
②让每个数都加7
i = 7
# 创建一个变量,来保存结果
result = 0
# 创建一个计数器,用来记录循环执行的次数
# 计数器就是一个变量,专门用来记录次数的变量
count = 0
while i < 100:
# 为计数器加1
count += 1
result += i
i += 7
print('总和为:',result,'总数量为:',count) # 总和为: 735 总数量为: 14
3、求1000以内所有的水仙花数
#水仙花数是指一个 n 位数(n≥3 ),它的每个位上的数字的 n 次幂之和等于它本身(例如:1**3 + 5**3 + 3**3 = 153)。
# 获取1000以内的三位数
i = 100
while i < 1000:
# 假设,i的百位数是a,十位数b,个位数c
# 求i的百位数
a = i // 100
# 求i的十位数
# b = i // 10 % 10
b = (i - a * 100) // 10
# 求i的个位数字
c = i % 10
# print(i , a , b , c)
# 判断i是否是水仙花数
if a**3 + b**3 + c**3 == i :
print(i)
i += 1
输出结果:
153
370
371
407
4、获取用户输入的任意数,判断其是否是质数。
num = int(input('输入一个任意的大于1的整数:'))
# 判断num是否是质数,只能被1和它自身整除的数就是质数
# 获取到所有的可能整除num的整数
i = 2
# 创建一个变量,用来记录num是否是质数,默认认为num是质数
flag = True
while i < num:
# 判断num能否被i整除
# 如果num能被i整除,则说明num一定不是质数
if num % i == 0 :
# 一旦进入判断,则证明num不是质数,则需要将flag修改为false
flag = False
i += 1
if flag :
print(num,'是质数')
else :
print(num,'不是质数')
控制台输出结果:
输入一个任意的大于1的整数:7
7 是质数
三、循环嵌套
1、打印如下图形
*****
*****
*****
*****
*****
# 创建一个循环来控制图形的高度
# 循环嵌套时,外层循环每执行一次,内层循环就要执行一圈
i = 0
while i < 5:
# 创建一个内层循环来控制图形的宽度
j = 0
while j < 5:
print("* ",end='')
j += 1
print()
2、打印正三角形
# * j<1 i=0
# ** j<2 i=1
# *** j<3 i=2
# **** j<4 i=3
# ***** j<5 i=4
i = 0
while i < 5:
j = 0
while j < i + 1:
j += 1
print('*', end='')
print()
i += 1
3、打印99乘法表
# 1*1=1
# 1*2=2 2*2=4
# 1*3=3 2*3=6 3*3=9
# ... 9*9=81
# 创建一个外层循环来控制图形的高度
i = 0
while i < 9:
i += 1
# 创建一个内层循环来控制图形的宽度
j = 0
while j < i:
j += 1
print(f"{j}*{i}={i * j} ", end='')
print()
4、求100以内所有的质数
# 创建一个循环,求1-100以内所有的数
i = 2
while i <= 100:
# 创建一个变量,记录i的状态,默认认为i是质数
flag = True
# 判断i是否是质数
# 获取所有可能成为i的因数的数
j = 2
while j <= i**0.5:
# 判断i能否被j整除
if i % j == 0:
# i能被j整除,证明i不是质数,修改flag为False
flag = False
# 一旦进入判断,则证明i一定不是质数,此时内层循环没有继续执行的必要,使用break来退出内层的循环。
break
j += 1
# 验证结果并输出
if flag :
print(i)
i += 1
四、berak和continue
1、break和continue的作用
1、break
break可以用来立即退出循环语句(包括else)
2、continue
continue可以用来跳过当次循环
3、pass
pass是用来在判断或循环语句中占位的
4、break和continue的共同点
break和continue都是只对离他最近的循环起作用
2、continue代码示例
i = 0
while i < 5:
i += 1
if i == 2:
continue
print(i)
else :
print('循环结束')
控制台打印:
1
3
4
5
循环结束
3、break代码示例
i = 0
while i < 5:
i += 1
if i == 2:
continue
print(i)
else :
print('循环结束')
控制台输出:
1
2