计算机视觉40例从入门到深度学习(OpenCV-Python)
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

2.4 选择结构

对症下药,意思是医生针对患者病症用药,指要针对事物存在的问题采取有效的措施。选择结构就是针对不同的条件做出不同的选择,从而执行不同的任务。

某游戏厅有一个投篮游戏,该游戏的成绩显示在一块屏幕上。屏幕显示处理方式如图2-5所示,具体如下:

● 图2-5(a)属于单分支结构。在单分支结构中,当条件成立时,去做某件事情;当条件不成立时,什么都不做。对于本例为,若投篮成绩大于90分,则在屏幕上显示“A级”;否则,什么都不显示。

● 图2-5(b)属于双分支结构。在双分支中结构,当条件成立时,去做某件事情;当条件不成立时,去做另外一件事情。对于本例为,若投篮成绩大于90分,则在屏幕上显示“A级”;否则,在屏幕上显示“加油”。

● 图2-5(c)属于多分支结构。在多分支结构中,逐个判断是否满足某个条件,并根据判断结果执行对应的语句。对于本例为

➢ 先判断投篮成绩是否大于90分,若大于90分,则在屏幕上显示“A级”;否则,继续后续判断。

➢ 然后判断投篮成绩是否大于80分,若大于80分,则在屏幕上显示“B级”;否则,继续后续判断。

➢ 然后判断投篮成绩是否大于70分,若大于70分,则在屏幕上显示“C级”;否则,继续后续判断。

➢ 然后判断投篮成绩是否大于60分,若大于60分,则在屏幕上显示“D级”;否则,在屏幕上显示“加油”。

在多分支结构中,可以一直不断地缩小判断范围进行后续判断。

图2-5 屏幕显示处理方式

1.单分支

单分支结构仅在条件成立时执行操作,当条件不成立时什么都不做,其结构为

【例2.11】单分支结构实现投篮成绩判断。

运行上述程序,会提示输入成绩,当输入的数值大于90时,输出结果为

如果输入的数值小于或等于90,那么程序没有任何输出。

这里涉及如下两个新的知识点:

● 函数input():用来接收用户的输入。

● 函数int():用来完成类型的转换。从函数input()读取的数据是字符串,不能直接与数值比较大小,要使用函数int()将其转换为整型。

【注意】在Python中,不使用大括号来表示语句段的开始和结束,而使用缩进来表示语句的开始和结束。例如,当条件成立时,若要执行的语句有很多行,则直接将这些语句进行相同的缩进。

这样的方式很方便,但是需要额外关注代码的缩进。初学者在使用Python时,经常会因为缩进使用不当而出错,务必恰当地使用缩进。

2.双分支

在双分支结构中,当条件成立时,去做某件事情;当条件不成立时,去做另外一件事情,其结构为

【例2.12】双分支结构实现投篮成绩判断。

运行上述程序,会提示输入成绩,若输入的数值大于90,则输出“A级”;若输入的数值小于或等于90,则输出“加油!”。

3.多分支

多分支结构针对多个条件进行判断,根据判断结果执行对应操作。针对投篮游戏的坐标示意图如图2-6所示。

图2-6 针对投篮游戏的坐标示意图

这里需要注意的是,第二个判断条件“大于80分”,是在第一个判断条件“大于90分”不成立的情况下的条件,其范围是(80,90]。其他条件类似,都是上一次判断条件不成立情况下的判断条件。

多分支结构中使用“if...elif...else”结构,可以包含多个“elif”,其结构为

【例2.13】多分支结构实现投篮成绩判断。

运行上述程序,根据输入不同,结果如下:

● 若输入的数值大于90,则输出“A级”。

● 若输入的数值为(80,90],则输出“B级”。

● 若输入的数值为(70,80],则输出“C级”。

● 若输入的数值为[60,70],则输出“D级”。

● 若输入的数值小于60,则输出“加油”。

4.内联if

可以将if语句简单地写在一行内。此时的语法格式为

上述语句的规则是

● 当条件成立时,将语句A作为返回值。

● 当条件不成立时,将该语句B作为返回值。

内联if语句结构如图2-7所示。

图2-7 内联if语句结构

【例2.14】使用内联if语句计算两个数值的最大值。

运行上述程序,根据不同输入,会出现不同结果:

● 当输入的值满足a>b时,big=a。例如,输入a=6、b=3,则big=a,输出为“大数是:6”。

● 当输入的值不满足a>b时,big=b。例如,输入a=6、b=9,则big=b,输出为“大数是:9”。

5.条件语句

条件语句通常是由比较语句构成的,返回一个逻辑值(True或False)。使用比较符号可以构成比较语句,常用的比较符号如表2-2所示。

表2-2 常用的比较符号

在需要对多个条件进行组合时,可以使用逻辑符号。常用的逻辑符号如表2-3所示。

表2-3 常用的逻辑符号