一、while循环
1. 基础语法
核心 :条件为布尔类型,True继续循环,False结束循环。
2. 注意事项
-
条件必须返回布尔值
-
必须设置循环终止条件(如
i += 1),否则无限循环 -
严格遵守空格缩进规则
3. 基础案例
案例1:向小美表白100次
cpp
i = 0
while i < 100:
print("小美,我喜欢你")
i += 1
案例2:计算1-100的和
cpp
i = 1
sum_total = 0
while i <= 100:
sum_total += i
i += 1
print(f"1-100的和为:{sum_total}") # 结果:5050
案例3:猜数字游戏
cpp
import random
num = random.randint(1, 100)
count = 0
flag = True
while flag:
guess = int(input("请输入你猜的数字:"))
count += 1
if guess > num:
print("大了")
elif guess < num:
print("小了")
else:
print(f"猜中了,你一共猜了{count}次")
flag = False
4. while循环嵌套
1)语法
cpp
while 条件1:
条件1满足执行的代码
while 条件2:
条件2满足执行的代码
循环2的终止条件
循环1的终止条件
2)注意事项
-
按缩进确定层次关系
-
分别设置各层循环的终止条件,避免无限循环
案例1:表白100天,每天送10朵玫瑰
cpp
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}天,表白成功")
案例2:打印九九乘法表
cpp
i = 1
while i <= 9:
j = 1
while j <= i:
print(f"{j}*{i}={i*j}\t", end="")
j += 1
print() # 换行
i += 1
补充 :end=""让print不换行,\t制表符实现对齐。
二、for循环
1. 基础语法
cpp
for 临时变量 in 待处理数据集(可迭代对象):
循环执行的代码
核心:轮询机制,逐个取出数据集内容处理,无法自定义循环条件,无无限循环(数据集有限)。
2. 可迭代对象
字符串、数字序列(range生成)、列表、元组等。
3. 基础案例
案例1:遍历字符串
cpp
name = "itheima"
for x in name:
print(x) # 逐个输出i t h e i m a
案例2:统计字符串中字母a的个数
cpp
name = "itheima is a brand of itcast"
count = 0
for x in name:
if x == "a":
count += 1
print(f"字符串中共含有:{count}个字母a") # 结果:4
4. range语句
生成数字序列,常用作for循环的数据集,左闭右开。
三种语法
-
range(num):生成0到num-1的序列cppfor i in range(5): print(i) # 0 1 2 3 4 -
range(num1, num2):生成num1到num2-1的序列cppfor i in range(5, 10): print(i) # 5 6 7 8 9 -
range(num1, num2, step):按步长step生成序列cppfor i in range(5, 10, 2): print(i) # 5 7 9
案例:统计1到num的偶数个数
cpp
num = 100
count = 0
for i in range(1, num):
if i % 2 == 0:
count += 1
print(f"1到{num}(不含本身)范围内,有{count}个偶数") # 结果:49
5. 临时变量作用域
-
规范上:临时变量仅作用于for循环内部
-
实际上:外部可访问,但不建议
-
如需外部访问,提前在循环外定义:
cpp
i = 0
for i in range(5):
print(i)
print(f"循环外访问i:{i}") # 结果:4
6. for循环嵌套
1)语法
cpp
for 临时变量1 in 数据集1:
执行代码
for 临时变量2 in 数据集2:
执行代码
2)注意事项
-
按缩进定层次
-
for和while可相互嵌套
案例1:表白100天(for嵌套)
cpp
for i in range(1, 101):
print(f"今天是向小美表白的第{i}天,坚持。")
for j in range(1, 11):
print(f"送给小美的第{j}朵玫瑰花")
print(f"小美,我喜欢你(第{i}天的表白结束)")
print(f"第100天,表白成功")
案例2:for循环打印九九乘法表
cpp
for i in range(1, 10):
for j in range(1, i+1):
print(f"{j}*{i}={i*j}\t", end="")
print()
三、循环中断:break和continue
1. continue
-
作用:中断本次循环,直接进入下一次
-
适用:for/while循环,嵌套中仅作用于所在层循环
cpp
# 案例:打印1-5,跳过3
for i in range(1, 6):
if i == 3:
continue
print(i) # 1 2 4 5
2. break
-
作用:直接结束整个循环
-
适用:for/while循环,嵌套中仅作用于所在层循环
cpp
# 案例:打印1-5,遇到3终止
for i in range(1, 6):
if i == 3:
break
print(i) # 1 2
3. 综合案例:发工资
cpp
import random
money = 10000 # 账户余额
for i in range(1, 21):
score = random.randint(1, 10)
if score < 5:
print(f"员工{i},绩效分{score},不发工资")
continue
if money < 1000:
print("工资发完了,结束发放")
break
money -= 1000
print(f"员工{i},绩效分{score},发工资1000,余额{money}")