五 、流程控制(下)
5.1 循环结构
如果希望把hello world 输出2遍
print("hello wolrd")
print("hello world")
很简单只需要2行代码,那如果输出100遍呢?似乎变得麻烦了。
循环可以让这个麻烦的事情变得简单,让一段代码反复执行。
在python编程语言中循环有2种,一种是while循环,一种是for循环。
5.1.1 while循环
while循环是通过 条件判断 来控制循环次数的,和if有点类似
if 条件表达式:
代码块
while 条件表达式:
代码块(循环体)
现在来执行一段代码
if 0<10:
print("路飞开启5档") # 只会执行一次
while 0<10:
print("路飞开启5档") # 会一直执行!
if 在条件成立的时候 会进入if的代码区域
while 在条件成立时 也会进入while的代码区域,但while与if不同,会反复输出里面的代码
什么时候结束呢?当条件表达式为False的时候结束
观察这个式子发现True是绝对的不会改变,那就会永远执行下去,我们称这种循环为 死循环。
希望循环可以可控的,可以将 条件表达式 化为变量
a = 0
while a<10:
print('路飞开启5档')
# 依旧为死循环,因为条件还是不变啊,改为变量的目的就是让True一步一步靠近False
a = 0
while a<10:
print('路飞开启5档')
a = a + 1
# nice, 发现执行10次以后可以退出了
# 0 < 10
# 1 < 10
# 2 < 10
# ...
# 9 < 10
# 10 < 10 结束,无法进入循环体
解释:上述代码会打印10次消息,每次循环 a值增加1,直到a不再小于10时循环停止。
5.1.2 debug运行模式
所谓bug,就是程序中的错误。如果程序有错误,需要程序员排查问题,纠正错误。
所谓debug,就是调试模式运行,程序会在 断点 处停留,方便测试和分析
打断点:觉得哪里不清晰,可能出问题,打个断点停留分析
-
应用一: 输出 1~100
a = 1 while a<101: print(a) a+=1
-
应用二:计算1+2+3+4+…100
#需求:1-100数字累加和---1+2+3+4+5+....100 =结果,打印结果 """ 1.准备做加法运算的数据 1~100增量为1的数字 2.准备一个变量来保存将来运算的结果 3.循环来做加法运算 4.打印结果 5.验证结果 """ # 在循环之上,定义一个初始累计变量 c = 0 # 初始为0 a = 1 while a < 101: c = c + a a = a + 1 print(c) # c = 0 + 1 # c = 0 + 1 + 2 # c = 0 + 1 + 2 + 3 # c = 0 + 1 + 2 + 3 + 4 # c = 0+1+2+3+...99 + 100
-
应用三:输出1~100中的偶数
# 方法一,修改增量 循环50次 # a = 2 # while a <= 100: # print(a) # a += 2 # 方法二,从1~100中去筛选。 循环100次 a = 1 while a <= 100: if a % 2 == 0: print(a) a+=1
-
应用四:输出1~100中偶数的和
sum = 0 a = 1 while a <= 100: if a % 2 == 0: sum += a a+=1 print(sum)
5.1.3 for循环
for循环和while循环本质上没有太大区别,主要看运用场景
while适合不知道循环多少次,你可以使用条件来决定循环
for适合一开始就决定好了怎么循环,已经知道循环的次数
语法
for 变量名 in range(start,end):
循环体
start: 开始的数字
end:结束的数字后一个数字
range(start,end) 包头不包尾 [1,100)
# range里面可以只写1个,默认是从0开始, n就表示尾,
range(n)
- 输出1~100
for abc in range(1,101):
print(abc)
- 计算1+2+3+…100
k = 0
for x in range(1,101):
k += x
print(k)
补充for循环
for 变量名 in range(start,end,step=1):
循环体
应用三:输出1~100中的偶数
for x in range(2,101,2):
print(x)
- 案例:登录案例
# 账号:root 密码:123456
"""
程序运行的时候提示登录,输入账号和密码
如果正确,则提示登录成功
如果错误,则提示重新输入账号密码
"""
# 登录循环
while True:
username = input("请输入账号:")
password = input("请输入密码:")
if username == 'root' and password == '123456':
print("登录成功")
break
else:
print("登录失败,请重新输入")
print("欢迎来到 银行系统")
5.1.4 break和continue
主动控制循环退出的两种方式
break: 退出整个循环
continue: 退出本次循环,继续执行下一次循环
猴子吃10个苹果
- 猴子吃的过程中,吃到第3个苹果的时候,吃撑了吃饱了。吃苹果的循环就可以结束了。类比于break。 直接结束吃10个苹果的循环
- 猴子吃的过程中,吃到第3个苹果的时候,吃到了一只毛毛虫,扔掉。继续吃第4、5、…10个结束。类比于continue
for i in range(1,11):
if i == 4:
break
print(i)
print("=====================")
for i in range(1,11):
if i == 3:
continue
print(i)
5.1.5 循环else
if 条件布尔值:
True执行的代码
else:
False执行的代码
for i in range(1, 11):
if i == 5:
break
print(i)
else: # 循环 正常 结束后执行的代码
print("循环执行完毕执行的代码")
5.1.6 循环嵌套
for i in range(2):
for j in range(5):
print('hello world')
2*5 = 10次
每执行一次i,会执行5次hello,world
- 求3位数的所有可能性
- x 表示 百位
- y 表示 十位
- z 表示 个位
for x in range(1,10):
for y in range(0,10):
for z in range(0,10):
print(x,y,z)