while循环结构专题
Python搬砖之旅(9th day):while循环结构专题
while 循环的表现形式
while循环的语法格式:
1,
while 变量/条件表达式:
循环体
2,
while 变量/条件表达式:
循环体
else:
语句
说明:
1,条件表达式指返回值为布尔值True 或者 False的变量或表达式,比如常见的布尔变量、比较运算、逻辑运算等等。
2,如果变量的值为0、None、或者是False,其返回的值均为False,则程序判断条件不成立,不会继续执行循环体中的语句;当条件表达式判断为True,或者变量为非空,非0,True的值时,程序判断条件成立,执行循环体中的语句。
3,在while … else…结构中,只有当while循环正常结束的时候(即不满足条件表达式的情况下)才会执行else之后的代码段;如果while循环是非正常结束的(如执行了break语句被中断),则不执行else之后的代码段。
小练习:
1,使用while…else循环结构计算1+2+3+ … + 100 的运算结果,并打印出来
# 计算1+2+3+ ... + 100 的运算结果,并打印
# 用一个变量sum_hundred保存运算结果,用一个变量i循环自加1
sum_hundred = i = 0
while i <= 100:
sum_hundred += i
i += 1
else:
print("100以内的整数之和是:{}".format(sum_hundred))
2,尝试使用while循环打印金字塔(使用*输出金字塔)
n = int(input("请输入金字塔的层数:"))
i = 1
while i <= n:
print((n - i) * ' ' + (i * 2 - 1) * '*')
i += 1
注意:
1, while 循环适合于不确定循环次数的循环结构,当条件表达式不再满足某种条件时,程序则不再执行循环体中的代码。
2, while 循环需要注意,不要让程序陷入死循环(指条件表达式一直为True的情况)。可以通过设置一些循环变量,让循环变量通过自增或自减的方式不断迭代,直到不符合某个条件时,结束循环。
3,while 循环的循环变量要定义在循环体外,先定义再使用。
break、continue、pass循环控制语句
break : 程序执行过程被中断,不再执行当层break语句之后的代码,跳出当层循环。
continue : 程序不再执行当层continue语句之后的代码,跳出当次循环,并执行下一次循环。
pass : 没有特殊效果,只起到占位的作用,如果没有想好具体的处理方法,可以先用pass代替,保证程序语法的完整性。
小练习:
1,观察下面两段小程序,说出他们的运算结果
# 观察下面两段小程序,说出他们的运算结果
i = 1
while i < 10:
i += 2
if i == 5:
break
print("i现在的值是:{}".format(i) , end = " ")
print()
i = 1
while i < 10:
i += 2
if i == 5:
continue
print("i现在的值是:{}".format(i) , end = " ")
2, 实现一个功能:输入一串字符,遇到空格则只输出空格之前的字符
"""
输入一串字符,遇到空格则只输出空格之前的字符
"""
s = input("请输入一串任意字符:")
i = 0
while i < len(s):
if s[i] == " ":
break
print(s[i], end="")
i += 1
注意:
1,break 语句和 continue 语句只能用于最内层的循环体;
2,break 语句和 continue 语句之后的代码不再执行;
3,如果是while循环的嵌套形式,那么在内层循环语句中断后,外层的循环语句依旧执行。
while True循环
while True是典型的死循环结构,但是我们可以通过搭配break语句,实现特定的业务场景。
小练习:
实现一个业务场景,当输入"Y"或者"y"的时候,跳出循环,否则根据每次输入的分数判断成绩等级。
0-59 不及格;60-74 中等;75-84良好;85-100优秀
"""
实现一个业务场景,当输入"Y"或者"y"的时候,跳出循环,
否则根据每次输入的分数判断成绩等级。
0-59 不及格;60-74 中等;75-84良好;85-100优秀
"""
while True:
s = input("是否结束当前程序?Y|y退出,其他任意键继续:")
if s.lower() == "y":
break
score = int(input("请输入一个0-100之内的整数:"))
if score < 0 or score > 100:
print("请重新输入!")
continue
elif score >= 0 and score < 60:
print("不及格")
elif score >= 60 and score < 75:
print("中等")
elif score >= 75 and score < 85:
print("良好")
else:
print("优秀")
while 循环的嵌套
while 循环的嵌套是常见的程序结构,先执行完内层的循环,再执行外层的循环。假设内层需要执行m次,外层需要执行n次,那么总的循环次数就是m * n次。
小练习:
打印0-100之内的质数
判断质数的条件:除了1和其本身,不能被其他整数整数。
注意:最小的质数从2开始
# 判断100以内的质数(2-100)
i = 2
while i <= 100:
j = 2
while j < int(i/2):
if i % j == 0:
break
j += 1
else:
print("{}是质数".format(i))
i += 1