(五)Python控制结构(循环结构)
接上一篇Python控制结构(条件结构)点击蓝色字跳转查看。
2.循环结构
当你要循环的做一件事情,可以一次又一次的去写这段代码,但是不是太繁琐了。这个时候我们就考虑用循环结构来写。python的循环有for循环和while循环两种。如果确定循环次数,建议用for循环(while也可以),不确定的话建议用while。
- 在做一个任务的时候,我们要敏锐的察觉到哪些地方是需要循环的。
- 确定循环之后,我们首先选一下for还是while更合适,
- 其次要确定我们到底要循环什么内容,循环的过程中需要更新什么内容、变量,循环前是否需要准备好待用的一些变量并初始化。
- 最后也是最重要的,循环什么时候结束,你应该不希望你的程序陷入无限循环吧
2.1for循环
语法如下:可迭代对象(Iterable)是指能够被遍历(即逐个访问元素)的对象,在Python中包括列表、字符串、字典等类型。临时变量代指每次循环遍历的元素(数据)
for 临时变量 in 可迭代对象:代码段
我想循环打印0,1,2,3,4
# 使用range函数
print("0到4的数字:")
for i in range(5):print(i, end=",") #i第一次循环就是0,第二次循环就是1
#这里print语句里面多了一个end的值,这个表示每次输出完i之后打一个逗号,如果不指定end的值,默认是换行
这里使用了一个新函数,range()函数,括号内需要一个范围区间,返回的是一个可迭代对象(类型是对象),通过for循环可以将这个数字序列打印出来
- range(3,7,2):,也就是[3,7)这样的左闭右开的区间,2为步长(一步走多远),所以打印出来就是:3,5
- range(1,5):少了一个参数,少的是步长,默认步长为1,所以打印出来就是1,2,3,4
- range(5):少了2个参数,除了步长少了,起始值也少了,默认为0,也就是[0,5)这样的左闭右开的区间,所以打印出来就是0,1,2,3,4
使用for循环遍历字符串"Python"的每个字符。
for word in "Python":print(word)
遍历列表:
# 遍历列表
fruits = ["苹果", "香蕉", "橙子", "葡萄"]
for fruit in fruits:print(f"我喜欢吃{fruit}")
【实战】for实现累加计算
计算1+2+3+....+999+1000的结果
sum=0
for i in range(1,1001): #实际区间[1,1001)sum = sum + i
print(sum)
2.2while循环
while语句一般用于实现条件循环,该语句由关键字while、循环条件和冒号组成,while语句和从属于该语句的代码段组成循环结构,其语法格式如下:
while 条件表达式:代码块
执行while语句时,若循环条件的值为True,则执行之后的代码段,执行完代码段之后再次判断循环条件,如此往复,直至循环条件的值为False时循环终止,执行循环之后的代码。
【实战】while实现累加计算
再用while练习一下2.1的实战
i = 1 # 循环开始前就准备好变量i,保存要循环累加的数字,初始值为1
sum = 0 # 循环开始前就准备好sum变量,保存累加的结果,初始值为0
while i <= 1000: # 使用while循环,循环结束条件就是i小于等于1000的时候sum += i #我们要循环累加,所以不断地用新值i加到sum里i += 1 #循环的过程i代表每一次的新值,所以每次都需要更新加1
print(sum) # 输出累加后的结果
若希望程序可以一直重复操作,则可以将循环条件的值设为True,如此便进入无限循环。(别轻易尝试!!!)
while True:print("我是无限循环...")
2.3嵌套循环
循环之间可以互相嵌套,进而实现更为复杂的逻辑。循环嵌套按不同的循环语句可以划分为while循环嵌套和for循环嵌套。
1.while循环嵌套 while循环嵌套是指while语句中嵌套while或for语句。以while语句中嵌套while语句为例,while循环嵌套的语法格式如下:
while 条件表达式1: # 外层循环代码块1while 条件表达式2: # 内层循环代码块2
执行while循环嵌套时,若外层循环的循环条件1的值为True,则执行代码段1,并对内层循环的循环条件2进行判断。若循环条件2的值为True则执行代码段2,否则结束内层循环。内层循环执行完毕后继续判断外层循环的循环条件1,如此往复,直至循环条件1的值为False时结束外层循环。
【实战】while输出直角三角形
使用while循环嵌套输出一个由“*”构成的直角三角形。
i = 1 while i < 6:j = 0while j < i:print("*", end='')j += 1print() #打印空?实际上是打印了一个换行符i += 1
2.for循环嵌套 for循环嵌套是指for语句中嵌套了while或for语句。以for语句中嵌套for语句为例,for循环嵌套的语法格式如下:
for 临时变量 in 可迭代对象: # 外层循环代码块1for 临时变量 in 可迭代对象 # 内层循环代码块2
执行for循环嵌套时,程序会访问外层循环中目标对象的首个元素、执行代码段1、访问内层循环目标对象的首个元素、执行代码段2,然后访问内层循环中的下一个元素、执行代码段2……如此往复,直至访问完内层循环的目标对象后结束内层循环,转而继续访问外层循环中的下一个元素,访问完外层循环的目标对象后结束外层循环。因此,外层循环每执行一次,都会执行一轮内层循环。
【实战】for输出直角三角形
使用for循环嵌套输出一个由“*”构成的直角三角形。
for i in range(1, 6):for j in range(i):print("*", end=' ')print()
2.4跳转语句
2.4.1break
break语句用于结束循环,若循环中使用了break语句,程序执行到break语句时会结束循环;若循环嵌套使用了break语句,程序执行到break语句时会结束本层循环。break语句通常与if语句配合使用,以便在条件满足时结束循环。
使用for循环遍历字符串Python,一旦遍历到字符o就使用break语句结束循环。
for word in "Python":if word == 'o':break # 结束循环print(word, end=" ")
2.4.2continue
continue语句用于在满足条件的情况下跳出本次循环,该语句通常也与if语句配合使用。例如,在使用for循环遍历字符串Python时,遍历到字符o时使用continue语句跳出本次循环。
for word in "Python":if word == 'o':continue # 跳出本次循环print(word, end=" ")
2.4.3break和continue的异同
作用:提前结束循环行为
break:退出当前循环,继续执行循环代码块之后的语句
continue:跳至while/for判断要不要进入下一次循环
请比较下面两个代码块,推演代码执行结果。答案放评论区
i = 1
while i <= 5:i += 1if i == 3: break print(i)
i = 1
while i <= 5:i += 1 if i == 3: continue print(i)