Python基础教程

第一章: 环境搭建,安装Python

第二章: 挑选一款趁手的IDE

第三章: 计算机基础知识

第四章: 命令行基础知识

第五章: 从全局把握Python

第六章: Python语言基础

第七章: Python流程控制

第八章: Python数据类型与运算

第九章: Python字符串类型

第十章: Python列表类型

第十一章: Python元组类型

第十二章: Python字典类型

第十三章: Python集合类型

第十四章: Python函数处理

第十五章: Python文件处理

第十六章: Python面向对象

第十七章: Python异常处理

第十八章: Python模块处理

第十九章: Python高级编程

第二十章: Python项目实战

首页 > Python基础教程 > 第七章: Python流程控制 > 7.3节: 转向控制结构

7.3节: 转向控制结构

薯条老师 2020-04-23 17:24:37 234984 4

编辑 收藏

7.3.1 理解转向控制

迄今已经学习了条件控制和循环控制,在本节的内容中,我们将学习Python中的最后一个控制结构:转向控制。在学习新的内容前,先回顾下条件控制以及循环控制的定义:
条件控制是指根据表达式的值,来有条件地执行程序中的指令。循环控制是指让程序指令连续反复地执行
理解转向控制,可以从其字面意思来进行理解,转向即调转方向,在程序的执行过程中通过转向控制来控制代码的执行过程。在7.2节的内容中,其实已经接触到了转向控制,通过break来退出循环,就是一种转向控制。在Python中通过break,continue,return来实现转向控制,在以下几节内容中会分别进行讲解。

image.png

7.3.2 break-退出整个循环

break有打破和中途休息的意思,打破循环,意味着终止整个循环。通俗地进行解释,break是循环的终结者,类似T-800机器人一样的存在。
代码实例-大于2020就终止循环:

sum_of_numbers = 0
for number in range(1000):
  sum_of_numbers = sum_of_numbers + number  
  if sum_of_numbers > 2020:
    # 如果sum_of_numbers指向的值大于2020,就退出循环
    break

执行break退出循环,但只能退出break所在的循环结构,不会影响外层的循环。

代码讲解:
(1) 在循环中使用条件控制判断变量sum_of_numbers指向的值
(2) 如果该值大于2020,就执行break退出循环
代码实例-计算所有质数的和

sum_of_numbers = 0
for number in range(2,  100):
  for divisor in range(2,  number):
    if number % divisor == 0:
      # %是求余运算符,如果当前number与_的余数为0
      # 说明能为其它数整除,则肯定不是质数,执行break退出循环
      break 
  else:
      # 循环正常退出,说明当前number为质数
    sum_of_numbers = sum_of_numbers + number
代码讲解:
(1) 在内层for循环中,当number为其它自然数整除时就退出当前的循环。
(2) 如果内层的循环系正常退出,说明不能被其它自然数整除,那么它是质数。
(3) 退出内层的for循环,不会对外层的for循环造成影响。

7.3.3 continue-退出本次循环

与break相比,continue只退出本次循环。假设在循环中一共需要执行5次,在第一次循环时使用break,那么剩下的4次循环都不会执行。在第一次循环时使用continue,那么会结束当次的循环,剩下的4次循环依然会执行。

代码实例-计算所有奇数的和:

sum_of_numbers = 0
for number in range(1000):
  if number % 2 == 0:
      # % 是Python中的求余运算符,如果与2相余后的余数为0
      # 说明当前number是偶数,那么退出本次循环
      continue 
 
  # 显然地,如果number为奇数
  # 就会运行下面的代码
  # sum_of_numbers存储的是所有奇数的和
  sum_of_numbers = sum_of_numbers + number
  
else:
  print(sum_of_numbers)
代码讲解:
(1) %是Python中的求余计算符,如果数与2相余后的余数为0,说明是偶数。
如果为偶数,就结束本次循环。
(2) 如果不为偶数,那么就会继续执行循环体中的代码,计算所有奇数的和。
代码实例-输出一个倒三角形:

