首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Python入门(6)

第六节 流程控制语句

大家好,今天我们要学习的语法知识,称之为“流程控制语句”。

回顾前几期的课程,关于python语法,我们已经学习了常量和变量、运算符和表达式,甚至接触过几个内置函数(input()和print()),虽然我们还没有正式介绍函数的概念。前后算起来,我们已经写出不少的python代码了,并且,它们都能运行,感觉还不错吧?!

但是,我们始终会有一个疑问,因为,到目前为止,我们的程序貌似还只能原地踏步,解决一些赋值问题、运算问题,也就是解决一个表达式所能企及的范围内的问题,在宏观上,它依然只是在一个点的范畴内,就“闪耀”出那么一点小火花。当我们遇到复杂问题的时候,比如面对一个事务流程中的连续的问题,该如何解决呢?

因此,我们的语法体系,或者说我们的知识结构还需要继续丰富和完善。除了这些基本的语法定义,还要具备处理相对复杂问题的能力,这就需要引入程序的流程控制语句。

没错,这节课,我们就重点介绍python的:

  • 判断语句
  • 分支语句
  • 循环语句

‍‍一、判断语句

这个图显示的是判断语句(也成if语句)逻辑过程的一个流程图。

if 语句的基本语法结构是这样的:

if 条件判断:

语句块1

else:

语句块2

说明:看到这个语句结构,我们能想到什么?反正,我最先想到的是小学语文里学到的一个汉语语法结构:如果 ... 就 ... 否则就 ...。其实,它本来也就是这个意思,没什么深奥的东西。

# 例:6-1

将屏幕输入的字符串赋值给a变量,然后判断是否等于3,如果是,就显示“测试合格”,否则,就显示“测试结束”。

a = input('请输入:')

if a=='3':

print('测试合格!')

else:

print('测试结束!')

归纳其特点有三:

  • 根据条件判断的结果, 来决定程序选择执行哪一条语句。
  • 判断条件一般用比较运算符:>、<、==、>=、<= 等来实现。
  • Python语法约定任何非0和非空(null)值为true,0 或者 null为false。

‍二、分支语句

if语句的变种,多重条件判断语句

if 条件判断1:

语句块1

elif 条件判断2:

语句块2

elif 条件判断3:

语句块3

else:

语句块4

说明:这个语法结构跟上一个判断语句比较,其实就是增加了几种可能性,也就是语句执行的流程增加了几个分支。其逻辑思想和逻辑关系完全一样。

# 例:6-2

将屏幕输入的字符串赋值给a变量,然后分别判断a的值是否等于1、2、3,如果是,则分别显示“入门级”、“普通级”、“精英级”,否则(如果都不是)则显示“测试结束”。

a = input (“请输入:”)

if a=='1':

print (“入门级!”)

elif a=='2':

print (“普通级!”)

elif a=='3':

print (“精英级!”)

else:

print (“测试结束!”)

归纳其特点如下:

  • 最终只会有一个判断结果成立, 来决定程序选择执行那一条语句。
  • 所有条件都不成立,则执行else下的语句。
  • 可执行的语句,不定只有一句,可以是多行语句块,但必须有相同的缩进。
  • Python中,没有switch()语句。

三、循环内语句

循环语句允许我们反复执行一个语句或语句组。

  • Python提供了for循环和while循环(在Python中没有do..while循环)
  • 有一点,尤其需要注意,如果你中断了一个 for 或 while 循环,其相应循环中的 else 块将不再被执行。

(1)、while 循环

while 条件判断:

语句块1

(break)

else:

语句块2

说明:while循环语句执行的流程是这样的,当设置的条件成立时,语句块1将反复被执行。每执行一次,会检查一次条件是否继续成立?如果条件不成立了,将执行else后面的语句。在语句块1中,我们还可以设置循环终止的附加条件,如果附加条件成立,则执行(break)跳出循环,此时,语句块2也不会再执行。

# 例:6-3

