for
循环和 while
循环
python中常用的循环结构之一,可以遍历一个可迭代对象中的元素。因为 for
循环的循环次数
是由可迭代对象
决定的,因此for
循环又称为计数循环
for 变量 in 可迭代对象:
循环体
变量
表示在每次迭代中用于接收可迭代对象中的元素的变量名可迭代对象
是一个序列(如字符串、列表、元组、字典、集合等)循环体
是需要重复执行的代码块在循环体中,可以使用变量
来访问当前迭代的元素。例如,可以对列表中的每个元素进行操作,或者根据字典中的键值对执行相应的操作。
for
循环的执行过程:
可迭代对象
中的每个元素,依次赋值给变量
循环体
中的代码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
python中的另一种常用循环结构,用于在满足指定条件的情况下重复执行一段代码,因为其基于条件是否满足
判断是否进行循环,因此又称为条件循环
while 条件:
循环体
条件
是一个布尔表达式,当该表达式的值为True
时,循环体会被执行。当循环体执行完后,会再次检查条件
的值,如果仍然为True
,则继续执行循环体,直至条件
的值为False
时,循环终止循环体
是需要重复执行的代码块while
循环的执行过程:
条件
的值,如果为True
,则执行循环体,否则跳出循环。循环体
中的代码。条件
的值。PS:如果条件
一直为True
,循环将会无限
执行下去,直至程序被手动中断或满足某个条件跳出循环。
示例
total = 0#存储计算结果
i = 1#当前的数字/循环次数
while i <= 100:
total += i
i += 1#更新条件中的变量,如果不改变,条件一直满足的话,会无限制的执行循环
print(total)
输出结果:
5050
for
循环和while
循环是两种常见的循环结构,很多时候使用任意一种都可以达到我们的目的,但它们的使用方式不同,并且在某些特殊场景上有一些区别。
for
循环:用于遍历一个可迭代对象(如列表、字符串、字典等),按顺序依次访问其中的元素while
循环:根据条件表达式的真假来决定是否继续循环,只要条件为真,就会一直执行循环体for
循环:通常使用一个控制变量来迭代遍历可迭代对象中的元素,循环次数固定且已知while
循环:需要手动定义一个控制变量,并在循环体内更新该变量的值,循环次数可以根据条件的变化而不同for
循环:适用于已知循环次数的情况,如遍历列表、字符串等while
循环:适用于未知循环次数的情况,循环次数由条件决定,如根据用户输入来判断是否继续循环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
break
和continue
是两个在循环中常用的控制流语句
breeak
用于终止循环,当程序执行到break
语句时,即使循环条件仍然为真,循环也会立即终止continue
用于跳过本次循环,即当程序执行到continue
语句会跳过本次循环中剩下的代码,提前进行下一次循环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
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
*
***
*****
***
*