一、while循环的基础应用
1、while 条件:
条件满足时,做的事情1
条件满足时,做的事情2
……(省略)……
# 演示while循环的基础应用
i = 1
while i <= 100:
print("%3d" % i, "小美,我喜欢你")
i += 1
2、注意事项:
·while的条件需得到布尔类型,True表示继续循环,False表示结束循环
·需要设置循环终止的条件,否则将无限循环
·空格缩进和if判断一样,都需要设置
二、案例——求1~100的和
# 练习案例:求1~100的和
sum = 0
i = 1
while i <= 100:
sum = sum + i
i += 1
print(f"1~100的和是:{sum}")
三、while循环猜数字案例
# 猜心里的数字:设置一个范围1~100的随机整数变量,通过while循环,配合input语句,判断输入的数字是否等于随机数
# 生成一个随机数
import random
num = random.randint(1,100)
bool_flag = True
i = 1
print("本次游戏每个人只有5次机会!!!")
while bool_flag & (i <= 5):
guess_num = int(input(f"请输入第{i}次猜想的数字(1~100):"))
if guess_num == num:
print(f"恭喜您猜对了!!!您总共用了{i}次机会!")
bool_flag = False
elif guess_num >num:
print("您猜的有点太大了!")
else:
print("您猜的有点太小了!")
i += 1
if bool_flag & (i == 6):
print(f"抱歉,您的{i - 1}次机会用完了!")
四、while循环的嵌套应用
1、while 条件1:
条件1满足时,做的事情1
条件1满足时,做的事情2
while 条件2:
条件2满足时,做的事情1
条件2满足时,做的事情2
# while循环嵌套应用
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}天,表白成功")
五、while循环案例——打印九九乘法表
补充:1、end = '':end等于空字符串,可以实现print语句输出不换行
2、\t:制表符;可以保证多行输出可以对齐
# while嵌套循环案例————打印九九乘法表
"""
1、控制行的循环 i <= 9
2、控制每一行输出的循环 j <= i
"""
# 定义外层循环的控制变量
i = 1
while i <= 9:
# 定义内层循环的控制变量
j = 1
while j <= i:
# 内层print语句,不要换行(end = ''),且要对齐(\t)
print(f"{j} * {i} = {i * j}\t", end = '')
j += 1
i += 1
print() # print内容为空,即输出一个换行
六、for循环的基础语法
1、for 临时变量 in 待处理数据集(序列):
循环满足条件时执行的代码
# 定义字符串name
name = "itheima"
# for循环处理字符串
for x in name:
print(x, end = '')
2、for循环和while循环不同,是无法定义循环条件的;只能从待处理的数据集中,依次去除内容进行处理。所以,理论上,Python中的for循环无法构建无限循环(待处理的数据集不可能无限大)。
七、for循环案例——数一数有几个a
1、定义字符串变量name,内容为:"itheima is a brand of itcat"
2、通过for循环,遍历此字符串,统计有多少个英文字母:"a"
# 练习案例:数一数有几个a
# 定义字符串变量name
name = "itheima is a brand of itcat"
# 定义一个计数器变量
count = 0
# 实现for循环
# for 临时变量 in 被统计的数据:
for x in name:
if x == "a":
count += 1
print(f'"itheima is a brand of itcat"中共含有:{count}个字母a')
八、range语句
for循环中的待处理数据集,严格来说,称之为:序列类型
序列类型是指,其内容可以一个一个依次取出的一种类型,包括:字符串、列表、元组、等
1、语法1
range(num)含义:获取一个从0开始,到num结束的数字序列(不含num本身),如renge(5)取得的数据是:[0,1,2,3,4]
2、语法2
range(num1, num2)含义:获得一个从num1开始,到num2结束的数字序列(不含num2本身),如range(5, 10)取得的数据是:[5, 6, 7, 8, 9]
3、语法3
range(num1, num2, step)含义:获得一个从num1开始,到num2结束的数字序列(不含num2本身),数字之间的步长,以step为准(step默认为1),如range(5, 10, 2)取得的数据是:[5, 7, 9]
例子:统计一个数字序列中的偶数个数:
# 练习案例:有几个偶数
# 定义一个数字变量num,内容随意
num = 100
# 定义一个计数器,用于统计偶数的个数
count = 0
# 用range()语句,获取从1到num的序列,使用for循环遍历它,并统计在遍历过程中,有多少个偶数
for x in range(1, 100):
if (x % 2) == 0:
count += 1
print(f"1~100(不含100本身)范围内,有{count}个偶数。")
九、for循环临时变量作用域
for 临时变量 in 待处理的数据集:
循环满足条件时执行的代码
临时变量,在编程规范上,作用范围(作用域),只限定在for循环内部,如果在for循环外部访问临时变量:
·实际上时可以访问到的
·在编程规范上,是不允许、不建议这么做的
十、for循环的嵌套使用
1、for 临时变量 in 待处理的数据集(序列):
循环满足条件时应做的事情
for 临时变量 in 待处理数据集(序列):
循环满足条件时应做的事情
2、演示:
# 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}天,表白成功!")
十一、for循环打印九九乘法表
# 打印九九乘法表
# 外层循环
for i in range(1, 10):
# 内层循环
for j in range(1, i + 1):
print(f"{j} * {i} = {i * j}\t", end = '')
# 输出一个换行
print()
十二、continue和break循环控制
1、continue用于临时中断,只能作用于所在的循环上
continue关键字用于:中断本次循环,直接进入下一次循环,for循环和while循环效果一致。
# # 演示循环中断语句 continue
# for i in range(1, 6):
# print("语句1")
# continue
# print("语句2")# 因为 continue 的缘故,会跳过语句2,所以语句2是不会被打印的
# 演示 continue 在嵌套循环中的使用
for i in range(1, 6):
print("语句1")
for j in range(1, 6):
print("语句2")
continue
print("语句3") # 因为 continue 的缘故,会跳过语句3,所以语句3是不会被打印的
print("语句4")
2、break用于直接结束,只能作用于所在的循环上
break关键字用于直接结束循环,for循环和while循环效果一致
# # 演示循环中断语句 break
# for i in range(1, 101):
# print("语句1")
# break
# print("语句2") #因为 break 的缘故,循环会直接结束
# print("语句3")
# 演示 break 在嵌套循环中的使用
for i in range(1, 6):
print("%d语句1" % i)
for j in range(1, 6):
print("%d语句2" % i)
break
print("%d语句3" % i) # 因为 break 的缘故,内层循环会直接结束,语句3是不会被打印的
print("%d语句4" % i)
十三、循环综合案例——发工资
账户余额1W元,给20名员工发工资。
·员工编号从1到20,从编号1开始,依次领取工资,没人可领取1000元
·领工资时,财务判断员工的绩效分(1~10)(随机生成),如果低于5分,不发工资,换下一位
·如果工资发完了,结束发工资。
# 练习案例————发工资
import random
# 账户余额1w元
money = 10000
for i in range(1, 21):
# 生成随机绩效分
score = random.randint(1, 10)
# 判断员工绩效分
if score < 5:
print(f"员工{i},绩效分{score},低于5分,不发放工资,下一位。")
# 跳过发放工资
continue
# 判断公司余额足不足
if money == 0:
print("余额不足,当前余额0元,下个月领取吧!")
# 结束工资发放
break
else:
money -= 1000
print(f"向员工{i}发放工资1000元,账户余额还剩{money}元。")