这是个猜数字游戏,屏幕提示你输入字符串(将赋值给a变量),然后判断输入的(a)是否不等于‘9’,如果不等于,将继续提醒用户输入新的字符串,否则,屏幕显示“恭喜!你猜对了。”

a = input('请输入:')

while a! = '9':

print("请重新输入!")

a = input('请输入:')

else:

print("恭喜!你猜对了。")

归纳while循环语句,其特点如下:

  • 根据条件判断,成立,则重复循环执行第一个语句块。
  • else为可选语句,用于条件不成立时,则执行else下的语句块。
  • while 语句还有另外两个重要的命令 continue,break 。continue 用于跳过该次循环,直接进入下一轮循环;break 则是用于终止并跳出循环。
  • 此外"判断条件"还可以是个常值,表示循环必定成立,比如True或者False。
  • 如果条件判断永远为true,循环将会无限的执行下去,被称为“死循环”。

(2)、for循环

for i_var in 序列:

语句块1

else:

语句块2

说明:for循环将遍历一个序列,从0位开始,每循环一次,取其中一个值,然后循环执行语句块1,直到序列的末尾,结束循环,再执行语句块2。

我们需要特别注意:

for循环与while循环,在循环条件的设置上,具有本质的区别。while循环的条件是一个真正的关系表达式,也就是一个逻辑判断式,它的结果只有true或false两种可能,并以此决定循环是否继续。但是,for循环很特别,它的条件判断是一个“遍历的过程”,也就是说,for循环总是将一个序列的对象拿来进行遍历(检查构成这个序列的每一个元素),直到遍历结束(检查完毕),循环才能结束。当然,在循环体内的可执行语句块中也可以包含break的跳出条件,条件成立,也可以提前终止循环,并跳出。正因为for循环这个遍历序列对象的特点,我们很多时候也把它称之为“迭代语句”,遍历的过程也成为了“迭代”的过程。

PS:除了字符串是一种序列类型的数据,今后我们还会遇到更多序列类型的数据结构。序列类型的数据有三个重要特征:(1)索引(即顺序号,并从0开始计数),(2)值:对应每一个索引序号的值,(3)长度:构成序列元素的总个数,它总是比最大索引值大1(因为索引是从0开始计数的)。例如“abc”,索引为0的是a,索引为1的是b,索引为2的是c,长度是3。

下面的示例,检查一个字符串序列,看看其中都包含哪些字符,并把它显示出来。下面例6-4直接显示出迭代过程中拿到的每一个字符,例6-5通过对索引的遍历,循环显示序列的索引和索引对应的值。

# 例:6-4

a = ”abcde”

for x in a:

print(x)

else:

print("结束了!")

# 例:6-5

a = "abcde"

for index in range(len(a)):

print(index,a[index])

else:

print("索引结束!")

PS:例6-5中用到了两个内置函数,解释如下

(1)、len()是python的一个内置函数,用于获取某序列对象的长度。

(2)、range()也是python的一个内置函数,用于创建一个从0开始的连续整数序列,该序列直到指定数字的前面那个值为止。

例如:range(6)会得到一个“0,1,2,3,4,5”的数字序列。

归纳其特点如下:

  • for循环可以遍历任何序列的每一个元素,直到结尾。
  • for循环同样有break子句,用于退出循环。
  • else为可选语句,用于循环结束时,需要执行的语句块。
  • 此外,for循环,也可以遍历序列的索引,例6-5。

小结

这一节,我们了解了三种流程控制语句(判断、分支和循环):if ,while 和 for,及其相关的 break 与 continue 语句。这些是 Python 中最常用的语句,语法格式都很简单。

需要特别提醒,有其他语言经验的同学,python的这些流程控制语句,与其他语言(如C/C++)相比,有明显的差异。

归纳起来有如下区别:

(1)、主句(父级语句)的末尾多了一个冒号。

(2)、所有语句的末尾都没有分号。

(3)、所有的条件判断没有括号。

下一篇
举报
领券