应用:循环轮播图 最基础、最核心
循环:周而复始,谓之循环 (为了代码尽量不要重复)
索引定义
while 表达式(只要结果为布尔值即可):
循环体
通过条件的不断变化,从而确定循环体是否继续执行
例:


死循环(无限循环)
while Ture: (非0即为真)
循环体
continue:终端本次循环,直接进入下一次循环

break:直接结束循环,遇见break,直接全部gameover

例:
输出0-100
- index = 0
- while index <= 100:
- print(index)
- index += 1
让其在输出49后终止循环
- index = 1
- while index <= 100:
- if index == 50:
- break #直接跳出循环
- print(index)
- index += 1
-
- index = 1
- while index <= 100: #continue会使代码回到这
- if index == 50:
- continue #回到循环判断条件处
- print(index)
- index += 1 #本代码会输出0-49后卡住,因为陷入死循环
-
- index = 0
- while index < 100: #注意代码这边改为 < 无 =
- index += 1 #顺序改变,结果会输出0-49,51-100(无50)
- if index == 50:
- continue
- print(index)
- print("循环结束") #只会在最后执行一次(只有在while后且缩进的才归其管)
- while condition:
- 代码
- else:
- 代码
else后面的代码:当循环正常结束之后要执行的代码
- 例:
- i = 1
- while i <= 5:
- if i == 3:
- print('不真诚')
- i += 1
- break #直接跳出循环包括else
- print('我错了,思密达~')
- i += 1
- else:
- print('她原谅我了') #不打印,循环未正常结束
-
-
- 结果:
- 我错了,思密达~
- 我错了,思密达~
- 不真诚
-
-
-
- i = 1
- while i <= 5:
- if i == 3:
- print('不真诚')
- i += 1
- continue #循环继续进行,只暂停一次循环
- print('我错了,思密达~')
- i += 1
- else:
- print('她原谅我了')
-
-
- 结果:
- 我错了,思密达~
- 我错了,思密达~
- 不真诚
- 我错了,思密达~
- 我错了,思密达~
- 她原谅我了
只有代签执行完毕了,才会被原谅
中途break,else下边缩进的代码不会执行
中途continue,else下边缩进的代码会执行
规划好条件
练习:求1-100的累加和(终止条件 1-100)
- count = 0
- index = 0
- while index <= 100:
- count += index
- index += 1
- print(count)
-
- 结果:
- 5050
举例:
坚持每天送10朵花100天,然后就可以表白成功
- i = 1
- while i <= 7:
- print(f"今天是第{i}天,准备表白思密达~")
- j = 1
- while j <= 10:
- print(f"送她第{j}朵花花")
- j += 1
- i += 1
- print(f"坚持到{i-1}天表白成功")
-
- 结果:
- 。。。
- 送她第9朵花花
- 送她第10朵花花
- 今天是第6天,准备表白思密达~
- 送她第1朵花花
- 送她第2朵花花
- 送她第3朵花花
- 送她第4朵花花
- 送她第5朵花花
- 送她第6朵花花
- 送她第7朵花花
- 送她第8朵花花
- 送她第9朵花花
- 送她第10朵花花
- 今天是第7天,准备表白思密达~
- 送她第1朵花花
- 送她第2朵花花
- 送她第3朵花花
- 送她第4朵花花
- 送她第5朵花花
- 送她第6朵花花
- 送她第7朵花花
- 送她第8朵花花
- 送她第9朵花花
- 送她第10朵花花
- 坚持到7天表白成功
内层添加break
- i = 1
- while i <= 7:
- print(f"今天是第{i}天,准备表白思密达~")
- j = 1
- while j <= 10:
- print(f"送她第{j}朵花花")
- if j == 2:
- break #只结束包含break最近(里)的一个循环
- j += 1
- i += 1
- print(f"坚持到{i-1}天表白成功")
-
-
- 结果: #外层循环不结束
- 今天是第1天,准备表白思密达~
- 送她第1朵花花
- 送她第2朵花花
- 今天是第2天,准备表白思密达~
- 送她第1朵花花
- 送她第2朵花花
- 今天是第3天,准备表白思密达~
- 送她第1朵花花
- 送她第2朵花花
- 今天是第4天,准备表白思密达~
- 送她第1朵花花
- 送她第2朵花花
- 今天是第5天,准备表白思密达~
- 送她第1朵花花
- 送她第2朵花花
- 今天是第6天,准备表白思密达~
- 送她第1朵花花
- 送她第2朵花花
- 今天是第7天,准备表白思密达~
- 送她第1朵花花
- 送她第2朵花花
- 坚持到7天表白成功
练习:
打印:
*
**
***
****
*****
- i = 1
- n = int(input("请输入打印的层数:"))
- while i <= n:
- j = 1
- while j <= i: #打印一行
- print("*", end="") #end去除换行
- j += 1
- print() #一行结束换行
- i += 1
-
-
- 结果:
- 请输入打印的层数:5
- *
- **
- ***
- ****
- *****
练习:
99乘法表
- i = 1
- while i <= 9: #控制列数
- j = 1
- while j <= i: #打印一行
- print(f"{i}*{j}={i*j}\t",end="" ) #\t水平制表符(相当于8个空格)
- j += 1 #end取消换行
- i += 1
- print()
-
- 结果:
- 1*1=1
- 2*1=2 2*2=4
- 3*1=3 3*2=6 3*3=9
- 4*1=4 4*2=8 4*3=12 4*4=16
- 5*1=5 5*2=10 5*3=15 5*4=20 5*5=25
- 6*1=6 6*2=12 6*3=18 6*4=24 6*5=30 6*6=36
- 7*1=7 7*2=14 7*3=21 7*4=28 7*5=35 7*6=42 7*7=49
- 8*1=8 8*2=16 8*3=24 8*4=32 8*5=40 8*6=48 8*7=56 8*8=64
- 9*1=9 9*2=18 9*3=27 9*4=36 9*5=45 9*6=54 9*7=63 9*8=72 9*9=81
基础语法:
for 临时变量 in 待处理数据集:
循环满足条件时执行的代码
轮询机制
对一批内容进行挨个处理---待办事项逐个完成的机制
遍历循环,一次取出
无法定义循环条件,理论上,无法构建无限循环

