python中的两种循环

python中的两种循环

  • for循环(计数循环)
  • while循环(条件循环)
  • 两种循环的区别
  • range函数
  • 跳出循环
    • break示例
    • continue示例
  • 循环嵌套
  • 循环练习

循环,三大语言结构之一,当它满足条件时反复执行某一段代码的过程,在python中有两种循环命令,分别为 for循环和 while循环

for循环(计数循环)

python中常用的循环结构之一,可以遍历一个可迭代对象中的元素。因为 for循环的循环次数是由可迭代对象决定的,因此for循环又称为计数循环

for 变量 in 可迭代对象:
    循环体
  • 变量表示在每次迭代中用于接收可迭代对象中的元素的变量名
  • 可迭代对象是一个序列(如字符串、列表、元组、字典、集合等)
  • 循环体是需要重复执行的代码块

在循环体中,可以使用变量来访问当前迭代的元素。例如,可以对列表中的每个元素进行操作,或者根据字典中的键值对执行相应的操作。

for循环的执行过程:

  1. 遍历可迭代对象中的每个元素,依次赋值给变量
  2. 执行循环体中的代码
  3. 重复上述过程,直至遍历完可迭代对象中的所有元素

for循环还可以与range()函数结合使用,用于按照一定的范围进行循环

示例

for x in "abcdef":
    print(x,end="")
print()#这里为了输出结果的美观,我让它输出完所有元素再进行换行

n=[1,2,3,4,5]
for y in n:
    print(y,end="")
print()#这里为了输出结果的美观,我让它输出完所有元素再进行换行

输出结果:

abcdef
12345

while循环(条件循环)

python中的另一种常用循环结构,用于在满足指定条件的情况下重复执行一段代码,因为其基于条件是否满足判断是否进行循环,因此又称为条件循环

while 条件:
    循环体
  • 条件是一个布尔表达式,当该表达式的值为True时,循环体会被执行。当循环体执行完后,会再次检查条件的值,如果仍然为True,则继续执行循环体,直至条件的值为False时,循环终止
  • 循环体是需要重复执行的代码块

while循环的执行过程:

  1. 检查条件的值,如果为True,则执行循环体,否则跳出循环。
  2. 执行循环体中的代码。
  3. 返回步骤1,继续检查条件的值。

PS:如果条件一直为True,循环将会无限执行下去,直至程序被手动中断或满足某个条件跳出循环。

示例

total = 0#存储计算结果
i = 1#当前的数字/循环次数
while i <= 100:
    total += i
    i += 1#更新条件中的变量,如果不改变,条件一直满足的话,会无限制的执行循环
print(total)

输出结果:

5050

两种循环的区别

for循环和while循环是两种常见的循环结构,很多时候使用任意一种都可以达到我们的目的,但它们的使用方式不同,并且在某些特殊场景上有一些区别。

  1. 使用方式:
  • for循环:用于遍历一个可迭代对象(如列表、字符串、字典等),按顺序依次访问其中的元素
  • while循环:根据条件表达式的真假来决定是否继续循环,只要条件为真,就会一直执行循环体
  1. 控制变量:
  • for循环:通常使用一个控制变量来迭代遍历可迭代对象中的元素,循环次数固定且已知
  • while循环:需要手动定义一个控制变量,并在循环体内更新该变量的值,循环次数可以根据条件的变化而不同
  1. 适用场景:
  • for循环:适用于已知循环次数的情况,如遍历列表、字符串等
  • while循环:适用于未知循环次数的情况,循环次数由条件决定,如根据用户输入来判断是否继续循环

range函数

Python中的内置函数,用于生成一系列连续的整数,一般用于for循环体中。 可以使用range(n)来循环n次,或者使用range(start, stop, step)来指定循环的起始值、结束值和步长

range(stop)
range(start,stop,step)

示例

for x in range(5):
    print(x,end="")
01234

for x in range(1,5):
    print(x,end="")
1234

for x in range(5,1,-1):
    print(x,end="")
5432

跳出循环

breakcontinue是两个在循环中常用的控制流语句

  • breeak用于终止循环,当程序执行到break语句时,即使循环条件仍然为真,循环也会立即终止
  • continue用于跳过本次循环,即当程序执行到continue语句会跳过本次循环中剩下的代码,提前进行下一次循环

break示例

for x in range(10):
    if x==5 :
        break #当x等于5时结束整个循环
    print(x,end="")
    
x = 0
while x < 10:
    if x == 5:
        break#当x等于5时结束整个循环
    print(x,end="")
    x += 1#更新变量值
    
#输出结果

    01234

