第四章 python循环语句

第四章 python循环语句

4.1 while循环

4.1.1 while循环的基础语法

只要条件满足,程序就会无限循环执行

while 条件:

条件满足时,执行语句1

条件满足时,执行语句2

条件满足时,执行语句3

......

注意:

  • 条件要么是布尔类型,要么其运算结果为布尔类型
  • 需要设置循环终止的条件,否则将无限循环
  • 空格缩进和if判断一样,需要设置
i = 0
while i < 100:
    print("学习python")
    i += 1		# 使循环有头有尾
# 案例:求1-100的和
sum = 0
i = 1
while i <=100:		#当i为101时,程序结束
    sum += i
    i += 1
print(f"1-100的和是:{sum}")

4.1.2 while循环的基础案例

案例:猜数字

设置一个1-100的随机整数变量,通过while循环和input语句,判断输入的数字是否等于随机数

  • 无限次机会,直到猜中为止
  • 每一次猜不中,会提示大了或小了
  • 猜完数字后,提示猜了几次
# 获取范围在1-100的随机数字
import random
num = random.randint(1,100)

# 定义一个变量,记录总共猜了多少次,进入一次循环,count+1
count = 0

# 通过一个布尔类型的变量作为循环是否继续的标记
flag = True
while flag:
    get_num = int(input("请输入你猜测的数字:"))
    count += 1
    if get_num == num:
        print("恭喜你,猜对了")
        # 设置False是循环终止的条件
        flag = False
    else:
        if get_num > num:
            print("你猜的大了")
        else:
            print("你猜的小了")
print(f"你总共猜了{count}次")

4.1.3 while循环的嵌套应用

嵌套语法:

while 条件1:

条件满足时,执行语句1

条件满足时,执行语句2

条件满足时,执行语句3

......

while 条件2:

条件满足时,执行语句1

条件满足时,执行语句2

条件满足时,执行语句3

......

i = 1
while i <= 100:
    print(f"今天是第{i}天,准备表白……")
    j = 1
    while j <= 10:
        print(f"送给小美第{j}支玫瑰花")
        j += 1
    print("小美,我喜欢你")
    i += 1
print(f"坚持到第{i - 1}天,表白成功")

注意:

  • 通过空格缩进决定层次关系
  • 注意条件的设置,避免出现无限循环
  • 循环条件的控制很重要,层次越多越复杂

4.1.4 while循环的嵌套案例

案例:打印九九乘法表(对掌握多层循环、逻辑思维等有帮助,好好分析⭐)

在这里插入图片描述

# 定义外层循环的控制变量 i <= 9
i = 1
while i <= 9:
    # 定义内层循环的控制变量,控制每一行输出的循环 j <= i
    j = 1
    while j <= i:
        # 内层循环的print语句,不换行,使用\t进行对齐
        print(f"{j}*{i}={j * i}\t",end='')
        j += 1
    i += 1
    print()     # 输出一个换行

print默认输出换行,若要输出不换行,在print语句中,加上end=’ '即可输出不换行

\t:制表符,等同于tab键,可以让多行字符串进行对齐

4.2 for循环

4.2.1 for语句的基础语法

while循环的条件是自定义的,自行控制循环条件

for循环时一种”轮询“机制,是对一批内容进行”逐个处理“

for 临时变量 in 序列类型:

循环满足条件时执行的代码

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

# 遍历字符串
# 定义字符串name
name = "python"
# for循环处理字符串
for x in name:
    print(x)

# 输出结果
p
y
t
h
o
n

for循环是将字符串中的内容依次取出,又称遍历循环

注意:

  • for循环无法定义循环条件,只能从被处理的数据集中,依次取出内容进行处理
  • 循环内的语句,需要有空格缩进

练习案例:数一数有几个a

定义字符串变量name,内容为:”Today,I will study python like yesterday“

通过for循环,遍历字符串,统计有多少个英文字母:”a“

# 定义字符串name
name = "Today,I will study python like yesterday"

# 定义一个变量,统计字母个数
count = 0
# for循环统计
for i in name:
    if i =='y':
        count = count + 1
print(f"{name}中总共含有{count}个字母y")

# 输出结果
D:\dev\python\python3.10.4\python.exe D:/Projects/PycharmProjects/pythonProject/test1.py
Today,I will study python like yesterday中总共含有5个字母y

4.2.2 range语句

range语句可以获得一个简单的数字序列

通过range快速的锁定for循环的执行次数以完成相关需求

