文章目录
1、while循环的基础语法
-
循环的两个要素:
1、条件
2、操作
语法格式:
while 条件:
条件满足时,做的事情
# 演示while循环的基础运用
i = 0
while i < 100:
print(f"hello world {
i}")
i += 1
while循环注意点
- while的条件需要得到布尔类型,True表示继续循环,False表示结束循环
- 需要设置循环终止的条件,如果i += 1配合i < 100,就能确保100次后停止,否则将无限循环
- 空格缩进和if判断相同,都需要设置
- 练习案例:求1-100的和
# 求1-100的和
i = 1
sum = 0
while i <= 100:
sum += i
print(sum)
i += 1
2、while循环的基础案例
通过while循环,配合input语句,判断输入的数字是否等于随机数
-
无限次机会,直到猜中为止
-
每一次猜不中,会提示大了或小了
-
猜完数字后,提示猜了几次
提示:
-
无限次机会,终止条件不适合用数字累加来判断
-
可以考虑布尔类型本身(True or False)
-
需要提示几次猜中,就需要提供数字累加功能
-
随机数可以使用:
import random num = random.randint(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}次")
3、while循环的嵌套应用
# 嵌套循环
# 外层:表白100天
# 内层:每天的表白都送10支玫瑰
i = 1
while i <= 100:
print(f"今天是第{
i}天,准备表白...")
# 内层循环控制变量
j = 1
while j <= 10:
print(f"day{
i}送的第{
j}支玫瑰")
j += 1
print(f"day{
i} end")
i += 1
print(f"坚持到{
i - 1}日,表白成功!")
while循环的嵌套-注意点
- 注意空格缩进(基于空格缩进来决定层次关系)
- 注意条件的设置,避免出现无限循环
4、while循环的嵌套案例
- 补充知识1-print输出不换行
在print语句中,加上end=‘’ 即可输出不换行了
此处的 end=‘’ 其实是print语句的传参功能
print("hi")
print("world")
print("hi--", end='')
print("world")
- 补充知识2-制表符\t
可以让多行字符串进行对齐
- 案例练习:九九乘法表
1、控制行的循环 i <= 9
2、控制每一行的内容输出的循环 j <= i
tip:每一行被乘的数都是当前的i 所以 每一行的内容是 j*i
# 九九乘法表
# 定义外层循环控制变量
i = 1
while i <= 9:
# 定义内层循环的控制变量
j = 1
while j <= i:
# 内层循环的print语句不换行
print(f"{
j}*{
i}={
j * i}\t", end='')
j += 1
i += 1
print() # print空内容,就是输出一共换行的意思
5、for循环的基础语法
基础语法
while循环和for循环的区别:
- while循环的循环条件是自定义的,自行控制循环条件
- for循环是一种“轮询”机制,是对一批内容进行“逐个处理”
语法格式:
for 临时变量 in 待处理数据集(序列):
循环满足条件是时执行的代码
从待处理数据集中:逐个取出数据赋值给临时变量
# 遍历字符串
# 定义字符串name
name = "samantha"
# for循环处理字符串
for x in name:
# 将name的内容,挨个去除 赋予临时变量x
# 就可以在循环体内对x进行处理
print(x)
- 可以看出,for循环是将字符串内容:依次取出
- 所以,for循环也被称之为:遍历循环
for循环注意点
- 无法定义循环条件,只能被动取出数据处理
- 循环内的语句,注意空格缩进
for循环与while循环不同,for循环是无法定义循环条件的。只能操你个被处理的数据集中,依次取出内容进行处理
所以,理论上讲,Python的for循环无法构建无限循环(被处理的数据集不可能无限大)
- 练习案例:数一数有几个a
"""
for循环练习:数一数有几个a
"""
# 统计如下字符串中有几个a
name = "samantha is a cute guy"
# 定义一个变量,用来统计a
count = 0
# for循环统计
# for 临时变量 in 被统计的数据:
for x in name:
if x == "a":
count += 1
print(count)
range语句
"""
演示range()语句的基本使用
"""
# range 语法1 range(num)
# 从0到num结束 (不包含num本身) (共num个数字)
for x in range(10):
print(x)
# range 语法2 range(num1,num2)
# 从num1到num2结束 (不包含num2本身)
for x in range(5, 10):
# 从5开始,到10结束的序列(不包含10),数字间隔默认为1
print(x)
# range 语法3 range(num1,num2,step)
for x in range(5, 10, 2):
# 从5开始,到10结束的一个序列(不包含10),数字之间的间隔是2
print(x)
# while送花
i = 1
while i <= 5:
print("送花")
i += 1
# for送花
for x in range(5):
print("郁金香")
- 练习案例:有几个偶数
# 练习:有几个偶数
count = 0
for x in range(1, 100):
if x % 2 == 0:
count += 1
print(f"1到100(不含100)范围内,有{
count}个偶数")
变量作用域
-
for循环中的临时变量,其作用域限定为:
循环内
-
这种限定:
- 是编程规范的限定,而非强制规定
- 不遵守也能正常运行,但不建议
- 如需访问临时变量,可以预先在循环外定义它
6、for循环的嵌套应用
"""
演示for的嵌套循环
"""
# 坚持表白100天,每天10朵花
# range
for i in range(1, 101):
print(f"今天是第{
i}天")
# 内循环
for j in range(1, 11):
print(f"送{
j}朵花")
print(f"day{
i} end")
print("成功")
for循环的嵌套注意点
-
需要注意缩进,嵌套for循环同样通过缩进来确定层次关系
-
for循环和while循环可以相互嵌套使用
-
练习案例:for循环-九九乘法表
# 通过外层循环控制行数
for i in range(1, 10):
# 通过内层循环控制每一行的输出
for j in range(1, i + 1):
print(f"{
j}*{
i}={
j * i}\t", end='')
# 外层循环可以通过print输出一个回车符
print()
7、循环中断:break和continue
continue
continue关键字用于:中断本次循环,直接进入下一次循环
continue可以用于:for循环和while循环,效果一致
# 演示continue
for i in range(1, 6):
print("语句1")
continue
print("2")
- continue只对当前这一层循环有作用
# 演示 continue的嵌套应用
for i in range(1, 4):
print("111")
for j in range(1, 4):
print("222")
continue
print("333")
print("444")
break
break关键字用于:直接结束循环
break可以用于:for循环和while循环,效果一致
- break关键字同样也只能控制当前循环
# break
for i in range(1, 4):
print("11")
break
print("22")
print("33")
小结
-
continue的作用:
中断所在循环的当次执行,直接进入下一次
-
break的作用:
直接结束所在循环
-
注意事项:
- continue和break,在for和while循环中作用一致
- 在嵌套循环中,只能作用在所在的循环上,无法对上层循环起作用
8、综合案例
练习案例:发工资
"""
循环综合案例:发工资
"""
# 定义账户余额变量
money = 10000
# for循环对员工发工资
for i in range(1, 21):
import random
score = random.randint(1, 10)
if score < 5:
print(f"员工{
i}:绩效分{
score},不满足要求,不发工资,下一位")
# continue跳过发放
continue
if money >= 1000:
money -= 1000
print(f"员工{
i}:满足条件,发放工资1000,公司账户余额:{
money}")
else:
print(f"余额不足,当前余额:{
money},不够发工资,下个月再发")
# break结束发放
break