一、Python中循环的介绍
1、什么是循环
举例生活场景,上班,抖音模仿,歌曲循环
有条件的重复做一件事
2、循环的作用
举例生活场景,流水线
让代码高效运行
3、循环的种类
python中,循环分为两种:while循环和for循环
Q: while循环和for循环怎么选择
A:
1、已知循环次数,一般用while循环
2、未知循环次数,一般用for循环
二、while循环语法和应用
1、while循环语法
# 1、定义一个计数器并初始化
i = 0
# 2、编写while循环结构
while 循环条件:
循环体
# 3、在循环体内更新计数器
i += 1
总结:循环三步走
1、定义一个计数器并初始化
2、编写while循环结构
3、在循环体内更新计数器
类似销售,情人节当天,海王的邀约
案例1:打印100次情人节快乐
# 1、定义并初始化计数器
i = 1
# 2、编写循环结构
while i < 101:
print("情人节快乐,出来玩")
print("打印第%d次" % i)
# 3、更新计数器
i += 1
2、while循环的执行流程
使用Debug调试工具查看while循环的运行流程
3、while循环案例
案例2:使用while循环求1至100的和
"""
案例2:使用while循环求1至100的和
分析:
"""
# 1、定义并初始化计数器
i = 1
# 4、定义一个变量接受最终结果
result = 0
# 2、编写循环结构
while i < 101:
result += i
# 3、更新计数器
i += 1
print("使用while循环求1至100的和的结果为", result)
案例3:使用while循环求1至100之间所有偶数的和
# 1、定义并初始化计数器
i = 1
# 4、定义一个变量接受最终结果
result = 0
# 2、编写循环结构
while i < 101:
# 6、筛选出所有偶数
if i % 2 == 0:
# 5、循环累加变量i
result += i
# 3、更新计数器
i += 1
print("使用while循环求1至100的和的结果为", result)
三、循环中两大关键词
1、break、continue含义
break:表示终止并跳出本次循环
continue:表示中止本次循环,继续开始下一次循环
举例:一共同时追5个妹子约会,约完第一个,约第二个…,这里"约妹子"的动作是不是重复执行? 情况一:如果约的过程中,约完第三个追到了,则不需要再约第4个和第5个约会,即是约约会的动作停 止,这里就是break控制循环流程,即终止此循环。 情况二:如果约会的过程中,约到第三个妹子直接拒绝...,是不是这个妹子就不约了,开始约第四个妹子,这里就是continue控制循环流程,即退出当前一次循环继而执行下一次循环代码。
工作销售同理,爱情事业同样逻辑搞定,爱情事业双丰收
2、break关键字应用
案例4:追妹子进度之break
""" 案例4:追妹子进度 分析: """ # 1、定义并初始化计数器 i = 0 # 2、编写循环结构 while i < 5: if i == 4: print("约会成功,直接酒店") break print(f"正在追第{i}个妹子") # 3、更新计数器 i += 1
3、continue关键字应用
案例5:追妹纸进度之continue
""" 案例5:追妹子进度 分析: """ # 1、定义并初始化计数器 i = 0 # 2、编写循环结构 while i < 5: if i == 3: i += 1 print("妹子拒绝,放弃,直接下一个") continue print(f"正在追第{i}个妹子") # 3、更新计数器 i += 1
4、死循环概念
在程序中无法靠自身终止的程序成为死循环
常见写法:
while True: print("一直打印这句话")
5、while循环案例
案例6:猜数字游戏
# 4、导入随机数模块 import random # 1、定义并初始化计数器 i = 0 # 5、利用random模块中randint()方法随机生成1-10之间的数 random_num = random.randint(1, 10) # 2、编写循环结构 while i < 3: # 6、用户输入数字 user_num = int(input("请输入一个1-10之间的数")) # 7、判断比较两者输入 if user_num == random_num: print("答对了,心有灵犀,我们在一起吧") if user_num > random_num: print("猜大了,再给你一次机会哟") if user_num < random_num: print("猜小了,再给你一次机会哟") # 3、更新计数器 i += 1
四、循环嵌套
1、循环嵌套引入
故事梗概:有天女朋友又生气了,惩罚:说3遍“老婆大人, 我错了”,这个程序是不是循环即可?但如果女朋友说:还要刷今天晚饭的碗,这个程序怎么书写?
# 初始化计数器 i = 1 # 编写循环条件 while i <= 3: print('老婆大人,我错了') # 更新计数器 i += 1 print('刷今天的碗')
但如果女朋友还是生气,把这套惩罚要连续3天都执行,有如何书写程序?
# 初始化外层计数器 j = 1 # 编写外层循环条件 while j <= 3: # 初始化计数器 i = 1 # 编写循环条件 while i <= 3: print('老婆大人,我错了') # 更新计数器 i += 1 print('刷今天的碗') # 更新外层计数器 j += 1
2、循环嵌套的语法
# 第一步:初始化外层循环计数器 i = 1 # 第二步:编写外层循环的条件 while i <= 3: # 第四步:初始化内层循环计数器 j = 1 # 第五步:编写内层循环的条件 while j <= 3: 循环体代码 # 第六步:更新内层循环计数器 j += 1 # 第三步:更新外层循环计数器 i += 1
3、循环嵌套的执行流程
在while循环嵌套的执行过程中,外层循环1次,内层循环N次
循环嵌套的总次数 = 外层循环次数 * 内层循环次数
想具体了解while嵌套循环的执行流程,建议使用Debug调试。
4、循环嵌套的几个案例
案例1:打印直角三角形,特征:一共有5行,第1行,有1列。第2行,有2列,第3,有3列。
# 定义外层循环计数器 i = 1 # 编写外层循环的循环条件 while i <= 5: # 定义内层循环计数器 j = 1 # 编写内层循环的循环条件 while j <= i: print('* ', end='') j += 1 print('') # 更新外层循环计数器 i += 1
1、for循环基本语法
for循环结构主要用于(序列 => 字符串、列表、元组、集合以及字典)类型数据的遍历(循环)操作
另外当循环次数未知的情况,建议使用for循环。
语法:
for 临时变量 in 序列: 重复执行的代码1 重复执行的代码2
案例:使用for循环遍历字符串"iloveyou"
str1 = 'iloveyou' for i in str1: print(i)
使用Debug调试以上代码可知:for循环功能非常强大,可以自动判断序列的长度,长度为多少,则for循环就循环多少次。每次循环时,系统会自动将序列中的每个元素赋值给变量i,赋值完成后,for循环内部会自动更新计数器,向后移动一位,继续循环,直至元素全部循环结束。
2、range方法(函数)
Python2 range() 函数返回的是列表,而在Python3中 range() 函数返回的是一个可迭代对象(类型是对象),而不是列表类型, 所以打印的时候不会打印列表。(由于我们还未学习面向对象,为了方便大家理解,你可以简单的将其理解为一个序列结构)
主要作用:用于生成一段连续的内容,从0到9
基本语法:
range(stop) range(start, stop[, step]) start: 计数从 start 开始。默认是从 0 开始。例如range(5)等价于range(0, 5); stop: 计数到 stop 结束,但不包括 stop。例如:range(0,5) 是 [0, 1, 2, 3, 4] 没有 5 step:步长,默认为1。例如:range(0,5) 等价于 range(0, 5, 1)
range有一个口诀:顾头不顾尾,包含头部信息,但是不包含尾部信息,如range(10),则返回0~9之间的序列,又比如range(0, 5)代表返回0 ~ 4之间的序列。
案例:for循环与range方法,使用for循环,循环5次
for i in range(5): print(i)
3、for循环案例
案例1:使用for循环,求1 ~ 100之间所有偶数的和
# 定义一个变量,用于接收1~100之间所有偶数的和 result = 0 # 从1开始循环,循环100次 for i in range(1, 101): if i % 2 == 0: result += i print(f'1~100之间所有偶数的和为{result}')
4、for循环嵌套
所谓for循环嵌套,就是一个for循环里面嵌套另外一个for循环的写法。
基本语法:
# 外层循环 for i in 序列1: # 内层循环 for j in 序列2: 循环体
案例:使用for循环嵌套实现打印九九乘法表
分析:外层循环主要用于控制循环的行数,内层循环用于控制列数
for i in range(1, 10): for j in range(1, i+1): print(f'{j} x {i} = {i * j}', end=' ') # 打印换行符 print('')
六、while循环与for循环中的else结构
1、为什么需要在while循环中添加else结构
循环可以和else配合使用,else下方缩进的代码指的是当循环正常结束之后要执行的代码。
强调:'正常结束',非正常结束,其else中的代码时不会执行的。(如遇到break的情况)
2、while循环中else的基本语法
需求:女朋友生气了,要惩罚:连续说5遍“老婆大人,我错了”,如果道歉正常完毕后女朋友就原谅我了,这个程序怎么写?
# 初始化计数器 i = 0 # 编写循环条件 while i < 5: print('老婆大人,我错了') # 更新计数器 i += 1 # 循环结束后,女朋友就原谅我了 print('好开森,女朋友原谅我了...')
思考: 这个print是不是没有循环也能执行?那我们应该如何解决呢?
答:使用while...else结构
# 初始化计数器 i = 0 # 编写循环条件 while i < 5: print('老婆大人,我错了') # 更新计数器 i += 1 # 循环结束后,女朋友就原谅我了 else: print('好开森,女朋友原谅我了...')
3、break关键字对while...else结构的影响
需求:女朋友生气,要求道歉5遍:老婆大人,我错了。道歉到第三遍的时候,媳妇埋怨这一遍说的不真诚,是不是就是要退出循环了?这个退出有两种可能性:
① 更生气,不打算原谅,也不需要道歉了,程序如何书写?
② 只一遍不真诚,可以忍受,继续下一遍道歉,程序如何书写?
# 初始化计数器 i = 0 # 编写循环条件 while i < 5: if i == 2: print('这遍说的不够真诚') break print('老婆大人,我错了') # 更新计数器 i += 1 # 循环结束后,女朋友就原谅我了 else: print('好开森,女朋友原谅我了...')
由运行结果可知,如果我们在while循环中,使用了break,一旦break语句执行了,则else语句则不会输出。
4、continue关键字对while...else结构的影响
# 初始化计数器 i = 0 # 编写循环条件 while i < 5: if i == 2: i += 1 print('这遍说的不够真诚') continue print('老婆大人,我错了') # 更新计数器 i += 1 # 循环结束后,女朋友就原谅我了 else: print('好开森,女朋友原谅我了...')
5、for循环结构中的else结构
基本语法:
for 临时变量 in 序列: 循环体 else: 当for循环正常结束后,返回的代码
6、break关键字对for...else结构的影响
str1 = 'iloveyou' for i in str1: if i == 'e': print('遇e不打印') break print(i) else: print('循环正常结束之后执行的代码')
7、continue关键字对for...else结构的影响
str1 = 'itheima' for i in str1: if i == 'e': print('遇e不打印') continue print(i) else: print('循环正常结束之后执行的代码')
七、小海龟会画画
1、小海龟模块
在Python3版本中,新增加了一个模块叫做turtle(海龟),专门用于绘制图形图像
2、模块如何使用
① 导入模块 import turtle ② 使用turtle模块中已经定义好的方法 turtle.forward(数值) # 从左向右,绘制一条指定长度的横线(像素) 1980 * 1024
3、手绘一条直线
import turtle import time # 绘制一条100像素的横线 turtle.forward(100) # 调整直线的方向 turtle.right(144) # 绘制一条100像素的横线 turtle.forward(100) # 休眠10s time.sleep(10)
作业:
1、使用for循环实现用户名+密码认证
案例:用for循环实现用户登录
① 输入用户名和密码
② 判断用户名和密码是否正确(username='admin',password='admin888')
③ 登录仅有三次机会,超过3次会报错
分析:用户登陆情况有3种:
① 用户名错误(此时便无需判断密码是否正确) -- 登陆失败
② 用户名正确 密码错误 --登陆失败
③ 用户名正确 密码正确 --登陆成功
# 定义变量,用于记录登录次数 trycount = 0 # 循环3次,因为超过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}次输入机会')
2、使用while嵌套循环打印 9 x 9乘法表
第一步:使用while嵌套循环打印9行的直角三角形 第二步:把小星星换成具体的数值
# 初始化外层循环计数器 i = 1 # 编写外层的循环条件 while i <= 9: # 初始化内层循环计数器 j = 1 # 编写内层的循环条件 while j <= i: print(f'{j} x {i} = {i * j}', end=' ') # 更新内层循环的计数器 j += 1 print('') # 更新外层循环计数器 i += 1
4、使用turtle模块+for循环绘制五角星
import turtle import time # 循环5次 turtle.pencolor('red') for i in range(5): turtle.forward(100) turtle.right(144) time.sleep(10)
1、面试题
有一物,不知其数,三三数之余二,五五数之余三,七七数之余二,问物几何?
白话文:有一个数字,不知道具体是多少,用3去除剩2,用5去除剩3,用7去除剩2个,问这个数是多少?1 ~ 100以内的整数
while循环:
# 初始化计数器
i = 1
# 编写循环条件
while i <= 100:
# 判断
if i % 3 == 2 and i % 5 == 3 and i % 7 == 2:
print(i)
# 更新计数器
i += 1
for循环:
for i in range(1, 101):
# 判断
if i % 3 == 2 and i % 5 == 3 and i % 7 == 2:
print(i)
2、报数字(数7)
一些同学从1开始报数,当需要报出的数字尾数是7或者该数字是7的倍数时,则该同学跳过这个数字,不进行报数。所有同学都参与游戏后,游戏结束。如输入学生数量为50,游戏结束后,报数的同学数量为39。
分析:如何判断某个数字尾数为7以及如何判断某个数字是7的倍数
① 如何判断数字尾数为7,i % 10 == 7 17 % 10 = 1 余 7 27 % 10 = 2 余 7
② 如何判断数字是7的倍数,i % 7 == 0
# 定义一个变量n,用于获取学生数量
n = int(input('请输入学生的数量:'))
# 定义一个变量,用于统计有多少人报数了
count = 0
# 开始循环
for i in range(1, n+1):
# 判断数字尾数为7
if i % 10 == 7:
continue
# 判断数值是7的倍数
if i % 7 == 0:
continue
# 如果不满足以上if条件,则对count进行+1操作
count += 1
print(f'{n}个同学,共报数{count}人')