'''
while循环三步走:
① 定义一个计数器,一般为i = 0或者i = 1
② 编写循环条件,如while i <= 100:
③ 在循环体内部(有缩进)更新计数器的值
举个栗子:循环输出100遍老婆大人,我错了
'''
# 定义一个计数器
i = 1
# 2、编写循环条件
while i <= 100:
# 4、执行要循环打印的代码
print('老婆大人,我错了!')
# 3、在循环体内部(有缩进),更新计数器的值
i += 1
(2)循环过程
初始状态
循环条件
循环体(要重复做的事情)
为下次循环作准备
'''
举个栗子:循环打印输出1-5
Debug工具有两步:
① 打断点
② 启动调试 => step over工具
使用Debug调试工具,了解while循环执行流程:
第一步:代码都是从上往下一行一行执行,所以先执行i = 1这一行代码
第二步:执行到while i <= 5这一行,对变量i进行判断,判断是否满足循环条件,如果满足,则继续向下执行,如果不满足,则
while循环执行结束,继续向下执行;由于 1 <= 5,所以执行到循环体的内部,输出i = 1,然后进行i += 1操作,此时i = 2
第三步:执行了i += 1以后,返回到while i <= 5位置,判断i是否小于5,2 <= 5,条件成立,继续往循环内部执行
....
直到i = 6时,条件不成立,则循环结束
'''
# 1、定义一个计数器
i = 1
# 2、编写一个循环条件
while i <= 5:
# 编写要循环输出的代码
print(i)
# 3、在循环体内部(缩进)更新计数器的值
i += 1
(3)案例
案例1:计算1-100累加和
'''
求1-100累加的结果,sum = 1 + 2 + 3 + 4 + 5 + ... + 97 + 98 + 99 + 100
sum = 5050
需求分析:
① 使用while循环输出1-100
② 定义一个变量,如sum = 0,在1-100循环的过程中,每循环1次往sum变量中追加一个元素值
i = 1,sum = 0 + 1
i = 2,sum = 0 + 1 + 2
i = 3,sum = 0 + 1 + 2 + 3
...
i = 100,sum = 0 + 1 + 2 + 3 ... + 97 + 98 + 99 + 100
'''
# 第一步:定义一个计数器
i = 1
# 第四步:定义变量,如sum = 0
sum = 0
# 第二步:编写循环条件
while i <= 100:
# 第五步:把每次得到的变量i的值累加到变量sum中
sum += i
# 第三步:在循环体内容更新计数器的值
i += 1
# 第六步:当所有循环(100次循环)结束后,输出最终结果sum
print(sum)
案例2:计算1-100偶数累加和
'''
偶数:在整数中,能被2整除的数字都称之为叫偶数;不能被整除的数字都称之为叫做奇数!
0 2 4 6 8 10都是偶数
1 3 5 7 9 11都是奇数
案例:求1-100之间所有偶数的和,sum = 2 + 4 + 6 + 8 + 10 ...
需求分析:
第一步:使用while循环输出1-100
第二步:判断哪些数字为偶数,如果是偶数则进行累加到变量sum = 0中
关键点:如何判断一个数字是偶数,判断这个数字是否能被2整除
数字变量 % 2 == 0,能被除尽
'''
# 1、定义一个计数器
i = 1
# 4、定义一个变量sum = 0,用于接收所有偶数的和
sum = 0
# 2、编写循环条件
while i <= 100:
# 5、如何获取1-100之间,哪些数字为偶数
if i % 2 == 0:
sum += i
# 3、在循环体内部更新计数器的值
i += 1
# 6、当循环结束,则输出最终的结果
print(sum)
'''
在循环中,有这样一个关键字叫做break,代表终止整个循环结构
'''
# 1、定义一个计数器
i = 1
# 2、编写循环条件
while i <= 5:
# 4、添加一个判断条件
if i == 4:
print('已经吃饱了,后面的苹果不吃了!')
break
print(f'正在吃第{i}个苹果!')
# 3、在循环体内部更新计数器的值
i += 1
输出
正在吃第1个苹果!
正在吃第2个苹果!
正在吃第3个苹果!
已经吃饱了,后面的苹果不吃了!
(3)continue关键字
continue:表示退出当前一次循环继而执行下一次循环代码
'''
在循环中,有这样一个关键字叫做continue,代表中止本次正在执行的循环结构,继而进入下一次循环
'''
# 1、定义一个计数器
i = 1
# 2、编写循环条件
while i <= 5:
# 4、添加一个判断条件
if i == 3:
print('不好,有大虫,这个苹果不吃了!')
# 特别注意:在while循环中,continue关键字之前一定要手工更新一下计数器,否则就是一个死循环
i += 1
continue
print(f'正在吃第{i}个苹果!')
# 3、在循环体内部更新计数器的值
i += 1
'''
什么是死循环呢?记住:一个通过自身控制无法终止的循环结构就被称之为死循环!
死循环产生的两种场景:
① 因为程序编写错误造成的死循环,目前遇到两种情况:
while循环三步走,丢弃了最后一步,更新计数器,则会造成死循环
在while循环中,使用continue关键字之前没有更新计数器的值,也会造成死循环
② 因为业务的需要,人为设计的死循环
基本语法:
while True:
需要一直被执行的代码,可以缩进放在此位置
特别说明:死循环本身没有任何意义,如果想让其有意义必须要结合input()输入语句
'''
while True:
print('你是风儿我是沙,缠缠绵绵到天涯...')
'''
在Python代码中,循环结构一共有两大关键字:while循环 和 for循环
对于循环次数已知的情况,适合使用while循环(因为while循环有计数器)
对于循环次数未知的情况,如数据容器(字符串、列表、元组、字典、集合统称数据容器)的遍历,推荐使用for循环
所以for循环其实是专门用于实现对数据容器的遍历操作
什么是遍历操作?简单来说就是把数据容器中的数据一个一个查询出来的过程,我们就称之为遍历!
基本语法:
for 临时变量 in 数据容器:
print(临时变量)
执行原理:
① 首先判断数据容器中有多少个元素,则for循环就要循环多少次
② 每次循环时,系统会自动将遍历得到的字符放入临时变量(临时变量一般起名叫做i)中,打印这个变量就相当于输出字符串中的
每一个字符
'''
str1 = 'mynameisly'
for i in str1:
print(i)
'''
问题:for循环也是循环,能不能实现固定循环多少次,比如循环10次
答:默认情况下,for循环只能用于遍历数据容器。但是如果一定想要达到这个效果,可以使用range()方法
range(5) 等价于 range(0, 5, 1),从0开始,到5结束(不包含5),每次前进1步
range(1, 11, 2) 生成一个容器,从1开始,每次前进2步,1 3 5 7 9
'''
# 使用for循环 + range()生成从0到4
for i in range(5): # range(0, 5, 1)
print(i)
输出
01234
(3)案例
案例1:计算1-100累加和
'''
需求:使用for循环求1-100累加的和
'''
# 1、定义一个变量sum = 0,用于接收1-100累加的结果
sum = 0
# 2、编写一个for循环,从1循环到100
for i in range(1, 101): # 只顾不顾尾
sum += i
# 3、当循环结束,累加结束
print(sum)
案例2:计算1-100偶数累加和
'''
观察偶数特点:
① 能被2整除
② 相邻的偶数与偶数之间,差2位,2 4 6 8 10 12 14 ...
'''
# 第一种解法
# sum = 0
# for i in range(1, 101):
# if i % 2 == 0:
# sum += i
# print(sum)
# 第二种解法
sum = 0
for i in range(2, 101, 2): # 2 4 6 8
sum += i
print(sum)
6、for中的continue与break
(1)break与continue
break和continue是循环中满足一定条件退出循环的两种不同方式
(2)break关键字
break:表示终止整个循环结构
'''
break和continue是循环中满足一定条件退出循环的两种不同方式
记住:
break:满足一定条件,则终止整个循环结构
continue:满足一定条件,则中止本次循环,继而进入下一次循环
'''
# 1、定义一个字符串
str1 = 'mynameisly'
# 2、需求:遇到字符e则终止整个循环结构
for i in str1:
# 添加一个判断条件,判断i是否等于字符'e'
if i == 'e':
print('遇到字符e则终止整个循环结构')
break
print(i)
(3)continue关键字
continue:表示退出当前一次循环继而执行下一次循环代码
'''
break和continue是循环中满足一定条件退出循环的两种不同方式
记住:
break:满足一定条件,则终止整个循环结构
continue:满足一定条件,则中止本次循环,继而进入下一次循环
'''
# 1、定义一个字符串
str1 = 'mynameisly'
# 2、需求:遇到字符e则中止本次循环,继而进入下一次循环
for i in str1:
# 添加一个判断条件,判断i是否等于字符'e'
if i == 'e':
print('遇到字符e则中止本次循环,继而进入下一次循环')
continue # 强调:for循环中的continue不需要更新计数器!
print(i)
(4)案例
'''
案例:用for循环实现用户登录
① 输入账号和密码
② 判断账号和密码是否正确(username='admin',password='admin888'),必须要同时匹配
③ 登录仅有三次机会,超过3次会报错
④ 如果用户登录失败,则提示用户名错误还是密码错误
⑤ 获取剩余的登录次数
'''
# 第五步:添加一个变量
trycount = 0
# 第一步:编写一个循环,只能循环3次
for i in range(3):
# 第六步:手工更新登录次数
trycount += 1
# 第二步:接收账号与密码
username = input('请输入您的账号:')
password = input('请输入您的密码:')
# 第三步:判断账号是否正确
if username == 'admin':
# 第四步:在账号正确的基础上,在判断密码是否正确
if password == 'admin888':
print('恭喜您,登录成功')
break
else:
print('很抱歉,您的密码输入有误,请重新输入!')
print(f'您还剩余{3-trycount}次登录机会!')
else:
print('很抱歉,您的账号输入有误,请重新输入!')
print(f'您还剩余{3 - trycount}次登录机会!')
7、for循环中的else结构
(1)基本语法
for 临时变量 in 序列:
重复执行的代码
...
else:
循环正常结束之后要执行的代码
'''
在Python中,while循环/for循环都可以结合else语句结构,基本语法:
while 循环条件:
pass
else:
当循环正常结束后,要执行的代码!
for 临时变量 in 数据容器:
pass
else:
当循环正常结束后,要执行的代码!
问题1:什么情况代表正常结束?什么情况又是非正常结束?
答:在整个循环过程中,只要没有执行break关键字,循环都代表正常结束!
问题2:当循环正常结束后,else语句中的代码会被执行多少次?
答:只会被执行1次
'''
# 1、定义一个字符串
str1 = 'mynameisly'
# 2、使用for循环对str1进行遍历操作
for i in str1:
# 3、添加一个判断条件,如果字符 == 'e',终止整个循环
if i == 'e':
print('遇到字符e则终止整个循环结构')
break
print(i)
else:
print('当循环正常结束后,else语句中的缩进代码会自动被执行1次!')
(2)案例
'''
案例:用for循环实现用户登录
① 输入账号和密码
② 判断账号和密码是否正确(username='admin',password='admin888'),必须要同时匹配
③ 登录仅有三次机会,超过3次会报错
'''
# 第一步:编写一个循环,只能循环3次
for i in range(3): # 0 1 2
# 第二步:提示用户输入要登录的账号与密码
username = input('请输入您的账号:')
password = input('请输入您的密码:')
# 第三步:对账号与密码进行判断,判断账号是否等于admin且密码是否等于admin888
if username == 'admin' and password == 'admin888':
print('恭喜您,登录成功!')
break
else:
print('很抱歉,您的账号或密码输入有误,请重新输入!')
else:
print('很抱歉,您的3次登录机会已用完,请10分钟以后再试!')