continue示例

for x in range(10):
    if x%2==0 :#如果x对2取余结果为0
        continue#跳过本次循环中该行以下内容,即当x为偶数时不打印
    print(x)

x = 0
while x < 10:
    if x%2 == 0:#如果x对2取余结果为0
        continue#当x为偶数时不打印
    print(x)
    x += 1#更新变量值
    
#输出结果

1
3
5
7
9

循环嵌套

for循环与while循环可以单独嵌套也可以相互嵌套

示例

b = 1#先给一个初始值
while b <= 9:#条件,当b小于等于9时执行循环体,外层循环决定行数
    a = 1#因为乘法表每一行都会从1开始,因此将a的值放在第一次循环内部,每次循环都会从1开始
    while a <= b:#当a小于等于b时,执行内部循环,内部循环次数决定每行的列数
        print(f"{a} * {b} = {a*b}",end="\t")#输出表达式及结果,并且为了美观每输出一列后添加水平间距,且不换行
        a += 1#增加一列
    print()#当a大于b时执行此行,进行换行并结束内部循环,往下执行外部循环的下一行命令
    b += 1#增加一行,并返回外部循环起始位置,进行下一次循环
for b in range(1,10):#同样输出乘法表,因为已知循环次数,使用for循环就相对简洁一些,同样外部循环决定行数
    for a in range(1,b+1):#通过range函数,使结束值随着循环改变而改变,并且每行都从起始值1开始循环输出,循环次数决定每行的列数
        print(f"{a} * {b} = {a*b}",end="\t")#输出表达式及结果,并且为了美观每输出一列后添加水平间距,且不换行
    print()#当内部循环结束时进行换行,进入下一次外部循环
for b in range(1, 10):#也可以使它们互相嵌套,同样外层循环决定行数
    a = 1#因为乘法表每一行都会从1开始,因此将a的值放在第一次循环内部,每次循环都会从1开始
    while a <= b:#当a小于等于b时,执行内部循环,内部循环次数决定每行的列数
        print(f"{a} × {b} = {a*b}", end="\t")#输出表达式及结果,并且为了美观每输出一列后添加水平间距,且不换行
        a += 1#增加一列
    print()#当a大于b时执行此行,进行换行并结束内部循环,开始下一次外部循环

输出结果

#输出结果一致
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循环语句更加简洁
n = int(input("请输入行数:"))#从用户手中获取行数
for i in range(1, n+1):
    # 打印空格
    for j in range(n-i):
        print(" ", end="")#输出空格且不换行,循环n-i次
    # 打印星号
    for j in range(2*i - 1):
        print("*", end="")#输出“*”且不换行,循环2i-1次
    print()#输出完当前行所有的“*”后换行,并进入循环开始打印下一行

同样也可以使用while循环嵌套或者相互嵌套来完成,整体逻辑不变,但在简单的环境下,仅循环多次,输出内容不变时,建议使用如下写法,直接使用“*”来进行重复输出

n=int(input("请输入要打印的层数:"))
for x in  range(1,n+1):
    print(" "*(n-x),end="")#在第x行输出n-x个空格且不换行
    print("*"*(2*x-1))#在第x行输出2x-1个“*”换行

输出结果

#我这里输入n为3
  *
 ***
*****

扩展
打印菱形
ps:这里要求输入奇数,可以在外层加一个if语句来限制

n = int(input("请输入要打印菱形的总行数:"))
# 打印上半部分,上半部分与上面相同
for i in range(1, n // 2 + 2):#这里把中间一行算在上半部分,所以多加了1
    for j in range(n // 2 + 1 - i):
        print(" ", end="")
    for j in range(2 * i - 1):
        print("*", end="")
    print()#打印完每行换行
#打印下半部分
for i in range(n // 2, 0, -1):#直接把范围反转顺序输出即可
    for j in range(n // 2 + 1 - i):
        print(" ", end="")
    for j in range(2 * i - 1):
        print("*", end="")
    print()#打印完每行换行

同样可以使用·while循环嵌套相互嵌套,也可以不使用循环嵌套,直接用两次单独的循环

n=int(input("请输入要打印菱形的总行数:"))
for x in  range(1,n//2+2):
    print(" "*(n//2+1-x),end="")
    print("*"*(2*x-1))
for x in  range(n//2,0,-1):#直接把范围反转顺序输出即可
    print(" " * (n // 2 + 1 - x), end="")
    print("*" * (2 * x - 1))

输出结果

#这里我输入n为5
  *
 ***
*****
 ***
  *

你可能感兴趣的:(python,练习,python)