语法有三种:

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

    # range语法1
    for x in range(10):
        print(x)
        
    # 输出结果
    0
    1
    2
    3
    4
    5
    6
    7
    8
    9
    
  • range(num1,num2):获取一个从num1开始,到num2结束的数字序列(不包含num2本身)

    # range语法2
    for x in range(5,10):
        print(x)
        
    # 输出结果
    5
    6
    7
    8
    9
    
  • range(num1,num2,step):获取一个从num1开始,到num2结束的数字序列(不包含num2本身),数字之间的步长以step为准(step默认为1)

    # range语法3
    for x in range(1,10,3):
        print(x)
        
    # 输出结果
    1
    4
    7
    

练习案例:有几个偶数

定义一个数字变量num,使用range()语句,获取从1到num的序列,使用for循环遍历,在遍历过程中统计偶数个数。

num = 10
count = 0
for x in range(1,num):
    if x % 2 == 0:
        count += 1
print(count)

4.2.3 变量作用域

在for循环的语法中,临时变量在编程规范上的作用范围只限定在for循环内部

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

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

4.2.4 for循环的嵌套应用

i = 1
for i in range(1,101):
    print(f"今天是向小美表白的第{i}天,坚持")
    for j in range(1,11):
        print(f"送给小美的第{j}支玫瑰花")
    print(f"小美,我喜欢你(第{i}天的表白结束)")
print(f"第{i}天,表白成功")

注意:

  • 空格缩进确定层次关系
  • while和for循环可以相互嵌套

练习案例:for循环实现九九乘法表

for i in range(1, 10):
    for j in range(1, i + 1):
        print(f"{j}*{i}={i*j}\t",end='')
    print()

4.3 循环中断:break和continue

遇到如下情况时:

  • 暂时跳过某次循环,直接进行下一次
  • 提前退出循环,不再继续

4.3.1 continue关键字

continue:中断本次循环,直接进入下一次循环,可以用于for循环、while循环、嵌套循环。只对所在循环生效,无法对上层循环起作用

for i in range(1, 10):

语句1

continue

语句2

在循环内,遇到continue就结束档次循环,进行下一次,所以在上面的代码中,语句2不会执行

# continue用于for循环
for i in range(1, 6):
    print("语句1")
    continue
    print("语句2")

# 输出结果
语句1
语句1
语句1
语句1
语句1
# continue用于嵌套循环
for i in range(1,3):
    print("语句1")
    for j in range(1,3):
        print("语句2")
        continue
        print("语句3")
    print("语句4")
    
#输出结果
语句1
语句2
语句2
语句4
语句1
语句2
语句2
语句4

4.3.2 break关键字

break:直接结束循环,用于for循环、while循环、嵌套循环。只对所在循环生效,无法对上层循环起作用

for i in range(1, 10):

语句1

break

语句2

语句3

在循环内,遇到break就结束循环。上述代码执行语句1后,直接执行语句3

# break用于for循环
for i in range(1,10):
    print("语句1")
    break
    print("语句2")
print("语句3")

#输出结果
语句1
语句3
# break用于嵌套循环
for i in range(1,5):
    print("语句1")
    for j in range(1,5):
        print("语句2")
        break
        print("语句3")
	print("语句4")

# 输出结果
语句1
语句2
语句4
语句1
语句2
语句4
语句1
语句2
语句4
语句1
语句2
语句4

4.4 循环综合案例

案例:发工资

某公司,账户余额有10000元,给20名员工发工资

  • 员工编号从1到20,从编号1开始,依次领取工资,每人可领取1000元
  • 领取工资时,财务判断员工的绩效分(1-10)(随机生成),如果低于5,不发工资,换下一位
  • 如果工资发完了,结束发工资
# 自己写的
import random

money = 10000
for i in range(1, 21):
    performance = random.randint(1, 10)
    if performance < 5:
        print(f"员工{i},绩效分{performance},低于5,不发工资,下一位")
        continue
    else:
        money -= 1000
        print(f"向员工{i}发放工资1000元,账户余额还剩余{money}元")
        if money == 0:
            print("工资发完了,下个月领取吧")
            break

自己写的有一点小问题:应该先判断工资余额,再进行工资发放

# 老师写的
import random

# 定义账户余额变量
money = 10000
for i in range(1, 21):
    # 员工绩效分
    performance = random.randint(1, 10)
    if performance < 5:
        print(f"员工{i},绩效分{performance},低于5,不发工资,下一位")
        # 跳过发放
        continue
    # 判断余额是否足够
    if money >= 1000:
        money -= 1000
        print(f"向员工{i}发放工资1000元,账户余额还剩余{money}元")
    else:
        print("工资发完了,下个月领取吧")
        # 结束发放工资
        break
  • 28
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值