首页 > 编程语言 >Python学习笔记-Python循环语句

Python学习笔记-Python循环语句

时间:2023-09-10 22:02:58浏览次数:47  
标签:语句 Python range 笔记 while 循环 print 100

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

相关文章

  • 循环和分支语句2
    1.for循环:正常的while循环语句结构:intmain(){ inti=0;//初始化 while(i<10)//判断 { //...... i++;//调整 } return0;}担当代码块中的初始化、判断及调整区域三个部分离得很远的话,就会出现不方便调整的问题,因此使用循环结构时一般使用for循环:for(表达式1;表......
  • Python 潮流周刊第 19 期摘要
    原文全文:https://pythoncat.top/posts/2023-09-09-weekly......
  • 学习笔记一
    一、知识归纳(1)第一章主要介绍了Unix/Linux系统的基本概念和术语,包括进程、线程、文件系统、系统调用等,主要是引进Linux和Unix的概念和基本知识,例如Unix/Linux文件系统采用树形组织结构以及Ubuntu和Linux的系统管理。(2)第二章主要介绍了Unix/Linux系统中的文本编辑器Vim,包括Vim的......
  • 《信息安全系统设计与实现》第一周学习笔记
    知识点归纳第一章1.15以前的内容基本以Ubuntu和Linux的介绍和安装为主,因为在大一已经有过安装过程了,所以这一部分省略。添加新用户sudoadduserusername第二章Linux文本编辑器vim在使用命令sudoaptinstallvim后进行安装vim文本编辑器命令如下i:插入模式,插入文本a:......
  • 【学习笔记】树状数组
    PS:未经许可,禁止转载。思路来源于我的老师$\text{hoogy}$,非常感谢,%%%。-五分钟丝滑动画讲解|树状数组-〔manim|算法|数据结构〕完全理解并深入应用树状数组单点修改,区间查询前置芝士:一维前缀和设原数组$a$,前缀和数组$b$,则有:$b[i]=\sum\limits_{j=1}^ia[j]$。推......
  • 【学习笔记】【自学】【模板】矩阵快速幂
    题目描述:给定$n\timesn$的矩阵$A$,求$A^k$。矩阵:一个$m\timesn$的矩阵是一个由$m$行$n$列元素排列成的矩形阵列。即形如$$A=\begin{bmatrix}a_{11}&a_{12}&\cdots&a_{1n}\\a_{21}&a_{22}&\cdots&a_{2n}\\\vdots&\vdots&......
  • 密码协议学习笔记(4):比特承诺
    比特承诺:股票经纪人甲试图说服乙购买他的服务,甲表示,它已分析出若干支股票将会涨停,但在乙出钱购买它的服务之前,它不能透露如此有价值的信息,于是甲将这几支股票写在纸上,并锁进保险箱里,将保险箱交给乙,表示,一个月后将钥匙给乙,如果到时候打开保险柜,看看里面写的股票是否确......
  • 【学习笔记】【自学】【模板】三分法
    题目描述:给定一个$n$次函数$f(x)$形如$a_1x^n+a_{2}x^{n-1}+......+a_{n-1}x^2+a_nx+a_{n+1}$,求$f(x)_{\max}$,且$x\in[l,r]$,设使得$f(x)_{\max}$的$x$为$x_{\max}$。对于一个区间$[l,r]$而言,若确定使得$f(x)$为最大值的$x$定在$[l,r]$中,则可以使用三分法求......
  • 【学习笔记】P8590 『JROI-8』这是新历的朝阳,也是旧历的残阳
    比较有思维的一个数学题,写个笔记纪念一下。显然,为了使$\sum\limits_{i=1}^na_i^2$最大,整数一定要放最后一段,即求$\sum\limits_{i=1}^n(a_i+m)^2$,而负数需要分情况考虑,即放第一段还是最后一段,中间的$m-2$是空段,只考虑$1$和$m$这两个极端情况。可以设中间节点$t$,$a_{i......
  • 【学习笔记】【自学】三维偏序 (CDQ)
    [P3810【模板】三维偏序(陌上花开)](https://www.luogu.com.cn/problem/P3810)题目描述:有$n$个元素,第$i$个元素有$a_i,b_i,c_i$三个属性,设$f(i)$表示满足$a_j\leqa_i$且$b_j\leqb_i$且$c_j\leqc_i$且$j\nei$的$j$的数量。对于$d\in......