"""
倒三角形的如下图所示:
* * *
 * *
  *
"""
# 定义变量triangle,用来存储打印的字符串
# 在Python中用英文引号括住的都为字符串
# 可以使用+符号对字符串进行拼接
# 在字符串中使用\n符号可以断行
triangle=""
# 定义变量rows表示行数
rows = 3
# 定义cols变量表示列数
cols  = 5


for row in range(rows):
  # 定义is_even_number变量,判断当前行是否为偶数
  is_even_number = 1 if row % 2 == 0 else 0
  # 定义started变量,判断是否开始打印*符号
  started = 0
 
  for col in range(cols):
    # 如果当前列的编号等于当前行的编号,就开始打印*符号
    if col == row:
      triangle = triangle+"*"
      started = 1
      continue
 
    # 如果已经开始打印*符号,且列的编号在正确范围以内 
    if started and col<=cols-row:
      if is_even_number:
        triangle = triangle + "*" if col % 2 == 0 else triangle + " "
      else:
        triangle = triangle + "*" if col % 2 != 0 else  triangle + " "
    else:
      triangle = triangle + " "
 
   # 在字符串中拼接\n符号,可以进行断行
   triangle = triangle+"\n"
else:
   print(triangle)
程序输出为:
* * *
 * *
  *
代码讲解:

(1) 根据图形本身的特征,去寻找规律

(2) 很显然倒三角形中一共三行五列,使用*符号与空格符号来共同输出三角形

(3) 当列的编号与本次循环中的行的编号相等时,开始打印*符号,这个从图形本身的特征可以发现这个规律。

(4) 再者,倒三角形中每一层的*数目越来越少且居中,打印*的有效范围在列数减去当前行编号的范围之内。在Python中,break与continue都只能用于循环结构。在循环中使用了break,意味着非正常退出,不会执行else中的代码。

7.3.4 return-退出函数执行

编程语言中的return用来退出函数的执行,通常会返回一个值给函数的调用方。关于函数,会在第十四章中进行详细讲解。
 对于break,continue,return等关键字的定义和用法,同学们同样可以在交互模式中进行查找, 不再赘述。

7.3.6 最具实力的小班培训

薯条老师在广州有开设线下培训班,小班授课模式,一班最多6个人。也可一对一授课,全程帮助你学好计算机,实现高薪就业。不在广州的同学可提供住宿,也可以报名线上小班,用腾讯会议上直播课。

(1) Python后端工程师高薪就业班,月薪11K-18K,免费领取课程大纲
(2) Python中高级爬虫逆向工程师就业班,月薪15K-25K,包拿Offer
(3) Python数据分析+商业分析+数据科学就业班,企业级项目实战,月薪10K-20K
(4) Python量化交易就业班,A股+期货+数字货币量化,月薪10K-40K
(5) Python机器学习+深度学习算法工程师,月薪20-50K

跟薯条老师学习的学生有拿到花生日记,林氏家居,南方电网,京东, 阿里等公司的offer, 学生的最低薪资有6K,最高薪资有18K, 平均就业薪资有11000。

扫码咨询薯条老师:

扫码领学习资料.jpg


已有4位薯条发表了看法:

  • 访客

    访客  评论于 2020-05-15 20:21:28  回复

    老师,”triangle = triangle+"\n"else:“ 这句的”else:”是什么意思啊

    • 访客

      访客  评论于 2020-05-16 06:50:48  回复

      这是条件控制语句中的三元运算符,你需要复习下条件控制这一节

  • 访客

    访客  评论于 2020-09-11 16:07:25  回复

    计算质数代码的注释写错了吧,“# %是求余运算符,如果当前number与2的余数为0 ”应该是number与_的余数为0

    • 薯条老师

      薯条老师  评论于 2020-10-14 08:59:09  回复

      是写错了,感谢指正,已修改

欢迎 发表评论: