while循环
基础语法
语法格式:
- while的条件需得到布尔类型,True表示继续循环,False表示结束循环
- 需要设置循环终止的条件,如i += 1配合 i < 100,就能确保100次后停止,否则将无限循环
- 空格缩进和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”
提示:
- 计数可以在循环外定义一个整数类型变量用来做累加计数
- 判断是否为字母"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
运行: