Python语法 第三章(循环语句)

while循环

基础语法

语法格式:
在这里插入图片描述

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

基础案例

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

  • 无限次机会,直到猜中为止
  • 每一次猜不中,会提示大了或小了
  • 猜完数字后,提示猜了几次

提示:
无限次机会,终止条件不适合用数字累加来判断
可以考虑布尔类型本身(True or False)
需要提示几次猜中,就需要提供数字累加功能
随机数可以使用:
在这里插入图片描述

import random
num = random.randint(1,100)
#count记录猜测次数
count = 0
flag = True
while flag:
    guess_num=int(input("请输入你猜测的数字:"))
    count +=1
    if(guess_num==num):
        print("猜中了!")
        flag = False
    else:
        if(guess_num>num):
            print("你猜的大了!")
        else:
            print("你猜的小了!")

print("你一共猜了%d次"%(count))

回顾:

表达式的格式化:

  • f"{表达式}"
  • “%s%d%f” % (表达式,表达式,表达式)

嵌套应用

在这里插入图片描述

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

嵌套案例

打印九九乘法表
通过while循环,输出如下九九乘法表内容
在这里插入图片描述
提示:
2层循环,外层控制行,内层控制列
外层循环和内存循环的累加数字变量,用以辅助输出乘法表的数值

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循环是一种”轮询”机制,是对一批内容进行”逐个处理”

基础语法

语法格式:
在这里插入图片描述
for循环中的临时变量,其作用域限定为 循环内

例如:
在这里插入图片描述
结果:
在这里插入图片描述

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

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

举例:
定义字符串变量name,内容为:“Genius is nothing but labor adiligence”
通过for循环,遍历此字符串,统计有多少个英文字母:“a”

提示:

  1. 计数可以在循环外定义一个整数类型变量用来做累加计数
  2. 判断是否为字母"a",可以通过if语句结合比较运算符来完成
name = "Genius is nothing but labor adiligence"

count = 0

for x in name:
   if(x=="a"):
      count += 1


print(f"被统计的字符串中有{count}个a")
'''
输出还可以这样写
print("被统计的字符串中有%d个a"%count)
'''

range语句

在这里插入图片描述
语法中的:待处理数据集,严格来说,称之为:可迭代类型
可迭代类型指,其内容可以一个个依次取出的一种类型,包括:
字符串
列表
元组

语法:学习range语句,获取简单数字序列

语法一:

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

语法二:

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

语法三:

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

for x in range(5,10,2):
    print(x)
#输出为
5
7
9

嵌套应用

在这里插入图片描述

示例:坚持学习一百天,每天学习二十个单词

for i in range(1,101):
    print(f"今天是学习的第{i}天,加油坚持")
    for j in range(1,21):
        print(f"学习了{j}个单词")
    print("今日学习完毕")

通过for循环,输出如下九九乘法表内容
在这里插入图片描述提示:
2层循环,外层控制行,内层控制列
可使用range语句来得到数字序列进行for循环
内层for循环的range最大范围,取决于当前外层循环的数字

#外层循环控制行数
for i in range(1,10):
    #内层循环控制每一行数据
    for j in range(1,i+1):
        #在内层循环中输出每一行内容
        print(f"{j} * {i} = {j*i}\t",end='')
    #外层循环输出换行
    print()

循环中断:break和continue

continue

continue关键字用于:中断本次循环,直接进入下一次循环
continue可以用于: for循环和while循环,效果一致

break

break关键字用于:直接结束所在循环
break可以用于: for循环和while循环,效果一致

注意事项:

continue和break,在for和while循环中作用一致
在嵌套循环中,只能作用在所在的循环上,无法对上层循环起作用

综合案例

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

在这里插入图片描述

提示:
continue用于跳过员工,break直接结束发工资
if判断余额,不要忘记发完工资后,余额减少1000

#定义账户余额变量
money = 10000
#for循环对员工发放奖金
for i in range(1,21):
    import random
    score = random.randint(1,10)

    if score<5:
        print(f"员工{i},绩效分{score},不满足,不发奖金,下一位")
        continue

    elif money>=1000:
        money-=1000
        print(f"员工{i},满足条件,发放1000元,公司账户余额:{money}")
    else:
        print(f"余额不足,当前余额:{money}元,无奖金")
        break

运行:
在这里插入图片描述
在这里插入图片描述

  • 21
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值