- 例:
- #while循环 缺点:不能对无索引下标的容器进行迭代(例:集合)
- list = [3,4,5,6]
- i = 0 #i作为索引下标
- while i < len(list):
- print(list[i])
- i +=1
-
-
- #for遍历
- for i in list: #i为临时变量,从list中取出元素依次放入i中
- print(i)
-
- 结果:
- 3
- 4
- 5
- 6
- 3
- 4
- 5
- 6
-
- 例:
- #for既能遍历有序的容器,也能遍历无须的
- set_01 = {1,2,3,"l love you"}
- for i in set_01:
- print(i)
-
- 结果:
- 1
- 2
- 3
- l love you
练习:
”l love you“ 判断是否有o几个
- name = 'l love you'
- count = 0
- for i in name:
- if i == "o":
- count += 1
- print(f"一共有{count}个o")
-
-
- 结果:
- 一共有2个o
不止能迭代容器,还可以完成普通循环

range语句:获得一个简单的数字序列(生成一系列连续的整数)
格式:
range(start,end,step)
- 例:
- range(num) :[0,num) (左闭右开,序列0 - num-1)
-
- 从0开始,到5结束的数字序列,不包含5本身
- range(5)===>[0,1,2,3,4] 默认从0开始
- range(1,5)===>[1,2,3,4] 从1-5,不包含5
- range(1,10,2)===>[1,3,5,7,9]第三个数字代表数字之间的步长,不含10本身
- 特别:
- for i in range(100,0,-2): #step为复数,注意start与end也须反过来
- print(i)
-
- 结果:
- 100
- 98
- 96
- ...
- 10
- 8
- 6
- 4
- 2

练习:
1、求1-100的累加和(终止条件 1-100)
- 例:
- sum = 0
- for i in range(0,101):
- sum += i
- print(sum)
-
- 结果:
- 5050
2、

