引例:
计算10的阶乘:
不用循环时:
result=1
result*=2
result*=3
......
result*=10
现在只是到10的阶乘,还可以手动输入,如果是到1000呢?到100000呢?那工作量将会巨大。下面正式介绍循环。
作用:
重复执行一段代码,直到特定条件不再满足为止。循环使得程序可以自动化地执行重复性任务,而不需要手动重复相同的代码,提高了代码的可读性和效率。
举例:
- 处理集合中的每个元素。
- 检查某些条件是否为真,并在条件为真时执行某些操作。
- 反复执行直到达到某个条件(如用户输入'q'退出循环)。
- 执行特定次数的迭代或操作。
基本要求:
一定要有循环终止条件,一般不能是死循环
for
主要用来遍历可迭代对象(序列类型)
基本语法
for 变量 in 序列:
# 循环体,执行一些代码
在这个结构中,变量是一个在每次循环迭代时赋值的临时变量,而序列则是需要遍历的对象,可以是列表、元组、字符串等。在每次迭代中,变量会依次被赋予序列中的元素值,并执行循环体内的代码,直到序列中的所有元素都被遍历完为止。
range(start,end,step)
生成数字序列
range(num)
生成0到num-1的数字序列
range(num1,num2)
生成num1到num2的数字序列
range(num1,num2,step)
生成的数字序列为num1,num1+step...... step默认为1
# eg1
list1=range(5)
list2=range(1,4)
list3=range(1,10,2)
for i in [1,2,3]:
a=eval("list%d"%(i))
for i in a:
print(i,end=" ")
print()
# eg2
for i in range(10,0,-1):
print(i,end=" ")
enumerate
将可迭代对象转成enumerate对象{iterable索引与索引所对应的元素(0,seq[0]),(1,seq[1])......} 原型: enumerate(iterable,start=0)
# eg1
s="123456"
for val in enumerate(s):
print(val)
# eg2 使用多个参数接收返回值
for index,val in enumerate(s):
print(index,val)
while
语法:
while 条件:
# 循环体,执行一些代码
条件是一个布尔表达式,当条件为True时,循环体内的代码将被执行。每次执行循环体后,程序会重新检查条件,如果条件仍然为True,则继续执行循环体,直到条件为False为止。
else和循环搭配
基本语法:
for 变量 in 序列:
pass
else:
pass
while 条件:
pass
else:
pass
举例:
for else
for i in range(3):
print(i)
else:
print("end")
while else
cnt=3
while cnt:
print(cnt)
cnt-=1
else:
print("end")
回到最开始计算阶乘的例子,学习过循环后我们就可以很容易解决这个问题,即
result=1
for i in range(1,11):
result*=i
result=1
cnt=10
while cnt:
result*=cnt
cnt-=1