一、while 循环的基础语法
1.定义
while 条件:
条件满足时,做的事情1
条件满足时,做的事情2
(只要条件满足,会无限循环执行)
例:
# 向小美表白5次
i = 0
while i < 5:
print("小美我喜欢你")
i += 1
注意事项:while的条件需得到布尔类型,True 表示继续循环,False 表示结束循环
需要设置循环终止的条件,如 i += 1 配合 i<5,就能确保5次之后停止,否则将无线循环
空格缩进和 if 判断一样,都需要设置
2.练习1
# 通过while循环,计算从1累加到100 的和
i = 1
sum = 0
while i <=100 :
sum += i
i += 1
print(f"1+2+3+……+99+100={sum}")
2.练习2
# 设置一个范围1-100的随机整数变量,通过while循环,配合input语句,判断输入的数字是否等于随机数
# 无限次机会,直到猜中为止
# 每一次猜不中,会提示大了或小了
# 猜完数字后,提示猜了几次
# 提示:无限次机会,终止条件不适合用数字累加来判断 可以考虑布尔类型本身
# 需要提示几次猜中,就需要提供数字累加功能
import random
num = random.randint(1,100)
count = 0
flag = True
while flag:
guess = int(input("请猜想一个数字:"))
count += 1
if guess == num:
print(f"恭喜你猜对了")
flag = False
else:
if guess > num:
print(f"猜大了")
else:
print(f"猜小了")
print(f"一共猜了{count}次")
二、while循环的嵌套
1、定义
while 条件1:
条件 1 满足时,做的事件1 (四个空格)
条件 1 满足时,做的事件2
while 条件2: (四个空格)
条件2满足时,做的事情2(八个空格)
条件2满足时,做的事情2
例:
# 外层,表白5天的控制
# 内层,每天送3只玫瑰花的控制
i = 1
while i <=5:
print(f"今天是表白的第{i}天")
j = 1
while j <= 3:
print(f"送的第{j}朵玫瑰花")
j +=1
i += 1
print(f"经过{i-1}天,最终表白成功")
注意事项: 注意条件控制,避免无限循环
多层嵌套,主要空格缩进来 确定层次关系
2.练习
# 补充知识,print 输出不换行
print("Hello",end ='')
print("World",end ='')
# 制表符 \t 多行字符串进行对齐
print("Hello World")
print("Hello yyqx")
print("Hello\tWorld")
print("Hello\tyyqx")
# 九九乘法表
# 定义外层循环的控制变量
# i 表示行数
i = 1
while i < 10:
# 定义内层循环
# j 表示一行的量
j = 1
while j <= i:
print(f"{j}*{i}={j*i}\t",end="")
j +=1
i +=1
print()
三、for循环的基础语法
除了while循环语句外,python同样提供了for循环语句
两者能完成的功能基本差不多,但仍有一些区别:
while循环的循环条件是自定义的,自行控制循环条件
for循环是一种“轮询”机制,是对一批内容进行“逐个处理”
将”待办事项“逐个完成的循环机制
1、定义
for 临时变量 in 待处理数据集:
循环满足条件时执行的代码
例:
name = "yyqx"
for x in name:
# 将name的内容,挨个取出赋予x临时变量
# 就可以在循环体内对x进行处理
print(x)
同while循环不同,for循环是无法定义循环条件的
只能从被处理的数据集中,依次取出内容进行处理
从理论上将,python的for循环无法构建无限循环(被处理的数据集不可能无限大)
2.练习
# 定义字符串变量name,内容为:“I am a girl”
# 通过for循环,遍历此字符串,统计有多少个英文字母:”a“
# 提示 技术可以在循环为定义一个整数类型变量用来做累加计数
# 判断是否为字母“a”,可以通过if语句结合比较运算符来完成
name = "I am a girl"
count = 0
for x in name:
if x == "a":
count += 1
print(f"I am a girl 中含有{count}个a")
四、range语句
1.定义
例:语法1:
获取一个从0开始时,到num结束的数字序列(不含num本身)
如range(5)获取的数据是:[0,1,2,3,4]
for i in range(0,5)
print(i)
语法2:
range(num1,num2)
获得一个从num1开始,到num2结束的数字序列(不含num2)
如,range(5,10)获取的数据是:[5,6,7,8,9]
for i in range(5,10)
print(i)
语法3:
range(num1,num2,step)
获取一个从num1开始,到num2结束的数字序列(不含num2本身)
数字之间的步长,以step为准(step默认为1)
如,step(5,10,2)获取的数据是:[5,7,9]
for i in range(5,10,2)
print(i)
2.练习
# 有几个偶数
# 定义一个数字变量num,内容随意
# 并使用range()语句,获取从1到num的序列,使用for循环遍历他
# 在遍历过程中,统计有多少偶数出现
# 提示 序列可以用:range(1,num)得到
# 偶数通过if判断,判断数字余2是否为0即可
import random
num = random.randint(1,100)
count = 0
for i in range(1,num):
if i % 2 == 0:
count += 1
print(f"从1到{num}(不包含{num}),一共有{count}个偶数")
五、for循环临时变量作用域
如果在for循环外部访问临时变量:
实际是可以访问到的
在编程规范上,是不允许,不建议这么做的
for i in range(5):
print(i)
print(i) # 在循环外访问变量
for 循环中的临时变量,其作用域限定为:循环内
如需访问临时变量,可以预先在循环外定义它
六、for循环的嵌套使用
1.定义
for 临时变量 in 待处理数据集(序列)
循环满足条件应做的事情1:
for 临时变量 in 待处理的数据集(序列)
循环满足条件应做的事情1
例:
for i in range(1,4):
print(f"今天是向小美表白的第{i}天")
for j in range(1,4):
print(f"给小美送的第{j}朵玫瑰花")
print(f"第{i}天表白结束")
print(f"经过第{i}天,表白结束")
拓展:
(1)for 循环和 while循环互相嵌套
for i in range(1,4):
print(f"今天是向小美表白的第{i}天")
j = 1
while j < 4:
print(f"送的第{j}朵玫瑰花")
j + = 1
print(f"第{i}天表白结束")
print(f"经过{i}天,表白结束")
(2)while循环和for循环互相嵌套
i = 1
while i < 4:
print(f"今天是向小美表白的第{i}天")
i += 1
for j in range(1,4):
print(f"今天是送的第{j}朵玫瑰花")
print(f"第{i-1}天表白结束")
print(f"经过{i-1}天,表白成功")
2.练习
九九乘法表
for i in range(1,10):
for j in range(1,i):
print(f"{j}*{i}={j*i}\t",end="")
print()
七、循环中断:break 和 continue
1.continue
(1)定义
continue关键字用于:中断本次 循环,直接进入下一次 循环
continue可以用于:for 循环和 while循环,效果一致
例:
for i in range(1,6):
print("语句1")
continue # 在循环内,遇到continue就结束当次循环,进行下一次 所以语句2是不会执行的
print("语句2")
# 在循环中,因某些原因,临时结束本次循环
# 只控制 它所在的循环临时中断
(2)continue嵌套应用
for i in range(1,4):
print("语句1")
for j in range(1,4):
print("语句2")
continue
print("语句3")
print("语句4")
2.break
(1)定义
break关键字用于:直接结束循环
break可以用于: for循环和while循环,效果一致
例:
for i in range(1,6):
print("语句1")
break # 在循环内,遇见break就结束循环 所以执行语句1后直接执行语句3
print("语句2")
print("语句3")
(2)break嵌套应用
for i in range(1,6):
print("语句1")
for j in range(1,6):
print("语句2")
break # 只在本次循环内终止循环
print("语句3")
print("语句4")
3.综合案例
# 发工资
# 某公司,账户余额有1w元,给20名员工发工资
# 员工编号从1到20,从编号1开始,依次领取工资,每个人可领取1000元
# 领工资时,财务判断员工的绩效分(1-10)(随机生成),如果低于5,不发工资,换下一位
# 如果工资发完了,结束发工资
# 提示 使用循环对员工一次发放工资
# continue用于跳过员工,break直接结束发工资
money = 10000
for i in range(1,21):
import random
score = random.randint(1,10)
if score < 5 :
print(f"员工{i},绩效分为{score},低于5,不发工资,下一位")
continue
else:
money -= 1000
print(f"员工{i},发放工资1000元,剩余{money}")
if money == 0:
break
print(f"本月工资发放完毕,请下个月再来")