while 条件:
执行的事情1
执行的事情2
执行的事情3
#示例代码
i = 0
while i<100:
print("hello,world")
i+=1
while的条件需得到布尔类型,True表示继续循环,False表示结束循环
需要设置循环终止的条件,如i += 1配合 i < 100,就能确保100次后停止,否则将无限循环
空格缩进和if判断一样,都需要设置
设置一个范围1-100的随机整数变量,通过while循环,配合input语句,判断输入的数字是否等于随机数
提示:
无限次机会,终止条件不适合用数字累加来判断,可以考虑布尔类型本身(True or False)
需要提示几次猜中,就需要提供数字累加功能
"""
演示while循环的基础案例 - 猜数字
"""
# 获取范围在1-100的随机数字
import random
num = random.randint(1, 100)
# 定义一个变量,记录总共猜测了多少次
count = 0
# 通过一个布尔类型的变量,做循环是否继续的标记
flag = True
while flag:
guess_num = int(input("请输入你猜测的数字:"))
count += 1
if guess_num == num:
print("猜中了")
# 设置为False就是终止循环的条件
flag = False
else:
if guess_num > num:
print("你猜的大了")
else:
print("你猜的小了")
print(f"你总共猜测了{count}次")
while 条件1:
执行的事情1
执行的事情2
执行的事情3
while 条件2:
执行的事情1
执行的事情2
执行的事情3
嵌套循环的使用难点:循环条件的控制,层次越多越复杂,需要细心+耐心
"""
演示while循环的嵌套使用
嵌套循环需要注意的地方:
1.注意条件的控制,避免无限循环
2.多层嵌套,主要空格缩进来确定层次关系
"""
# 外层:表白100天的控制
# 内层:每天的表白都送10只玫瑰花的控制
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}天,表白成功")
补充知识:
end = ‘ ’
制表符\t
在字符串中,有一个特殊符号:\t,效果等同于在键盘上按下:tab键。
它可以让我们的多行字符串进行对齐。
"""
演示使用while的嵌套循环
打印输出九九乘法表
"""
# 定义外层循环的控制变量
i = 1
while i <= 9:
# 定义内层循环的控制变量
j = 1
while j <= i:
# 内层循环的print语句,不要换行,通过\t制表符进行对齐
print(f"{j} * {i} = {j * i}\t", end='')
j += 1
i += 1
print() # print空内容,就是输出一个换行
#从待处理数据集中:逐个取出数据,赋值给临时变量
语法:
for 临时变量 in 待处理数据集:
循环满足条件时执行的代码
# 定义字符串name
name = ”itheima”
# for循环处理字符串
for x in name:
print(x)
练习题
"""
演示for循环的练习题:数一数有几个a
"""
# 统计如下字符串中,有多少个字母a
name = "itheima is a brand of itcast"
# 定义一个变量,用来统计有多少个a
count = 0
# for 循环统计
# for 临时变量 in 被统计的数据:
for x in name:
if x == "a":
count += 1
print(f"被统计的字符串中有{count}个a")
for 临时变量 in 待处理数据集(可迭代对象):
循环满足条件时执行的代码
语法中的:待处理数据集,严格来说,称之为:可迭代类型
可迭代类型指,其内容可以一个个依次取出的一种类型,包括:
for循环语句,本质上是遍历:可迭代对象。
语法1:
range(num)
获取一个从0开始,到num结束的数字序列(不含num本身)左闭右开
如range(5)取得的数据是:[0, 1, 2, 3, 4]
语法2:
range(num1, num2)
获得一个从num1开始,到num2结束的数字序列(不含num2本身)
如,range(5, 10)取得的数据是:[5, 6, 7, 8, 9]
语法3:
range(num1, num2, step)
获得一个从num1开始,到num2结束的数字序列(不含num2本身)
数字之间的步长,以step为准(step默认为1)
如,range(5, 10, 2)取得的数据是:[5, 7, 9]
for i in range(5):
print(i)
输出:
0
1
2
3
4
如图代码,思考一下:红框中的print语句,能否访问到变量 i ?
规范上:不允许
实际上:可以
回看for循环的语法,我们会发现,将从数据集(序列)中取出的数据赋值给:临时变量
for 临时变量 in 待处理数据集(可迭代对象):
循环满足条件时执行的代码
临时变量,在编程规范上,作用范围(作用域),只限定在for循环内部
如果在for循环外部访问临时变量:
如果实在需要在循环外访问循环内的临时变量,可以在循环外预先定义(一般不要这样做,因为i变量的取值如下图所示,并不能改变多少)
如图,每一次循环的时候,都会将取出的值赋予i变量。
"""
演示嵌套应用for循环
"""
# 坚持表白100天,每天都送10朵花
# range
i = 0
for i in range(1, 101):
print(f"今天是向小美表白的第{i}天,加油坚持。")
# 写内层的循环了
for j in range(1, 11):
print(f"给小美送的第{j}朵玫瑰花")
print("小美我喜欢你")
print(f"第{i}天,表白成功")
continue
break
continue和break,在for和while循环中作用一致
在嵌套循环中,只能作用在所在的循环上,无法对上层循环起作用
#每天送5朵花,送10天
i = 1
j = 1
while i<=10:
print(f"今天是送花的第{i}天")
i+=1
while j<=5:
print(f"这是送的第{j}朵花")
j+=1
if j==3:
break #如果是break,到达3之后,后面全部跳过
#如果是continue,只会在等于3的时候跳,后面的照样执行