Python中的循环语句

一. 目标

  • 了解循环
  • while语法【重点】
  • while应用
  • break和continue
  • while循环嵌套【重点】
  • while循环嵌套的使用【重点】
  • for循环

二. 循环的定义及作用

在程序中需要重复的执⾏⼀个功能的时候,⽤循环来实现。

  • while和if的⽤法基本类似,区别在于:if 条件成⽴,则执⾏⼀次;while 条件成⽴,则重复执⾏,直到条件不成⽴为⽌。
  • ⼀般情况下,需要多次重复执⾏的代码,都可以⽤循环的⽅式来完成
  • 循环不是必须要使⽤的,但是为了提⾼代码的重复使⽤率,所以有经验的开发者都会采⽤循环

循环的作⽤:让代码更⾼效的重复执⾏

三. while循环

在程序中需要重复的执行一个功能的时候,用循环来实现

3.1 while循环的格式

while 条件:
    条件满⾜时,做的事情1
    条件满⾜时,做的事情2
    条件满⾜时,做的事情3
    ...(省略)...
i = 1
while i <= 5:
    print("进入互联网")
    i += 1  # i = i + 1

3.2 计数器的书写习惯

上面循环中变量i称为循环变量,也可以称为计数器,有以下需要作用和需要注意的地方。

1.一般计数器起始值为0
2.计数器的作用是控制循环的遍数,但是一定要记得在程序钟添加让计数器发生变化的代码
3.让计数器发生变化的代码一定要放在while循环控制的代码块钟,否则不起作用

i = 0
while i<10:
    print('⼈⽣苦短,我⽤python')
    i+=1

四. while循环应用

4.1 计算1~100的累积和(包含1和100)

分析:1-100的累加和,即1 + 2 + 3 + 4 +….,即前两个数字的相加结果
参考代码如下:

i = 1
sum = 0
while i <= 100:
    sum = sum + i
    i += 1
print(f"1-100的累加和是{sum}")

4.2 计算1~100之间偶数的累积和(包含1和100)

分析:1-100的偶数和,即 2 + 4 + 6 + 8…,得到偶数的⽅法如下:

  • 偶数即是和2取余结果为0的数字,可以加⼊条件语句判断是否为偶数,为偶数则累加
  • 初始值为0 / 2 , 计数器每次累加2

参考代码如下:
⽅法⼀:条件判断和2取余数则累加

# 分析:1-100的偶数和,即 2 + 4 + 6 + 8....,得到偶数的和
"""
1. 准备累加的数字 开始1 结束100 增量1
2. 准备保存结果的变量 result
3. 循环加法运算 -- 如果是偶数才进行加法运算
4. 输出结果
5. 验证结果
"""
i = 1
result = 0
while i <= 100:
    # 条件语句 -- if
    if i % 2 == 0:
        # 加法运算
        result += i
    i += 1
# 输出结果
print(result)

方法二:计数器控制

# 计数器控制 让偶数累加
"""
1. 准备累加的数据
2. 准备存储结果的变量
3. 循环计算
4. 输出结果
"""
i = 2
result1 = 0
while i <= 100:
    result1 += 1
    i += 2
print(result1)

4.3 循环的注意事项

如果在使⽤while循环的时候,计数器没有发⽣改变,那么计数器的值便⼀直是初始值,此时while后⾯的条件永远成⽴,那么循环会⼀直⽆限执⾏下去,⽆法终⽌,这种循环也称为死循环。

五. break和continue

break和continue是循环中满⾜⼀定条件退出循环的两种不同⽅式。

举例:⼀共吃5个苹果,吃完第⼀个,吃第⼆个…,这⾥"吃苹果"的动作是不是重复执⾏?

情况⼀:如果吃的过程中,吃完第三个吃饱了,则不需要再吃第4个和第五个苹果,即是吃苹果的动作停⽌,这⾥就是break控制循环流程,即终⽌此循环。

情况⼆:如果吃的过程中,吃到第三个吃出⼀个⼤⾍⼦…,是不是这个苹果就不吃了,开始吃第四个苹果,这⾥就是continue控制循环流程,即退出当前⼀次循环继⽽执⾏下一次循环代码。

5.1 break

在实际应⽤中,如果循环满⾜了⼀定的条件,没必要接着往下运⾏了,那么这个时候就需要⽤到break退出循环。

需求:循环吃5个苹果,吃完第3个吃饱了,第4个和5不吃了(不执行)
代码实现:

# 需求:循环吃5个苹果,吃完第3个吃饱了,第4个和5不吃了(不执行)
apple = 0
while apple <= 5:
    # 条件:吃到第3个不吃了
    if apple == 4:
        print(f"吃饱了,不吃了")
        break
    print(f"吃了第{apple}个苹果")
    apple += 1

需求:⽤while循环输出1-100的数字,如果这个数字等于88,那就退出循环,停⽌输出

# 需求:⽤while循环输出1-100的数字,如果这个数字等于88,那就退出循环,停⽌输出
num = 0
while num <= 100:
    if num == 88:
        print(num)
        break
    num += 1

需求:找到第⼀个5位数回⽂数

# 需求:找到第⼀个5位数回⽂数
i = 10000
while i < 100000:
    # 万位
    wan = i // 10000
    # 千位
    thousand = i % 10000 // 1000
    # ⼗位
    ten = i % 100 // 10
    # 个位
    single = i % 10
    # 万位和个位相同并且千位和⼗位相同
    if wan == single and thousand == ten:
        print(i)
        break
    i += 1

5.2 continue

在实际应⽤中,如果循环满⾜了⼀定的条件,当前的代码没必要接着往下运⾏了,需要跳出本次循环进⼊到下⼀个循环,那么就需要⽤到continue
需求:吃5个苹果 – 循环; 吃到第3个吃出⼀个⾍⼦,第三个不吃了,没吃饱,继续吃下一个苹果。
代码实现:

# continue
# 需求:吃5个苹果 -- 循环; 吃到第3个吃出⼀个⾍⼦,第三个不吃了,没吃饱,继续吃下一个苹果。
i = 1
while i <= 5:
    if i == 3:
        print("这个苹果坏了,不能吃")
        i += 1
        continue
    print(f"吃了第{i}个苹果")
    i += 1

六. while循环的嵌套

6.1 while嵌套的语法

while 条件 1:
    条件1满足时,做的事情1
    条件1满足时,做的事情2
    条件1满足时,做的事情3
    ...(省略)...
    
    while 条件 2:
        条件2满足时,做的事情1
        条件2满⾜时,做的事情2
 		条件2满⾜时,做的事情3
        ...(省略)...

总结:所谓while循环嵌套,就是⼀个while⾥⾯嵌套⼀个while的写 法,每个while和之前的基础语法是相同的。

6.2 while嵌套流程图

python中for循环放在中括号_for循环

6.3 while嵌套循环案例

案例一:打印五行五个小星星

需求:打印如下图形

*****
*****
*****
*****
*****

代码示例:

# 打印五行五个小星星
j = 0
while j < 5:
    # 一行星星的打印
    i = 0
    while i < 5:
        # 一行内的星星不能换行,取消print默认结束符\n
        print("*", end="")
        i += 1
    # 每行结束要换行,这里借助一个空的print,利用print默认结束符换行
    print()
    j += 1

案例二:打印三角形星号

需求:打印如下图形

*****
****
***
**
*

代码示例:

分析:一行输出星星的个数和行号是相等的复执行5次实现打印5行。每行:重复打印行号数字个星号,将打印行星号的命令重

# 打印三角形
j = 5
while j > 0:
    # 一行星星的打印
    i = 1
    # i表示每行里面的星星的个数,这个数字要和行号相等所以i要和j联动
    while i <= j:
        print("*", end="")
        i += 1
        # 一行星星结束;换行显示下一行
    print()
    j -= 1

案例三:打印九九乘法表

代码示例:

# 九九乘法表
# 定义外层循环的控制变量
i = 1
while i <= 9:

    # 定义内层循环的控制变量
    j = 1
    while j <= i:
        print(f"{j} * {i} = {j * i}\t", end="")
        j += 1
    i += 1
    print()

七. for循环

像while循环⼀样,for可以完成循环的功能。

在Python中for循环可以遍历任何序列的项⽬,如⼀个列表或者⼀个字符串等。

7.1 for循环的语法

