while循环的基础语法
while语法格式
while 条件:
条件满足时,做的事情1
条件满足时,做的事情2
条件满足时,做的事情3
…(省略)…
只要满足条件,会无限循环执行。
示例:
小美心软,只要表白100次,就会成功。
print("小美,我喜欢你")
print("小美,我喜欢你")
print("小美,我喜欢你")
…(还有97次)…
"""
while循环语句练习
"""
i = 0
while i < 100:
print("小美,我喜欢你")
i += 1
while循环注意点
1、while的条件得到布尔类型,True表示继续循环,False表示结束循环。
2、需要设置循环终止的条件,如i += 1配合i < 100,就能确保100次后停止,否则将无限循环。
3、空格缩进和if判断一样,都需要设置。
总结
while循环的语法格式
while 条件:
条件满足时,做的事情1
条件满足时,做的事情2
条件满足时,做的事情3
…(省略)…
while循环的注意事项
- 条件需提供布尔类型结果,True继续,False停止
- 空格缩进不能忘
- 请规划好循环终止条件,否则将无限循环
练习题
需求:通过while循环,计算从1累加到100的和。
提示:
1、终止条件不能忘,设置为确保while循环100次。
2、确保累加的数字,从1开始,到100结束。
"""
1累加到100
"""
sum = 0
i = 1
while i <= 100:
sum += i
i += 1
print(f"1-100累加的和:{sum}")
while循环的基础案例
猜数字案例
设置一个范围1-100的随机整数变量,通过while循环,配合input语句,判断输入的数字是否等于随机数
- 无限次机会,知道猜中为止
- 每一次猜不中,会提示大了或小了
- 猜完数字后,提示猜了几次
提示:
- 无限次机会,终止条件不适合用数字累加来判断
- 可以考虑布尔类型本身(True or False)
- 需要提示几次猜中,就需要提供数字累加功能
- 随机数可以只用:
import random
random.randint(1, 100)
"""
1-100随机数字猜测小游戏
"""
# 随机生成一个数字
import random
num = random.randint(1, 100)
# 记录猜测次数
count = 0
# 定义循环变量
flag = True
# while开始循环猜测
while flag:
# 获取猜测的数字
guess_num = int(input("请输入你猜测的数字:"))
count += 1
if guess_num == num:
print("恭喜你,猜中了!")
# 定义结束循环变量
flag = False
else:
if guess_num > num:
print("很遗憾你猜大了!")
else:
print("很遗憾你猜小了!")
print(f"你总共猜测了{count}次。")
限制猜测次数
"""
1-100随机数字猜测小游戏
"""
# 随机生成一个数字
import random
num = random.randint(1, 100)
# 记录猜测次数
count = 0
# while开始循环猜测
while count < 3:
# 获取猜测的数字
guess_num = int(input("请输入你猜测的数字:"))
count += 1
if guess_num == num:
print("恭喜你,猜中了!")
else:
if guess_num > num:
print("很遗憾你猜大了!")
else:
print("很遗憾你猜小了!")
print(f"你总共猜测了{count}次。")
while循环的套嵌应用
while循环嵌套的语法格式
while 条件1:
条件1满足时,做的事情1
条件1满足时,做的事情2
条件1满足时,做的事情3
…(省略)…
while 条件2:
条件2满足时,做的事情1
条件2满足时,做的事情2
条件2满足时,做的事情3
…(省略)…
示例:
每天都去向小美表白,直到成功为止,每次表白的流程是:送10朵玫瑰,然后表白。
"""
while嵌套表白练习
"""
# 定义外部循环变量
i = 1
while i <= 100:
print(f"第{i}天向小美表白,准备中。。。。。。")
# 定义内部循环变量
j = 1
while j <= 10:
print(f"送小美第{j}多玫瑰!")
j += 1 print("小美,我喜欢你")
i += 1print(f"第{i - 1}天,终于表白成功了!!!")
while循环的嵌套 - 注意点
同判断语句的嵌套一样,循环语句的嵌套,要注意空格缩进。
- 基于空格缩进来决定层次关系
注意条件设置,避免出现无限循环(除非真的需要无限循环)。
总结
嵌套循环的语法格式
while 条件1:
条件1满足时,做的事情1
条件1满足时,做的事情2
条件1满足时,做的事情3
…(省略)…
while 条件2:
条件2满足时,做的事情1
条件2满足时,做的事情2
条件2满足时,做的事情3
…(省略)…
嵌套循环需要注意的地方
- 注意条件的控制,避免无限循环的出现。
- 多层嵌套,主要空格缩进来确定层次关系。
嵌套循环的使用难点
- 循环条件的控制,层次越多越复杂,需要细心和耐心。
while循环的套嵌案例
补充知识 - print输出不换行
print("Hello")
print("World")
print("Hello", end='')
print("World", end='')
输出:
Hello
World
HelloWorld
补充知识 - 制表符\t
在字符串中,有个特殊符号:\t,效果等同于在键盘上按下:tab键。
它可以让我们的多行字符串进行对齐。
print("Hello World")
print("cainiao xintiandi")
print("Hello\tWorld")
print("cainiao\txintiandi")
输出:
Hello World
cainiao xintiandi
Hello World
cainiao xintiandi
练习题 - 打印九九乘法表
通过while循环,输出如下九九乘法表内容:
1 * 1 = 1
1 * 2 = 2 2 * 2 = 4
1 * 3 = 3 2 * 3 = 6 3 * 3 = 9
1 * 4 = 4 2 * 4 = 8 3 * 4 = 12 4 * 4 = 16
1 * 5 = 5 2 * 5 = 10 3 * 5 = 15 4 * 5 = 20 5 * 5 = 25
1 * 6 = 6 2 * 6 = 12 3 * 6 = 18 4 * 6 = 24 5 * 6 = 30 6 * 6 = 36
1 * 7 = 7 2 * 7 = 14 3 * 7 = 21 4 * 7 = 28 5 * 7 = 35 6 * 7 = 42 7 * 7 = 49
1 * 8 = 8 2 * 8 = 16 3 * 8 = 24 4 * 8 = 32 5 * 8 = 40 6 * 8 = 48 7 * 8 = 56 8 * 8 = 64
1 * 9 = 9 2 * 9 = 18 3 * 9 = 27 4 * 9 = 36 5 * 9 = 45 6 * 9 = 54 7 * 9 = 63 8 * 9 = 72 9 * 9 = 81
分析:
1、总行数为9,所以控制行的循环 i <= 9
2、控制每一行的输出,可以根据题目内容得知,每行输出逐渐增加,最终一个输出9个内容,所以控制每行输出的循环 j <= i
3、可以从题目内容看出,每行的被乘数都是行数,所以每行的每次输出循环内容 j * i
4、每行每次输出内容不换行print(end=''),每行输出内容自动对齐\t
"""
while嵌套循环练习打印九九乘法表
"""
# 定义外部循环变量
i = 1
while i <= 9:
# 定义内部循环变量
j = 1
while j <= i:
print(f"{j} * {i} = {j * i}\t", end='')
j += 1
i += 1
print()
print()表示换行输出。
for循环的基础语法
基础语法
for循环简介
除了while循环语句外,Python同样提供了for循环语句。
两者能完成的功能差不多,但仍有一些区别:
- while循环的循环条件是自定义的,自行控制循环条件
- for循环是一种“轮询”机制,是对一批内容进行“逐个处理”
for循环就是将“待办事项”逐个完成的循环机制。
for循环语句格式
for 临时变量 in 待处理数据集:
循环满足条件时执行的代码
示例:
遍历字符串
# 自定义字符串name
name = "cainiaojizhongying"
# for循环处理字符串
for x in name:
print(x)
可以看出for循环是将字符串的内容:依次取出
所以,for循环也被称之为:遍历循环
for循环注意点
# 自定义字符串name
name = "cainiaojizhongying"
# for循环处理字符串
for x in name:
print(x)
同while循环不同,for循环是无法定义循环条件的。
只能从被处理的数据集中,依次取出内容进行处理。
所以理论上讲,Python的for循环无法构建无限循环(被处理的数据集不可能无限大)。
总结
for循环的语法格式是
for 临时变量 in 待处理数据集:
循环满足条件时执行的代码
for循环的注意点
无法定义循环条件,只能被动取出数据处理。
要注意,循环内的语句,需要有空格缩进。
练习题
数一数有几个a
定义字符串变量name,内容为:“itcainiao is a brand of itcast”,通过for循环,遍历此字符串,统计有多少个英文字母:“a”。
输出示例:
itcainiao is a brand of itcast中共含有:5个字母a
提示:
1、计数可以在循环外定义一个整数类型变量用来做累加计数。
2、判断是否为字母“a”,可以通过if语句结合比较运算符来完成。
"""
数一数字符串中有多少个字母“a”
"""
# 自定义一个字符串变量
name = "itcainiao is a brand of itcast"
# 自定义一个累加变量
count = 0
for i in name:
if i == "a":
count += 1
print(f"itcainiao is a brand of itcast 中共还有{count}个字母a")
range语句
range语句简介
for 临时变量 in 待处理数据集:
循环满足条件时执行的代码
语法中的:待处理数据集,严格来说,称之为:序列类型
序列类型指,其内容可以一个个依次取出的一种类型,包括:
- 字符串
- 列表
- 元组
- 等
目前我们只学习了字符串类型,其余类型在后续章节会详细学习它们。
range语句语法
for循环语句,本质上是遍历:序列类型。
尽管除字符串外,其他的序列类型目前没学习到,但是不妨碍我们通过学习range语句,获得一个简单的数字序列。
语法1:
range(num)
获取一个从0开始,到num结束的数字序列(不含num本身)。
如,range(5)取到的数据是:[0, 1, 2, 3, 4]
for i in range(5):
print(i)
语法2
range(num1, num2)
获得一个从num1开始,到num2结束的数字序列(不含num2本身)。
如,range(5, 10)取得的数据是:[5, 6, 7, 8, 9]
for i in range(5, 10):
print(i)
语法3:
range(num1, num2, step)
获得一个从num1开始,到num2结束的数字序列(不含num2本身),数字之间的步长,以step为准(step默认为1)。
如,range(5, 10, 2)取得的数据是:[5, 7, 9]
for i in range(5, 10, 2):
print(i)
while与for循环语句简单对比
以打印10次我喜欢你为例:
i = 1
while i <=10:
print("我喜欢你")
i += 1
for i in range(10):
print("我喜欢你")
以之前练习过的表白100次为例:
# 定义外部循环变量
i = 1
while i <= 100:
print(f"第{i}天向小美表白,准备中。。。。。。")
# 定义内部循环变量
j = 1
while j <= 10:
print(f"送小美第{j}多玫瑰!")
j += 1
print("小美,我喜欢你")
i += 1print(f"第{i - 1}天,终于表白成功了!!!")
i = 0 # 最后一个print打印的i,因为是最外层,按照python规范需要有一个定义,在这里定义一个i = 0,不影响后面的for循环中的i,意思是让for循环覆盖这个i变量的值
for i in range(1, 101):
print(f"第{i}天,我准备向小芸表白,准备中。。。。。")
for j in range(1, 11):
print(f"向小芸送第{j}朵玫瑰")
print("小芸我喜欢你")
print(f"第{i}天,终于表白成功了")
总结
range语句的功能
获得一个数字序列
range语句的语法格式
语法1: range(num)
语法2: range(num1, num2)
语法3: range(num1, num2, step)
range语句的注意事项
语法1从0开始,到num结束(不含num本身)。
语法2从num1开始,到num2结束(不含num2本身)。
语法3从num1开始,到num2结束(不含num2本身),步长以step值为准(stop默认为1)。
练习题
题目:有几个偶数
定义一个数字变量num,内容随意;并使用range()语句,获取从1到num的序列,使用for循环遍历它。在遍历的过程中,统计处有多少偶数出现。
输出示例:
1到100(不含100本身)范围内,有49个偶数。
提示:
1、序列可以使用:range(1, num)的到。
2、偶数通过if判断,判断数字余2是否为0即可。
"""
求1-100整数中,偶数的个数
"""
# 定义一个计数变量
count = 0
# range语句获取1-100整数
for i in range(1, 100):
if (i % 2) == 0:
count += 1
print(f"1到100(不含100本身)范围内,有{count}个偶数。")
变量作用域
思考
for i in range(5):
print(i)
print(i)
如上代码,思考一下:
最后一个print语句,能否访问到变量i ?
规范上:不允许
实际上:可以
在pycharm中最后一个print语句中的i,会被标黄,但是不影响代码运行。
规范用法:
i = 0
for i in range(5):
print(i)
print(i)
最后一个print打印的i,因为是最外层,按照python规范需要有一个定义,在这里定义一个i = 0,不影响后面的for循环中的i,意思是让for循环覆盖这个i变量的值。
总结
for循环中的临时变量,其作用域限定为
循环内
这种限定的原因
- 是编程规范的限定,而非强制限定
- 不遵守也能正常运行,但是不建议这样做
- 如需访问临时变量,可以预先在循环外定义它
for循环的套嵌应用
for 循环的嵌套语法
同while一样,for循环也支持嵌套使用,需掌握好空格格式。
for 临时变量 in 待处理数据集(序列):
循环满足条件应做的事情1
循环满足条件应做的事情2
循环满足条件应做的事情3
…(省略)…
for 临时变量 in 待处理数据集(序列):
循环满足条件应做的事情1
循环满足条件应做的事情2
循环满足条件应做的事情3
…(省略)…
示例:
同样以表白案例为例
- 坚持表白100天
- 每天送花10束
i = 0
for i in range(1, 101):
print(f"第{i}天,我准备向小芸表白,准备中。。。。。")
for j in range(1, 11):
print(f"向小芸送第{j}朵玫瑰")
print("小芸我喜欢你")
print(f"第{i}天,终于表白成功了")
for 循环的嵌套注意点
我们目前学习了2个循环,while循环和for循环。
这两类循环语句是可以相互嵌套的,如下,表白的案例可以改为:
i = 0
for i in range(1, 101):
print(f"第{i}天,我准备向小芸表白,准备中。。。。。。")
j = 1
while j <= 10:
print(f"向小芸送第{j}朵玫瑰")
j += 1
print("小芸我喜欢你")
print(f"第{i}天,终于表白成功了")
或者:
i = 1
while i <= 100:
print(f"第{i}天,我准备向小芸表白,准备中。。。。。")
i += 1
for j in range(1, 11):
print(f"向小芸送第{j}朵玫瑰")
print("小芸我喜欢你")
print(f"第{i - 1}天,终于表白成功了")
总结
for循环的嵌套语法
for 循环 或 while 循环:
循环满足条件应做的事情1
循环满足条件应做的事情2
循环满足条件应做的事情3
…(省略)…
for 循环 或 while 循环:
循环满足条件应做的事情1
循环满足条件应做的事情2
循环满足条件应做的事情3
…(省略)…
注意事项
- 需要注意缩进,嵌套for循环同样通过缩进确定层次关系。
- for循环和while循环可以相互嵌套使用。
练习题 - 打印九九乘法表
通过while循环,输出如下九九乘法表内容:
1 * 1 = 1
1 * 2 = 2 2 * 2 = 4
1 * 3 = 3 2 * 3 = 6 3 * 3 = 9
1 * 4 = 4 2 * 4 = 8 3 * 4 = 12 4 * 4 = 16
1 * 5 = 5 2 * 5 = 10 3 * 5 = 15 4 * 5 = 20 5 * 5 = 25
1 * 6 = 6 2 * 6 = 12 3 * 6 = 18 4 * 6 = 24 5 * 6 = 30 6 * 6 = 36
1 * 7 = 7 2 * 7 = 14 3 * 7 = 21 4 * 7 = 28 5 * 7 = 35 6 * 7 = 42 7 * 7 = 49
1 * 8 = 8 2 * 8 = 16 3 * 8 = 24 4 * 8 = 32 5 * 8 = 40 6 * 8 = 48 7 * 8 = 56 8 * 8 = 64
1 * 9 = 9 2 * 9 = 18 3 * 9 = 27 4 * 9 = 36 5 * 9 = 45 6 * 9 = 54 7 * 9 = 63 8 * 9 = 72 9 * 9 = 81
"""
for循环语句演示
九九乘法表
"""
for i in range(1, 10):
for j in range(1, i + 1):
print(f"{j} * {i} = {j * i}\t", end='')
print()
或者:
for i in range(1, 10):
for j in range(1, 10):
if j <= i:
print(f"{j} * {i} = {j * i}\t", end='')
print()
循环终端:break和continue
思考
无论是while循环或是for循环,都是重复性的执行特定操作。
在这个重复的过程中,会出现一些其他情况让我们不得不:
- 暂时跳过某次循环,直接进行下一次
- 提前退出循环,不再继续
对于这种场景,Python提供continue和break关键字,用以对循环进行临时跳过和直接结束。
continue
continue关键字用于:中断本次循环,直接进入下一次循环。
continue可以用于:for循环和while循环,效果一致。
for i in range(1, 100):
语句1
continue
语句2
如上代码,在循环内,遇到continue就结束当次循环,进行下一次;所以 语句2 是不会执行的。
应用场景:在循环中,因某些原因,临时结束本次循环。
continue在嵌套循环中的应用
continue关键字只可以控制:它所在的循环临时中断。
for i in range(1, 100):
语句1
for j in range(1, 100):
语句2
continue
语句3
语句4
如以上代码,在内循环执行到continue位置,就会中断本次循环直接进入下一次循环;最终输出的结果是:语句1,语句2,语句4循环输出。
break
break关键字用于:直接结束循环。
break可以用于:for循环和while循环,效果一致。
for i in range(1, 100):
语句1
break
语句2
语句3
如上代码,在循环内,遇到break就结束循环了;所以,执行了语句1后,直接执行语句3了。
break在嵌套循环中的应用
break关键字同样只可以控制:它所在的循环结束。
for i in range(1, 100):
语句1
for j in range(1, 100):
语句2
break
语句3
语句4
如上代码,在循环中遇到break关键字,循环就直接结束了,直接输出语句4。
总结
continue的作用
中断所在循环的当次执行,直接进入下一次。
break的作用
直接结束所在的循环。
注意事项
continue和break,在for和while循环中作用一直;在嵌套循环中,只能作用在所在的循环上,无法对上层循环起作用。
综合案例
练习题 - 发工资
某公司,账户余额1万元,给20名员工发工资。
- 员工编号从1到20,依次领取工资,没人可领取1000元。
- 领工资时,财务判断员工的绩效分(1 - 10)(随机生成),如果低于5,不发工资,换下一位。
- 如果工资发完了,结束发工资。
输出示例:
员工1满足条件,发放工资1000,公司账户余额9000元。
员工2满足条件,发放工资1000,公司账户余额8000元。
员工3绩效分1,不满足,不发工资,下一位。
员工4绩效分4,不满足,不发工资,下一位。
员工5绩效分2,不满足,不发工资,下一位。
员工6满足条件,发放工资1000,公司账户余额7000元。
提示:
- 使用循环对员工依次发工资。
- continue用于跳过员工,break直接结束发工资。
- 随机数可以用import random
random.randint(1, 10)
"""
给员工发工资小程序
"""
# 定义工资总额变量
money = 10000
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
标签:语句,Python,range,笔记,while,循环,print,100 From: https://blog.51cto.com/zhanghongxin/7428384