- 例:
- num = int(input("请输入遍历终止值:"))
- count = 0
- for i in range(1, num+1):
- if i % 2 == 0:
- count += 1
- print(f"有{count}个偶数")
-
- 结果:
- 请输入遍历终止值:5
- 有2个偶数
临时变量在编程规范上,作用范围,只限定在for循环内部
实际上,for循环外部可以访问到,编程规范上,是不允许,不建议的
例:(不规范)

想要使用,在循环之前将该变量定义
- 例:
- for i in range(5):
- print(i)
- print(i)
-
- 结果:
- 0
- 1
- 2
- 3
- 4
- 4
-
-
-
- i = 2
- for i in range(5):
- print(i)
- print(i) #所以建议不要用到临时变量
-
- 结果:
- 0
- 1
- 2
- 3
- 4
- 4
空格缩进

练习:
for循环打印九九乘法表

- i = 1
- while i < 10:
- j = 1
- while j < i+1:
- print(f'{j}* {i} = {i * j}\t', end=' ')
- j += 1
- i += 1
- print()
-
-
-
- 1*1=1
- 2*1=2 2*2=4
- 3*1=3 3*2=6 3*3=9
- 4*1=4 4*2=8 4*3=12 4*4=16
- 5*1=5 5*2=10 5*3=15 5*4=20 5*5=25
- 6*1=6 6*2=12 6*3=18 6*4=24 6*5=30 6*6=36
- 7*1=7 7*2=14 7*3=21 7*4=28 7*5=35 7*6=42 7*7=49
- 8*1=8 8*2=16 8*3=24 8*4=32 8*5=40 8*6=48 8*7=56 8*8=64
- 9*1=9 9*2=18 9*3=27 9*4=36 9*5=45 9*6=54 9*7=63 9*8=72 9*9=81
练习:
# 打印几层:5 # * # ** # *** # **** # *****
- layer = int(input("请输入打印的层数:"))
- for i in range(1, layer+1):
- #先打印空格
- space_nums = layer - i #空格数 = 总行数 - 第几行(即 * 数)
- for j in range(space_nums): #或者(1,space_nums+1),两相同
- print(" ", end="")
- #打印 *
- for j in range(i): #j临时变量,两个j互不影响
- print("*", end="")
- print()
-
-
- 结果:
- 请输入打印的层数:5
- *
- **
- ***
- ****
- *****
continue:终端本次循环,直接进入下一次循环

break:直接结束循环,遇见break,直接全部gameover

循环综合案例

- import random
- money = 10000
- for i in range(1, 21):
- score = random.randint(1, 10) #1-10的随机数生成
- if score < 5:
- print(f"员工{i}绩效为{score},不发工资")
- continue
- # 判断余额
- if money >= 1000:
- money -= 1000
- print(f"员工{i}发放工资1000,公司账户剩余{money}")
- else:
- print(f"当前余额剩余{money},不发了,下个月吧")
- break
-
- 结果:
- 员工1绩效为3,不发工资
- 员工2发放工资1000,公司账户剩余9000
- 员工3绩效为1,不发工资
- 员工4发放工资1000,公司账户剩余8000
- 员工5发放工资1000,公司账户剩余7000
- 员工6发放工资1000,公司账户剩余6000
- 员工7发放工资1000,公司账户剩余5000
- 员工8绩效为1,不发工资
- 员工9发放工资1000,公司账户剩余4000
- 员工10发放工资1000,公司账户剩余3000
- 员工11绩效为1,不发工资
- 员工12发放工资1000,公司账户剩余2000
- 员工13发放工资1000,公司账户剩余1000
- 员工14绩效为4,不发工资
- 员工15绩效为1,不发工资
- 员工16发放工资1000,公司账户剩余0
- 当前余额剩余0,不发了,下个月吧

同while......else
else后面的代码:当循环正常结束之后要执行的代码·
中途break,else下边缩进的代码不会执行
中途continue,else下边缩进的代码会执行