While循环、Range函数、For循环

一、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}人')

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

TheWanderers

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值