当前位置: 代码迷 >> 综合 >> While循环、Range函数、For循环
  详细解决方案

While循环、Range函数、For循环

热度:37   发布时间:2023-10-19 19:42:41.0

一、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、循环累加变量iresult += 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("约会成功,直接酒店")breakprint(f"正在追第{i}个妹子")
?# 3、更新计数器i += 1
?

3、continue关键字应用

案例5:追妹纸进度之continue

"""
案例5:追妹子进度
分析:
"""
# 1、定义并初始化计数器
i = 0
?
# 2、编写循环结构
while i < 5:if i == 3:i += 1print("妹子拒绝,放弃,直接下一个")continueprint(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 += 1print('刷今天的碗')# 更新外层计数器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 += 1print('')# 更新外层循环计数器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('这遍说的不够真诚')breakprint('老婆大人,我错了')# 更新计数器i += 1
# 循环结束后,女朋友就原谅我了
else:print('好开森,女朋友原谅我了...')

由运行结果可知,如果我们在while循环中,使用了break,一旦break语句执行了,则else语句则不会输出。

4、continue关键字对while...else结构的影响

# 初始化计数器
i = 0
# 编写循环条件
while i < 5:if i == 2:i += 1print('这遍说的不够真诚')continueprint('老婆大人,我错了')# 更新计数器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不打印')breakprint(i)
else:print('循环正常结束之后执行的代码')

7、continue关键字对for...else结构的影响

str1 = 'itheima'
for i in str1:if i == 'e':print('遇e不打印')continueprint(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('恭喜你,登录成功')breakelse: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 += 1print('')# 更新外层循环计数器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):# 判断数字尾数为7if i % 10 == 7:continue# 判断数值是7的倍数if i % 7 == 0:continue# 如果不满足以上if条件,则对count进行+1操作count += 1
print(f'{n}个同学,共报数{count}人')

  相关解决方案