2 程序控制结构

1基础知识

1.1 布尔值

“布尔”数据类型只有两个值:True和False。在解释器中输入以下代码并得到如下结果:

我们可以观察到,这里的True不是字符串,两边没有引号,它是变量Var的值。请使用Type()函数,查看变量Var的数据类型

1.2 关系运算符与逻辑运算符            

关系运算符的作用是用来比较两个值,其比较结果是一个布尔值。下表列出来常见的关系运算符:

关系运算符

含义

==

等于

!=

不等于

<

小于

>

大于

<=

小于等于

>=

大于等于

现在,我们有一个问题:如何比较两个布尔值?为了比较两个布尔值,需要用到逻辑运算符。Python中有三个逻辑运算符:and,or和not。这些运算符的含义和它们在英语中的意思相似。其中,and和or操作符总是接受两个布尔值(或表达式)。逻辑运算符的所有可能结果用“真值表”表示,如下表所示:

and操作符的真值表:

表达式

求值结果

True and True

True

True and False

False

False and True

False

False and False

False

or操作符的真值表:

表达式

求值结果

True or True

True

True or False

True

False or True

True

False or False

False

not操作符的真值表:

表达式

求值结果

not True

False

not False

True

 

1.3 程序流程图

程序流程图是用一系列图形、柳城县和文字说明描述程序的基本操作和流程控制,流程图的常用元素有5种,如图4.1所示:

 

图4.1 程序流程图的常用元素

1.4 程序结构

程序有三种基本结构组成:顺序结构、分支结构和循环结构

顺序结构:按照代码出现的先后顺序依次执行;

分支结构:根据条件判断是否执行相关语句,又包括单分支结构,二分支结构和多分支结构。

循环结构:当条件成立时,重复执行某些语句。

程序的分支结构:

Python中的if语句语法格式如下:

if  <条件>:

<语句块>

它是程序流程控制里面最常见的语句,语句块将在语句的条件为True时执行。如果条件为False,语句块将被跳过。在Python中,if语句包含以下部分:

  • if关键字;
  • 条件(即求值为True或False的表达式);
  • 冒号;
  • 在下一行开始缩进的代码块(即if子句)。

针对于二选一执行的情况,我们称之为二分之一结构,用到了else语句。只有当if语句的条件为False时,else子句才会执行。else语句不包含条件,但是包含以下部分:

  • else关键字;
  • 冒号;
  • 在下一行开始,缩进的代码块(称为else子句)。

对于对分支结构,我们希望许多种可能的情况中的一个被执行,需要用到elif语句。该语句总是跟在if或者另一条elif语句后面。它提供了另一个条件,仅在前面的条件为False时才检查该条件。一个elif语句总是包含以下部分:

  • elif关键字;
  • 条件;
  • 冒号;
  • 在下一行开始,缩进的代码块(称为elif子句)。

程序的循环结构:

根据循环次数的确定性,循环可以分为确定次数循环和非确定次数循环。确定次数循环指循环体对于循环次数有明确的定义,通常采用for循环来实现,称为遍历循环。非确定次数循环是指程序不确定循环体可能的执行的次数,而通过条件判断是否继续循环体,采用while语句实现,称为无限循环。

遍历循环中,for语句的语法如下:

for <循环变量> in <遍历结构>:

   <语句块>

遍历循环可以理解为从遍历结构中注意提取元素,放在循环变量中,对于所提取的元素执行一次语句块。遍历结构可以使字符串、文件、组合数据类型或者range()函数等。

无限循环中,while语句的语法如下:

while <条件>:

<语句块>

跳出循环的方法:

循环结构中有break和continue语句,用来辅助控制循环执行。区别在于break语句用来跳出最内层for或者while循环,脱离该循环后程序从循环代码后继续执行。continue语句用来结束当前当次循环,即跳过当次循环尚未执行的语句,继续下次循环。

 

嵌套循环

2实验步骤

2.1 关系运算符与逻辑运算符

解释器中输入Var=Ture,并记录结果:          请使用Type()函数,查看变量Var的值,所得结果为:               在Python解释器中输入以下代码并记录所得结果:

42<100

42>100

42==42

注意:这里有一个常见错误是在判断两个值相等的时候需要使用双等号(==)而不是单独一个等号(=),单独一个等号叫:            运算符。在解释器中输入(4<5) and (5<6),(4<5) and (9<6)和(1==2) or (2==2)三个代码,显示结果分别为:               

思考一下计算机的求值过程,以(4<5) and (5<6)为例,求值过程为?

 

与算数运算符一样,逻辑预算符也有先后顺序:在所有算术运算符和关系运算符求值之后,Python先求值not,然后是and,最后是or。

2.2 选择结构

假设一个班里面有7名同学,再一次考试中,他们的得分如下表所示:

学生编号

得分

0

58

1

67

2

82

3

93

4

89

5

97

6

74

现在,试着编写一个程序,为七个学生转换一下输出成绩,转换规则为:得分为60分以下,输出不及格,得分在60-80分之间,输出为良好,得分在80分以上的,输出为优秀。假设我们现在输入第一个学生的分数(58分),首先来判断他的得分是否在60分以下,要完成这个判断,我们可以使用if语句。

新建一个名为Test1.py的文件,输入以下代码

Step 2:输入以下代码,来判断学生2的成绩是否及格。

输出结果为:

Step3: 回到上面的例子中,我们将判定条件分为三种情况:得分为60分以下,输出不及格,得分在60-80分之间,输出为良好,得分在80分以上的,输出为优秀。输入以下代码,判断学生3的成绩档次:

输出结果为:

3.3 循环结构

3.3我们用选择结构解决了按照不同的条件为学生成绩分档的问题。然而,要设计一个完整的成绩分档系统,还需要我们重复执行选择结构。这里有7个学生,就需要执行7次上面的选择结构来为学生成绩分档,这里的重复执行一种操作,在程序设计中就叫循环结构。

Step 1:输入以下代码:

输出结果为:

Step 2:首先,使用注释操作符(#)将第十行注释掉。运行该程序,我们得到的结果为:

Step 3:按Ctrl+C结束该程序,我们现在思考一下,为什么会出现这个现象?回到代码中,我们发现在每次while循环中,变量Stu_No的值为:  

因此,while循环中的条件语句Stu_No <= 6的结果总为真,while循环无法结束,这种现象被称为死循环。

在Python的循环结构中,除了while语句,for语句配合range()函数也是一种常用的循环方式。

Step 4:将上面的代码改为如下代码:

运行以上代码,结果为:

 

4实验练习

4.1 身体质量指数是国际上常用的衡量人体肥胖程度与是否健康的重要标准。其分类如下表所示:

分类

国际BMI值(kg/m2 )

国内BMI值  

偏瘦

<18.5

 

正常

18.5-25

18.5-24

偏胖

25-30

24-28

肥胖

30以上

28以上

编写一个根据身高体重计算BMI值的程序,要求输入身高和体重,打印输出BMI分类信息。

4.2 将百分制成绩转换为等级制输出(90~100为A等,80~89为B等,70~79为C等,60~69为D等,不及格为E等)。

4.3 编写一个程序,求累加和,当数据项小于0.1时停止,数列如下:

1+1/2+1/3+1/4+1/5…

猜你喜欢

转载自blog.csdn.net/Liverpool_05/article/details/83245891