for 临时变量 in 列表或者字符串等可迭代对象:
    循环满⾜条件时执⾏的代码

语法中的可迭代对象,严格来说,称之为:序列类型

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

7.2 遍历字符串中每一个元素

str = "人工智能"
for i in str:
    print(i)

7.3 range语句

for循环语句,本质上是遍历:序列类型

range语法1:

range(num)
获取一个从0开始,到num结束的数字序列(不含num本身)
如range(5)取得的数据是:[0,1,2,3,4]

range语法2:

range(num1, num2)
获得一个从num1开始,到num2结束的数字序列(不含num2本身)
如,range(5, 10)取得的数据是:[5,6,7,8,9]

range语法3:

range(num1, num2, step)
获得一个从num1开始,到num2结束的数字序列(不含num2本身)
数字之间的步长,以step为准(step默认为1)
如,range(5,10,2)取得的数据是:[5,7,9]

代码示例:

# range语法1
print("------------range语法1------------")
for x in range(5):
    print(x)

print("------------range语法2------------")
# range语法2
for x in range(5, 10):  # 从5开始到10结束,不包含10的一个数字序列
    print(x)

print("------------range语法3------------")
# range语法3
for x in range(5, 10, 2):  # 从5开始到10结束,不包含10,步长为2的一个数字序列,step默认为1
    print(x)

案例:有几个偶数

定义一个数字变量num,内容随意

并使用range()语句,获取从1到num的序列,使用for循环遍历它

在遍历的过程中,统计偶数出现的次数

代码示例:

# 案例:有几个偶数
# 定义一个变量接收偶数出现的次数
count = 0
for x in range(1, 100):
    if x % 2 == 0:
        count += 1
print(f"1-100(不包含100)中偶数出现了{count}次")

7.4 for循环临时变量作用域

for i in range(5):
    print(i)
    
print(i)

python中for循环放在中括号_python_02


如果想在for循环外部访问临时变量,需要在for循环之前把临时变量定义好

i = 0
for i in range(5):
    print(i)
    
print(i)

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

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

  • 实际上是可以访问到的
  • 在编程规范上,是不允许、不建议这么做的

7.5 for循环的嵌套使用

代码演示:

# 向小黄表白100天
# 每天送10多玫瑰花
i = 0
for i in range(1, 101):
    print(f"今天是表白的第{i}天,小黄我喜欢你!")
    for j in range (1, 11):
        print(f"送的第{j}朵玫瑰花")
print(f"第{i}天,表白成功")

for循环和while循环可以相互嵌套使用

python中for循环放在中括号_开发语言_03

7.6 使用for循环打印九九乘法表

# 通过外层循环控制行数
for i in range(1, 10):
    # 通过内层循环控制每一行的数据
    for j in range(1, i + 1):
        print(f"{j} * {i} = {j * i}\t", end="")

# 外层循环可以通过print输出一个回车符
    print()

7.7 continue和break

continue

python中for循环放在中括号_while循环_04


python中for循环放在中括号_for循环_05

代码示例:

# 代码演示continue
for i in range(1, 6):
    print("语句1")
    continue
    print("语句2")
# 嵌套中的continue
for i in range(1, 6):
    print("语句1")
    for j in range(1, 6):
        print("语句2")
        continue
        print("语句3")
    print("语句4")
break

python中for循环放在中括号_while循环_06


代码示例:

# 代码演示break
for i in range(1, 101):
    print("语句1")
    break
print("语句2")

python中for循环放在中括号_while循环_07


代码示例:

# 嵌套循环演示break
for i in range(1, 6):
    print("语句1")
    for j in range(1, 6):
        print("语句2")
        break
        print("语句3")
    print("语句4")

7.8 for循环综合案例

python中for循环放在中括号_while循环_08


代码示例:

# 某公司,账户余额有1W元,给20名员工发工资
# 员工编号从1到20,从编号1开始,依次领取工资,每人可领取1000元
# 领工资时,财务判断员工的绩效分(1-10) (随机生成),如果低于5,不发工资,换下一位
# 如果工资发完了,结束发工资。

# 定义账户余额变量
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"员工{i}绩效符合,但当前余额还剩余{money}元,不足以发放工资")
        # break结束发放
        break