当前位置: 首页 > article >正文

Python入门教程+项目实战-7.2节: 循环控制结构

目录

7.2.1 理解循环控制

7.2.2 for循环结构

7.2.3 while循环结构

7.2.4 循环结构可以嵌套

7.2.5 知识要点

7.2.6 系统学习python


7.2.1 理解循环控制

理解循环控制,首先得理解什么是循环。以下内容引自汉语词典:

循环意指往复回旋,指事物周而复始地运动或变化,或反复地连续做某事

那么,放到编程语言中进行类比,则很容易理解循环控制:通过某些指令来控制程序反复地执行。通过控制程序指令反复地执行,可以将程序员从繁琐的代码编写工作中解放出来。同学们先思考下面这个问题:

计算1到10之间的所有自然数的和

乍看是一个很简单的问题,要解决这个问题,只需将1到10之间的所有自然数罗列出来,然后再直接相加即可:

Python

sum = 1+2+3+4+5+6+7+8+9+10

但如果把问题改成“计算1到100000之间的所有自然数的和”,该怎么编写程序代码?通过手写的方式,逐数字的进行相加是非常低效的。对于这类问题,编程语言中的循环控制可以提供完美解决方案。

7.2.2 for循环结构

在Python中通过for与while关键字来定义循环结构,循环结构中的else语句用来定义循环正常退出时所执行的操作。

同学们可以在交互模式中查找for,while等关键字的定义与用法,要养成在交互模式中进行查找的良好习惯。例如查找for关键字的定义及用法:help("for")。

(1) for循环基本语法

for循环的语法结构:

Python

for target_list in expression_list:
  pass
else:
  pass

target_list表示目标值列表,expression_list表示表达式列表,循环中的else语句用来定义循环正常退出时所执行的操作。在for循环结构中,会逐一遍历出表达式列表中的值,然后将值赋值给参数target_list。在Python中可以直接通过英文的逗号来定义表达式列表,例如:

1,2,3,4,5

代码实例:

Python

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中的元组类型,在后面介绍数据类型时,会对元组类型进行详细讲解。

(2) for循环中的else语句

循环中的else语句不是必须的,如需定义循环正常退出时所执行的操作,那么需要在for循环结构中加一个else语句。for循环结构中的else通常用来定义循环正常退出后的收尾操作。

代码实例:

Python

for number in 1,2,3,4,5:
  print(number)
else:
  print("for循环正常退出")

程序输出为:

1
2
3
4
5
for循环正常退出

(3) 执行break退出循环

所谓的循环非正常退出,是指在循环中执行了break命令。当Python在解释执行脚本程序时,如果发现当前的指令为break,那么会立即退出当前循环。

break命令只能用于循环结构中,如果用在其它的地方,Python会抛出语法错误的异常信息。

代码实例:

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

(3) range类型

Python提供了一个range类型,可以用来生成整数序列。range类型基本用法:

range(start, stop[, step])

参数start与参数stop用来构造整数序列的一个左闭右开区间[start, stop),假设start的值为0, stop的值为5,那么该左闭右开区间为[0, 5),该range(0, 5)对应的整数序列为:

0,1,2,3,4

step是可选的参数,所谓可选参数,即可填或可不填,step参数用来表示相邻数字间的步长,继续以左闭右开区间[0, 5)为例,假设步长为2,则range(0, 5, 2)对应的整数序列为:

0,2,4
# 起始数字为0,所以下一个数字为0+2,也就是2。
# 2的下一个数字为2+2,也就是4。同学们可以此类推。

在只给range类型传递一个参数时,构造的是从0到该参数的一个正向区间。例如传递参数值5时,构造的正向区间为[0, 5),传递的参数值小于等于0时,不会生成任何整数。给range类型传递的步长为负数时,可以生成一个降序排序的整数序列,此时start的值必须大于stop的值。

代码实例:

Python

for number in range(5, 0, -1):
  print(number)

程序输出为:

5
4
3
2
1

利用range类型生成的整数序列,再通过循环结构,可以计算1到10000之间的所有自然数的和。

代码实例:

Python

# 定义变量total,用来保存累加的和
total = 0
# range(1, 100001)会生成从1到10000之间的所有自然数
for number in range(1, 100001):
  # 在循环中不断地进行累加
  # 先取出变量total指向的值,然后与number变量指向的值相加
  # 最后将相加的值再赋值给变量total,以此实现了累加
  total = total + number
else:
  print(total)

程序输出为:

50005000

50005000即为1到10000之间的所有自然数的和。

7.2.3 while循环结构

(1) while循环基本语法

while循环的语法结构:

Python

while expression:
  pass
else:
  pass

expression表示表达式,当表达式的值为真值时,会循环执行while下方的代码。while中的else同for循环中的else,用来定义循环正常退出时所执行的操作。在while循环中同样可以执行break来退出循环。

在交互模式中查看while关键字的定义和用法:help("while")

代码实例:

Python

while 0:
  print("这行代码永远不会执行")
while "":
  print("这行代码永远不会执行")

while中的表达式为0, 0值为假值,所以不会执行while循环中的print函数。

在迄今学过的内容中,0值和空字符串都为假值。空字符串即为引号内部不包含任何字符。例如""就是空字符串。

代码实例:

Python

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的值为假值,所以不会运行循环体中的代码。

7.2.4 循环结构可以嵌套

循环结构同条件控制结构一样,也可以嵌套。同样地,在进行嵌套时要注意代码缩进,同时嵌套的深度不宜过深,否则会导致代码的可读性变差,代码难以维护。

代码实例-计算1到10之间的所有合数的和:

Python

# 定义变量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循环的使用区别。

7.2.5 知识要点

(1) 循环控制是指通过指令来控制程序反复地执行

(2) Python通过for,while来实现循环控制

(3) 在循环中使用了break时表示非正常退出

(4) 循环结构中的else语句用来定义循环正常退出后的操作

(5) Python内置的range类型,可以用来生成一个整数序列

7.2.6 系统学习python

 薯条老师简介:资深技术专家,技术作家,著有《Python零基础入门指南》,《Java零基础入门指南》等技术教程。薯条老师的博客:http://www.chipscoco.com, 系统学习后端,爬虫,数据分析,机器学习


http://www.kler.cn/a/6475.html

相关文章:

  • 华为IPD流程6大阶段370个流程活动详解_第一阶段:概念阶段 — 81个活动
  • 砂轮磨料基础知识及发展学习笔记
  • 【Qt】显示类控件:QLabel、QLCDNumber、QProgressBar、QCalendarWidget
  • 【Java基础面试题016】JavaObject类中有什么主要方法,作用是什么?
  • 重拾设计模式--建造者模式
  • 前端和后端解决跨域问题的方法
  • 【Python入门第四十二天】Python丨NumPy 数组裁切
  • 自定义starter
  • 【Ruby学习笔记】4.Ruby 类和对象及类案例
  • OBProxy 路由策略与使用运维-常见问题
  • FIFO的工作原理及其设计
  • 哈利波特c++千行代码
  • C语言程序环境和预处理
  • USB抓包分析
  • Spring Security
  • 【C语言蓝桥杯每日一题】—— 递增序列
  • C 学习笔记 —— 结构(二)
  • 【面试】互联网相关面试题
  • 操作系统结构
  • 【C语言学习】预处理命令
  • 【从零开始学习 UVM】10.7、UVM TLM —— TLM Fifo [uvm_tlm_fifo]
  • [windows-rs]Rust 调用 Windows API
  • 2023-4-1刷提情况
  • C++内存模型
  • LeetCode-5. 最长回文子串
  • Docker基础操作