目录
4.2.1 理解循环控制
4.2.2 for循环结构
4.2.3 循环结构的else语句
4.2.4 while循环结构
4.2.5 循环结构可以嵌套
4.2.6 国庆节吃好玩好
4.2.1 理解循环控制
我们先来搞清楚循环的含义。以下内容引自汉语词典:
循环意指往复回旋,指事物周而复始地运动或变化,或反复地连续做某事
那么,放到编程语言中进行类比,则很容易理解循环控制: 通过某些指令来控制程序反复地执行。通过控制程序指令反复地执行,可将程序员从繁琐的代码编写工作中解放出来。同学们先思考下面这个问题:
计算1到10之间的所有自然数的和
乍看是一个很简单的问题,要解决这个问题,只需将1到10之间的所有自然数罗列出来,然后再直接相加即可:
sum = 1+2+3+4+5+6+7+8+9+10
但如果把问题改成“计算1到100000之间的所有自然数的和”,该怎么编写程序代码?通过手写的方式,逐数字的进行相加是非常低效的。对于这类问题,编程语言中的循环控制可以提供完美的解决方案。
4.2.2 for循环结构
在Python中通过for与while关键字来定义循环结构,循环结构中的else语句用来定义循环正常退出时所执行的操作。
同学们可以在交互模式中查找for,while等关键字的定义与用法,要养成在交互模式中进行查找的良好习惯。例如查找for关键字的定义及用法:help("for")。
for循环的语法结构:
for target_list in expression_list:
pass
else:
pass
target_list表示目标值列表,expression_list表示表达式列表,循环中的else语句用来定义循环正常退出时所执行的操作。在for循环结构中,会逐一迭代出表达式列表中的值,然后将值赋值给target_list所代表的变量。
代码实例:
for number in 1,2,3,4,5:
print(number)
"""
程序输出为:
1
2
3
4
5
"""
代码中的for循环会迭代表达式列表中的值,然后将迭代出的值赋值给变量number。表达式列表中的值为(1,2,3,4,5), 集合中有5个值,所以for循环一共迭代了5次,每次都将迭代得到的值赋值给了变量number。比如第一次迭代出的值为1,然后赋值给变量number,第二次迭代出的值为2,同样赋值给变量number,以此类推。
以逗号分隔的表达式其实是Python中的元组,在后面介绍数据类型时,会对元组类型进行详细讲解
4.2.3 循环结构的else语句
循环中的else语句不是必须的,如需定义循环正常退出时所执行的收尾操作,那么需要在for循环结构中加一个else语句。
for number in 1,2,3,4,5:
print(number)
else:
print("for循环正常退出")
"""
程序输出为:
1
2
3
4
5
for循环正常退出
"""
所谓的循环非正常退出,是指在循环中执行了break语句,也即,只要在循环体中执行了break, 就是循环的非正常退出。
break语句只能用于循环结构中,如果用在其它的地方,Python会抛出语法错误的异常信息。
代码实例:
for number in 1,2,3,4,5:
print(number)
# 如果当前number指向的值大于3,就执行break退出循环
if number > 3:
break
else:
# 如果for循环非正常退出
# 就不会执行else语句下面的代码
print("for循环正常退出")
"""
程序输出为:
1
2
3
4
"""
4.2.4 while循环结构
先来看下while循环的语法结构:
while expression:
pass
else:
pass
expression为条件表达式,当表达式的值为真值时,会执行冒号下方的代码。while中的else同for循环中的else一样,用来定义循环正常退出时所执行的操作。在while循环中同样可以执行break来退出循环。
代码实例:
while 0:
print("这行代码永远不会执行")
while "":
print("这行代码永远不会执行")
while中的表达式为0, 0值为假值,所以不会执行while循环中的print函数。
在迄今学过的内容中,0值和空值都为假值。空字符串是空值,自然也是假值
代码实例:
x = 3
y = 3
while x+y > 0:
# 先取出变量x指向的值,然后与1进行相减
# 最后将相减的值再赋值给变量x,以此实现了自减
x = x-1
y = y-1
print("x+y=", x+y)
"""
程序输出为:
x+y=4
x+y=2
x+y=0
"""
代码讲解:
x与y的初始值都为3,x+y的值为6,所以x+y > 0的值为真值。在while循环中不断将x与y的值减-1,当x与y的值都为0时,x+y=0,那么表达式x+y > 0的值为假值,所以不会运行循环体中的代码。
4.2.5 循环结构可以嵌套
循环结构同条件控制结构一样,也可以嵌套。同样地,在进行嵌套时要注意代码缩进,同时嵌套的深度不宜过深,否则会导致代码的可读性变差,代码难以维护。以下是一个代码实例, 计算1到10之间的所有合数的和:
# 定义变量sum_of_numbers用来保存所有合数的和
sum_of_numbers = 0
# 合数指自然数中除了能被1和本身整除外,还能被其他数(0除外)整除的数
# 所以首先排除1和2
number = 3
while number <=10:
# 通过for循环和range来遍历从2到number之间的所有自然数
for _ in range(2, number):
# % 是Python中的求余计算符号
if number % _ == 0:
# number能被其他数整除时,余数为0
# 如果余数为0,说明为合数
sum_of_numbers = sum_of_numbers + number
break
# 不断进行自加,当number指向的值大于10时,会退出循环
number = number +1
else:
print(sum_of_numbers)
在上文的代码实例中,在while循环中嵌套了for循环,同样可以在while中嵌套while循环,在for循环中嵌套while循环,for循环。同学们可将上文中的代码实例全部改成for循环结构,以比较while循环与for循环的使用区别。
4.2.6 国庆节吃好玩好
跟薯条老师学后端开发,高级爬虫(JS逆向+安卓逆向),数据分析,大数据开发,量化交易,以及机器学习+深度学习算法。坚定自己的学习目标,保持学习的热情,那你成为高手只是时间问题。
薯条老师的学生在南方电网,林氏家居,京东,阿里等大厂。想系统学习Python和Java的同学,可以移步薯条老师的个人技术博客:薯条老师的个人技术博客http://www.chipscoco.com/ 对本节教程有任何不懂的同学,亦可在评论区中进行评论。薯条老师会详细解答你们提出的每一个问题。