while循环的基础应用

  • while的条件需得到布尔类型,True表示继续循环,False表示结束循环
  • 需要设置循环终止的条件,如i+=1配合i<100,就能确保100次后停止,否则将无限循环
  • 空格缩进和if判断一样,都需要设置

Demo

1
2
3
4
5
6
7
"""
演示while循环的基础应用
"""
i = 0
while i < 5:
print("小美,我喜欢你")
i += 1

运行结果

1
2
3
4
5
小美,我喜欢你
小美,我喜欢你
小美,我喜欢你
小美,我喜欢你
小美,我喜欢你

案例-求1-100的和讲解

需求:通过while循环,计算从1累加的100的和

提示:

  1. 终止条件不要忘记,设置确保while循环100次
  2. 确保累加的数字,从1开始,到100结束
1
2
3
4
5
6
7
8
9
"""
演示while循环基础练习题:求1-100的和
"""
sum = 0
i = 1
while i <= 100:
sum += i
i += 1
print(f"1-100累加的和是:{sum}")

运行结果

1
1-100累加的和是:5050

while循环猜数字案例

Demo

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
"""
演示while循环的基础案例 - 猜数字
"""
# 获取范围在1-100的随机数字
import random
num = random.randint(1,100)
# 定义一个变量,记录总共猜测了多少次
count = 0
#通过一个布尔类型的变量,做循环是否继续的标记
flag = True
while flag:
guess_num = int(input("请输入你猜测的数字:"))
count += 1
if guess_num == num:
print("猜中了")
# 设置为False就是终止循环的条件
flag = False
else:
if guess_num > num:
print("你猜的大了")
else:
print("你猜的小了")
print(f"你总共猜测了{count}次")

运行结果

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
请输入你猜测的数字:50
你猜的大了
请输入你猜测的数字:25
你猜的小了
请输入你猜测的数字:37
你猜的小了
请输入你猜测的数字:42
你猜的小了
请输入你猜测的数字:45
你猜的小了
请输入你猜测的数字:48
你猜的大了
请输入你猜测的数字:47
猜中了
你总共猜测了7

while循环的嵌套应用

  • 同判断语句的嵌套一样,循环语句的嵌套,要注意空格缩进
  • 基于空格缩进来决定层次关系
  • 注意条件的设置,避免出现无限循环

Demo

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
今天是第1天,准备表白......
送给小美第1只玫瑰花
送给小美第2只玫瑰花
送给小美第3只玫瑰花
小美,我喜欢你
今天是第2天,准备表白......
送给小美第1只玫瑰花
送给小美第2只玫瑰花
送给小美第3只玫瑰花
小美,我喜欢你
今天是第3天,准备表白......
送给小美第1只玫瑰花
送给小美第2只玫瑰花
送给小美第3只玫瑰花
小美,我喜欢你
坚持到第3天,表白成功

运行结果

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
今天是第1天,准备表白......
送给小美第1只玫瑰花
送给小美第2只玫瑰花
送给小美第3只玫瑰花
小美,我喜欢你
今天是第2天,准备表白......
送给小美第1只玫瑰花
送给小美第2只玫瑰花
送给小美第3只玫瑰花
小美,我喜欢你
今天是第3天,准备表白......
送给小美第1只玫瑰花
送给小美第2只玫瑰花
送给小美第3只玫瑰花
小美,我喜欢你
坚持到第3天,表白成功

while循环案例-九九乘法表

Demo

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
"""
演示使用while的嵌套循环
打印输出九九乘法表
"""
# 定义外层循环的控制变量
i = 1
while i <= 9:
# 定义内层循环的控制变量
j = 1
while j <= i:
# 内层循环的print语句,不要换行,通过\t制表符进行对齐
print(f"{j} * {i} = {j * i}\t", end='')
j += 1
i += 1
print()

运行结果

1
2
3
4
5
6
7
8
9
1 * 1 = 1	
1 * 2 = 2 2 * 2 = 4
1 * 3 = 3 2 * 3 = 6 3 * 3 = 9
1 * 4 = 4 2 * 4 = 8 3 * 4 = 12 4 * 4 = 16
1 * 5 = 5 2 * 5 = 10 3 * 5 = 15 4 * 5 = 20 5 * 5 = 25
1 * 6 = 6 2 * 6 = 12 3 * 6 = 18 4 * 6 = 24 5 * 6 = 30 6 * 6 = 36
1 * 7 = 7 2 * 7 = 14 3 * 7 = 21 4 * 7 = 28 5 * 7 = 35 6 * 7 = 42 7 * 7 = 49
1 * 8 = 8 2 * 8 = 16 3 * 8 = 24 4 * 8 = 32 5 * 8 = 40 6 * 8 = 48 7 * 8 = 56 8 * 8 = 64
1 * 9 = 9 2 * 9 = 18 3 * 9 = 27 4 * 9 = 36 5 * 9 = 45 6 * 9 = 54 7 * 9 = 63 8 * 9 = 72 9 * 9 = 81

for循环的基础语法

除了while循环语句外,Python同样提供了for循环语句。

两者能完成的功能基本差不多,但仍有一些区别:

  • while循环的循环条件是自定义的,自行控制循环条件
  • for循环是一种“轮询”机制,是对一批内容进行“逐个处理”

同while循环不同,for循环无法定义循环条件,只能从被处理的数据集中,依次取出内容进行处理

所以,理论上讲,Python的for循环无法构建无限循环(被处理的数据集不可能无限大)

Demo

1
2
3
4
5
6
7
8
"""
演示for循环的基础语法
"""
name = "zhangsan"
for x in name:
# 将name的内容,挨个取出赋于x临时变量
# 就可以在循环体内对x进行处理
print(x)

运行结果

1
2
3
4
5
6
7
8
z
h
a
n
g
s
a
n

for循环案例-数一数多少字母a讲解

Demo

1
2
3
4
5
6
7
8
9
10
11
12
13
"""
演示for循环的练习题:数一数有几个a
"""
# 统计如下字符串中,有多少个字母a
name = "hello zhangsan"
# 定义一个变量,用来统计有多少个a
count = 0
# for 循环统计
# for 临时变量 in 被统计的数据:
for x in name:
if x == "a":
count += 1
print(f"被统计的字符串中有{count}个a")

运行结果

1
被统计的字符串中有2个a

range语句

语法中的:待处理数据集,严格来说,称之为:序列类型

序列类型指,其内容可以一个个一次取出的类型,包括:字符串、列表、元组等

语法1:range(num)

获取一个从0开始,到num结束的数字序列(不含num本身)

如range(5)获得的数据是:[0,1,2,3,4]

语法2:range(num1,num2)

获得一个从num1开始,到num2结束的数字序列(不含num2本身)

如range(5,10)获得的数据是:[5,6,7,8,9]

语法3:range(num1,num2,step)

获得一个从num1开始,到num2结束的数字序列(不含num2本身)

数字之间的步长,以step为准(step默认为1)

如range(5,10,2)获得的数据是:[5,7,9]

Demo

1
2
3
4
5
6
7
8
for x in range(3):
print(x)
print()
for x in range(1,3):
print(x)
print()
for x in range(1,5,2):
print(x)

运行结果

1
2
3
4
5
6
7
8
9
0
1
2

1
2

1
3

for循环临时变量作用域

临时变量,在编程规范上,作用范围(作用域),只限定在for循环内部

如果在for循环外部访问临时变量:

  • 实际上是可以访问到的
  • 在编程规范上,是不允许、不建议这么做的
  • 如需访问临时变量,可以预先在循环外定义它

Demo

1
2
3
4
5
6
7
8
"""
演示Python for循环临时变量的作用域
"""
i = 0
for i in range(5):
print(i)
print()
print(i)

运行结果

1
2
3
4
5
6
7
0
1
2
3
4

4

for循环的嵌套使用

  • 需要注意缩进,嵌套for循环同样通过缩进确定层次关系
  • for循环和while循环可以相互嵌套使用

Demo

1
2
3
4
5
6
7
8
9
10
11
12
"""
演示嵌套应用for循环
"""
# range
i = 0
for i in range(1,6):
print(f"今天是向小美表白的第{i}天,加油坚持")
#内层循环
for j in range(1,3):
print(f"给小美送的第{j}朵玫瑰花")
print("小美我喜欢你")
print(f"第{i}天,表白成功")

运行结果

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
今天是向小美表白的第1天,加油坚持
给小美送的第1朵玫瑰花
给小美送的第2朵玫瑰花
小美我喜欢你
今天是向小美表白的第2天,加油坚持
给小美送的第1朵玫瑰花
给小美送的第2朵玫瑰花
小美我喜欢你
今天是向小美表白的第3天,加油坚持
给小美送的第1朵玫瑰花
给小美送的第2朵玫瑰花
小美我喜欢你
今天是向小美表白的第4天,加油坚持
给小美送的第1朵玫瑰花
给小美送的第2朵玫瑰花
小美我喜欢你
今天是向小美表白的第5天,加油坚持
给小美送的第1朵玫瑰花
给小美送的第2朵玫瑰花
小美我喜欢你
5天,表白成功

