Python循环语句

while 循环的基础语法

while 条件:
    条件满足时,做的事情1
    条件满足时,做的事情2
    条件满足时,做的事情3
    ……

注意:

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

while 循环的基础案例

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

#无限次机会,猜到数字
import random
#1-100之间的随机数
num = random.randint(1,100)
flag = True
count = 0
while flag:
   gutss = int(input("请输入猜测的数字:"))
   count+=1
   if gutss == num:
       print("猜中了!")
       flag = False
   elif gutss > num:
       print("猜大了")
   else:
    print("猜小了")
print(f"用了{count}次,猜中了随机数字{num}")

输出结果:
D:\Study\PythonManage\.venv\Scripts\python.exe D:\Study\PythonManage\Demo\Demo1.py 
请输入猜测的数字:50
猜小了
请输入猜测的数字:75
猜小了
请输入猜测的数字:85
猜小了
请输入猜测的数字:95
猜大了
请输入猜测的数字:90
猜大了
请输入猜测的数字:86
猜小了
请输入猜测的数字:88
猜大了
请输入猜测的数字:87
猜中了!
用了8次,猜中了随机数字87

while 循环的嵌套应用

while 条件1:
    条件1满足时,做的事情1
    条件1满足时,做的事情2
    条件1满足时,做的事情3
    ……
    while 条件2:
        条件2满足时,做的事情1
        条件2满足时,做的事情2
        条件2满足时,做的事情3
        ……

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

while 循环的嵌套案例

打印 99 乘法表

#循环打印99乘法表
i = 1   #控制列
while i <= 9:
    j = 1    #控制行
    while j <= i:
        print(f"{j}*{i}={i*j}\t", end=' ')  #输出表达式
        j = j + 1
    print("")   #每个行后换行
    i = i + 1

在这里插入图片描述
补充:
print输出不换行
默认print语句输出内容会自动换行,只要在 print 语句中,加上 end=‘’ 即可输出不换行

print("Hello World",end='')
print('1')
print('-------------------')
print("Hello World")
print('1')

输出结果:
D:\Study\PythonManage\.venv\Scripts\python.exe D:\Study\PythonManage\Demo\Demo1.py 
Hello World1
-------------------
Hello World
1

制表符 \t
在字符串中,有一个特殊符号:\t,效果等同于在键盘上按下:tab键。它可以让我们的多行字符串进行对齐。

for 循环的基础语法

除了while循环语句外,Python同样提供了for循环语句。
两者能完成的功能基本差不多,但仍有一些区别:while循环的循环条件是自定义的,自行控制循环条件for循环是一种”轮询”机制,是对一批内容进行”逐个处理”

for 临时变量 in 待处理数据集:
    循环满足条件时执行的代码

注意:
同while循环不同,for循环是无法定义循环条件的。只能从被处理的数据集中,依次取出内容进行处理。
所以,理论上讲,Python的for循环无法构建无限循环(被处理的数据集不可能无限大)
for循环中的临时变量,其作用域限定为:循环内;这种限定:是编程规范的限定,而非强制限定不遵守也能正常运行,但是不建议这样做如需访问临时变量,可以预先在循环外定义它。

range 语句

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

for 循环的嵌套应用

for 临时变量 in 待处理数据集:
    循环满足条件时执行的代码
    ……
    for 临时变量 in 待处理数据集:
        循环满足条件时执行的代码
        ……

for 循环的嵌套和 while 循环的嵌套一样,都是通过缩进确定层次关系的。
通过 for 循环打印 99 乘法表

#循环打印99乘法表
i = 1   #控制列
for i in range(1,10):
    j = 1    #控制行
    for j in range(j,i+1):
        print(f"{j}*{i}={i*j}\t", end=' ')  #输出表达式
        j = j + 1
    print("")   #每个行后换行
    i = i + 1

在这里插入图片描述

循环中断:break,continue

for 循环和 while 循环都是重复性的执行特定的语句,是否可以通过特定方式跳过或提前推出当前循环呢?
对于这种情况,Python 提供了 break、continue 关键字,用来对循环进行直接结束和临时跳过。
continue:中断本次循环,直接进入下一次循环。只可控制 continue 所在行所处的循环,如果在嵌套循环的内层循环,不能跳过外层循环。
break:直接结束所在循环。只可控制 break 所在行所处的循环,如果在嵌套循环的内层循环,不能终止外层循环。

案例

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

import random
#初始化薪水10000
salary = 10000
#根据工号循环发工资
money = 1000
for i in range(1,21):
    #获取当前员工的绩效
    kh = random.randint(1,10)
    if kh < 5:
        continue   #考核分数低于5不发工资,下一位
    salary -= money
    if salary < 1000 and salary >= 0:
        print(f"工号为{i}的员工领取工资{money}")
    elif salary >= 1000:
        print(f"工号为{i}的员工领取工资{money}")
    else:
        print("工资已发完!")
        break

输出结果:
D:\Study\PythonManage\.venv\Scripts\python.exe D:\Study\PythonManage\Demo\Demo1.py 
工号为1的员工领取工资1000
工号为2的员工领取工资1000
工号为3的员工领取工资1000
工号为4的员工领取工资1000
工号为5的员工领取工资1000
工号为8的员工领取工资1000
工号为11的员工领取工资1000
工号为13的员工领取工资1000
工号为15的员工领取工资1000
工号为16的员工领取工资1000
工资已发完!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Lucky高

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值