流程控制-循环
概述
循环结构属于流程控制的一种,在满足某些条件的情况下,重复的做一些事情。
- while 循环,适用于循环次数不固定的情况
- for 循环,适用于循环次数固定的情况
循环的要素
- 初始化条件,表示循环从哪里开始执行
- 判断条件,表示循环什么时候终止,只要判断条件满足,循环就一直进行
- 循环体, 表示判断条件成立的情况下,重复做的事情
- 控制条件,表示控制初始化条件变化的
while循环详解
- 代码格式
初始化条件1
while 判断条件2:循环体3控制条件4
执行流程
第1次循环 1,2,3,4 假设判断条件成立
重复循环 2,3,4 假设判断条件成立
最后1次循环 2 判断条件不成立,循环结束
例1:打印输出5次 Hello World
i = 1 # 初始化条件
while i <= 5: # 判断条件# 判断条件成立,执行循环体print(f"Hello World! {i}") # 循环体# 循环执行1次,i就+1i += 1 # 控制条件,控制变量(初始化条件) 变化
例2: 循环求和,1 ~ 100 之间数字和
i = 1
sum = 0
while i <= 100:sum += ii += 1
print(f'数字和值为 {sum}')
例3: 循环求和,1 ~ 100之间的偶数和
i = 1
sum = 0
while i <= 100 :if i % 2 == 0:sum += ii += 1
print(f'偶数和值为 {sum}')
例4: 循环求和,1 ~ 100 之间的奇数和
i = 1
sum = 0
while i <= 100 :if i % 2 != 0:sum += ii += 1
print(f'偶数和值为 {sum}')
while循环经典案例
统计水仙花数
需求:打印所有的水仙花数,统计水仙花数的个数
什么是水仙花数
- 它是1个三位数
- 它的各个位数的立方和相加等于它本身
- 例如 153 = 1 3 + 5 3 + 3 3 153 = 1^3 + 5^3 + 3^3 153=13+53+33
# 1. 定义初始化值,从 100 开始
i = 100
count = 0 # 统计个数初始值
# 2. while循环,获取从100 ~ 1000之间所有的值,左闭右开区间
while i< 1000:# 3. 获取各个位数的数字unit = i // 1 % 10 # 个位数tens = i // 10 % 10 # 十位数hund = i // 100 % 10 # 百位数# 4. 判断是否为水仙花数if unit * unit * unit + tens * tens * tens + hund * hund * hund == iprint(i) # 打印水仙花数count += 1 # 统计个数# 5. 控制条件 i += 1i += 1
print(f'水仙花个数: {count}')
打印矩形
需求:打印5行5列的矩形,要求一次打印1个 *
i = 1
while i <= 5:j = 1while j <= 5:print('*', end='')j += 1print() # 打印一行之后换行i += 1
打印正三角形
i = 1
while i <= 5:j = 1while j <= i:print('*', end='')j += 1print() # 打印一行之后换行i += 1
打印倒三角形
i = 1
while i <= 5:j = iwhile j <= 5:print('*', end='')j += 1print() # 打印一行之后换行i += 1
打印99乘法表
思路:
99乘法表是一个正三角形
先打印出1个9行9列的矩形
然后将其改造为9行的正三角形
用 i 和 j 两个变量 替换其中的 * 符号
i = 1
while i <= 9:j = 1while j <= i:print(f'{j}*{i}={i*j}',end='\t')j += 1print()i += 1
for 循环
- 代码格式
for 临时变量 in 列表或者字符串等:循环满足条件时执行的代码
for循环与while循环的区别
- while循环可以完成的功能for循环基本都可以实现,for循环可以完成的功能while循环基本也可以实现
- for循环往往用在遍历 字符串、列表等
- while循环往往用在重复多次运行上
例1:for循环遍历字符串
str = 'helloworld'
for i in str:print(i)
例2:for循环,打印1~5之间的数字
range(起始值,结束值,步长) 生成指定范围内的数字,默认起始值为 0
for i in range(1,5):print(i)
例3: for循环,统计 1 ~ 100 之间的奇数和
sum = 0
for i in range(1,101):if i % 2 != 0:sum += i
print(sum)
例4:使用for循环打印99乘法表
for i in range(1,10):for j in range(1,i+1):print(f'{j}*{i}={i*j}',end='\t')print()