for循环打印九九乘法表

Demo

1
2
3
4
5
6
7
8
9
10
11
"""
演示for循环打印九九乘法表
"""
# 通过外层循环控制行数
for i in range(1, 10):
# 通过内层循环控制每一行的数据
for j in range(1,i + 1):
# 在内层循环中输出每一行的内容
print(f"{j} * {i} = {j * i}\t", end = '')
# 外层循环可以通过print输出一个回车符
print()

运行结果

1
2
3
4
5
6
7
8
9
1 * 1 = 1	
1 * 2 = 2 2 * 2 = 4
1 * 3 = 3 2 * 3 = 6 3 * 3 = 9
1 * 4 = 4 2 * 4 = 8 3 * 4 = 12 4 * 4 = 16
1 * 5 = 5 2 * 5 = 10 3 * 5 = 15 4 * 5 = 20 5 * 5 = 25
1 * 6 = 6 2 * 6 = 12 3 * 6 = 18 4 * 6 = 24 5 * 6 = 30 6 * 6 = 36
1 * 7 = 7 2 * 7 = 14 3 * 7 = 21 4 * 7 = 28 5 * 7 = 35 6 * 7 = 42 7 * 7 = 49
1 * 8 = 8 2 * 8 = 16 3 * 8 = 24 4 * 8 = 32 5 * 8 = 40 6 * 8 = 48 7 * 8 = 56 8 * 8 = 64
1 * 9 = 9 2 * 9 = 18 3 * 9 = 27 4 * 9 = 36 5 * 9 = 45 6 * 9 = 54 7 * 9 = 63 8 * 9 = 72 9 * 9 = 81

continue和break

continue关键字用于:中断本次循环,直接进入下一次循环

continue可以用于:for循环和while循环,效果一致

break关键字用于:直接结束循环

break可以用于:for循环和while循环,效果一致

在嵌套循环中,只能作用在所在的循环上,无法对上层循环起作用

Demo

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
"""
演示循环语句的中断控制:break或continue
"""
# 演示循环中断语句 continue
for i in range(1,3):
print("语句1")
continue
print("语句2")
print()
# 演示continue的嵌套应用
for i in range(1,3):
print("语句1")
for j in range(1,3):
print("语句2")
continue
print("语句3")
print("语句4")
print()
# 演示循环中断语句 break
for i in range(1,3):
print("语句1")
break
print("语句2")
print("语句3")
print()
# 演示break的嵌套应用
for i in range(1,3):
print("语句1")
for j in range(1,3):
print("语句2")
break
print("语句3")
print("语句4")

运行结果

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
语句1
语句1

语句1
语句2
语句2
语句4
语句1
语句2
语句2
语句4

语句1
语句3

语句1
语句2
语句4
语句1
语句2
语句4

循环综合案例

Demo

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
"""
演示循环综合案例:发工资
"""
import random

# 定义账户余额变量
money = 10000
# for循环对员工发放工资
for i in range(1,21):
import random
score = random.randint(1,10)
if score < 5:
print(f"员工{i},绩效分{score},不满足,不发工资,下一位")
# continue跳过发放
continue
# 要判断余额足不足
if money >= 1000:
money -= 1000
print(f"员工{i},满足条件发放工资1000,公司账户余额:{money}")
else:
print(f"余额不足,当前余额:{money}元,不足以发工资,不发了,下个月再来")
# break结束发放
break

运行结果

1
2
3
4
5
6
7
8
9
10
11
12
员工1,满足条件发放工资1000,公司账户余额:9000
员工2,满足条件发放工资1000,公司账户余额:8000
员工3,满足条件发放工资1000,公司账户余额:7000
员工4,满足条件发放工资1000,公司账户余额:6000
员工5,满足条件发放工资1000,公司账户余额:5000
员工6,满足条件发放工资1000,公司账户余额:4000
员工7,满足条件发放工资1000,公司账户余额:3000
员工8,满足条件发放工资1000,公司账户余额:2000
员工9,绩效分1,不满足,不发工资,下一位
员工10,满足条件发放工资1000,公司账户余额:1000
员工11,满足条件发放工资1000,公司账户余额:0
余额不足,当前余额:0元,不足以发工资,不发了,下个月再来