龙空技术网

设计模式:Python实现笔记2

摸鱼飞弹 259

前言:

现时姐妹们对“python内循环变量和外循环变量的关系”大概比较关注,咱们都想要分析一些“python内循环变量和外循环变量的关系”的相关资讯。那么小编在网络上汇集了一些关于“python内循环变量和外循环变量的关系””的相关知识,希望姐妹们能喜欢,各位老铁们快快来学习一下吧!

程序结构设计

在程序设计中,选择结构是处理各种分支问题的基本手段,编程者应该熟练掌握。

本章介绍Python中条件语句的使用。条件语句是根据条件表达式的结果是True还是False做出决策,进行控制执行程序。本章将进一步讨论条件语句的概念以及结构编程的知识。本章知识点如下:

1.选择结构基本问题;

2.逻辑运算符;

3.单分支语句;

4.双分支语句;

5.多分支语句;

6.选择结构的嵌套。

选择结构程序的定义:根据条件表达式的值是True/非零还是False/零做出决策,控制代码块的执行。

典型的表达式一般由运算符和操作数/操作对象组成。

运算符:对操作数/操作对象进行运算处理的符号。

操作数/操作对象:运算符处理的数据。

在条件表达式中的常用运算符如下:

(1)算术运算符:+、-、*、/、//、%、**、~;

(2)关系运算符:>、<、==、!=、<=、>=;

(3)测试运算符:in、notin、is、notis;

(4)逻辑运算符:and、or、not。

1.复合表达式

当做一个判断需考虑两个或两个以上的条件/因素时,此时需要对条件进行合理的逻辑组合运算。一个表达式中出现多种运算符时,需要按照运算符的优先级高低依次进行运算,才能保证运算结果的唯一性。下面总结出常用运算符的优先。

选择结构

在程序设计中,选择结构通常有单分支、双分支、多分支和嵌套结构。在python中,这些结构都由if语句来体现。

1.单分支语句

单分支语句的格式如下:

if 表达式:

语句块

图3-2 表示单分支语句的执行方式,菱形框表示 if,表达式放在框内,紧接菱形框的矩形框表示冒号后的语句块。若表达式为真则执行冒号后的语句块,若表达式为假则跳过该语句块的执行。

例如比较ab两数大小,按从小到大的顺序输出。程序过程如图3-3所示。

框图:

说明

(1)分支结构中的“表达式”一般为逻辑表达式,也可以为任何合法的表达式;

(2)分支结构中执行的语句可以是一条语句,也可以是多条语句组合而成的复合语句,或者称语句块。在Python中用缩进结构来表示,具有相同的连续的缩进量的语句构成复合语句。

在进行复杂条件表示时,理清条件的逻辑关系是写出正确表达式的关键。

【例3-4】设程序要为某电信公司面试求职者,为满足某些教育条件的求职者提供面试机会。满足如下条件之一的求职者会接到面试通知:

(1)25岁以上,电子信息工程专业毕业生;

(2)重点大学电子信息工程专业毕业生;

(3)28岁以下,计算机专业毕业生。

分析:分析条件可知公司面试条件涉及 3 个方面:年龄、所学专业和毕业学校。为此设定 3个变量(age、subject和college)分别表示;3个条件只需满足其中一个即可,其逻辑关系应为“or(或者)”;而在每一个条件中涉及的方面又应为“and(与)”的逻辑关系。若满足如上复合条件,则显示“恭喜,你已获得我公司的面试机会”,否则显示“抱歉,你未达到面试要求”(见图3-7)。

框图:

当复合条件过于冗长时,我们也可以将一个复杂条件改为多个简单的条件,然后把多个简单分支组合成一个多分支语句形式(见图3-8)。

3.多分支语句

多分支if语句的一般形式为。

if 表达式1:

语句1

elif 表达式2:

语句2

……

elif 表达式n:

语句n

else:

语句n+1

在多分支语句中,若表达式i(i=1,2,…,n)为True则执行语句块i,然后结束;若表达式i为False,则接着判断表达式i+1的值。

在程序设计中,双分支和多分支问题都可以用多个单分支语句来实现。

例3-6】如果用户输入“你好”、“您好”或“Hello”则回答“您好”,如果用户输入的话中含“请喝”或“请吃”则回答“谢谢您”,如果输入其它的内容则回答“对不起,我暂时不能理解”。分析:由于不知道用户输入的话,因此要进行适当的判断和分支。第1种情况用户输入了“你好”这类话,可用一个列表来存储这些话的内容;第2种情况用户输入了“请吃、喝”这类话,用另外一个列表来存储这些话。当用户输入的话是在这两个列表中,计算机都能做出正确的回答;当不在这两个列表中,则输出“对不起,我暂时不能理解”(见图3-10)。

框图:

4.选择结构的嵌套

在某一个分支的语句块中,需要进行新的分支,这种结构称为选择结构的嵌套。嵌套的形式如下:

if 表达式1:

#语句块1

if 表达式11:

语句块11…

else:

语句块12

else:

语句块2

【例3-7】选择结构的嵌套问题。购买地铁车票的规定如下:

乘1~4站,3元/位;乘5~9站,4元/位;乘9站以上,5元/位。输入人数、站数,输出应付款。分析:需要进行两次分支。根据“站数<=4”分支一次,表达式为假时,还需要根据“站数<=9”分支一次(见图3-11)。

框图:

介绍了选择结构程序设计的问题和基础知识,应用本章的知识可以解决现实世界中的分支问题(选择问题)。主要知识点如下。

1.逻辑运算符包括and、or、not。

2.关系运算符也属于逻辑运算符。

3.逻辑表达式的值只可能是True或False。

4.使用运算符in、notin、is、notis的表达式也返回逻辑值。

5.在单分支语句中,若表达式为True则执行表达式冒号后的语句块;若表达式为False则跳过该语句。

6.在双分支语句中,若表达式为True则执行表达式冒号后的语句块;若表达式为False则执行else:后的语句块。

7.在多分支语句中,若表达式i为True则执行语句块i,然后结束;若表达式i为False,则接着判断表达式i+1的值;若所有表达式的值都为False,则执行语句块n+1。

8.在某一次分支之后形成的语句块中还包含分支问题,就需要用到分支的嵌套。

9.双分支、多分支语句可以改为仅用单分支的语句,这样做有时条件要写得复杂一些。

10.有些分支嵌套程序,通过把条件写得复杂一些可以改变为非分支嵌套程序。

循环结构程序设计

循环结构最能体现计算机的计算能力。在判断方面,计算机一直模仿人脑的功能,而在计算方面,人脑早已望尘莫及,正是循环结构使计算机体现出了超强的计算能力。因而在程序设计中要学会使用循环结构,并学会在循环结构中思考问题和解决问题。

本章介绍循环的基本问题、while语句、for语句、bread语句、continue语句,以及用循环结构解决问题的方法

【问题4-2】用户输入一个列表,求出列表中所有正偶数之和。

分析:该问题需要遍历整个列表中的所有元素,这是一个重复的过程,应使用循环结构解决。在遍历的过程中用 if语句判断哪个元素是正偶数,该条件为真的数要求和。

框图:本题的程序流程如图4-2所示。

循环结构是一种重复执行的程序结构。实际应用中,常会碰到一些需要重复执行的步骤,如级数求和、统计报表等。

while语句的一般语法如下:

【格式一】

while 条件表达式:

循环体

【格式二】

while条件表达式:

循环体

else:

语句

while语句条件表达式的值是布尔型,表达式的值为“真”或“假”决定了循环继续或者停止。

while语句的执行过程是:每次循环之前计算机先判断条件表达式的值,如果其值为布尔真,就执行循环体,如此反复执行,直到条件表达式的值为布尔假,就结束循环。如果 while后面有else语句,结束循环之后就执行else子句。

while语句的执行流程如图4-3所示。

说明

(1)while语句的语法与if语句类似,要使用缩进来分隔子句。

(2)while语句的条件表达式不需要用括号括起来,表达式后面必须有冒号。

(3)从上面的【格式二】中可以看到,Python与其他大多数语言不同,在while循环中可以使用else语句,即构成了while-else循环结构。

while语句是条件循环语句,大多数情况下用于解决不确定循环次数的问题——即只有当某条件成立时,循环才会结束,否则循环将一直继续下去。while语句也可用于解决确定循环次数的问题。使用 while 语句时,条件表达式的设置比较关键,表达式的正确与否决定了循环次数是否正确、循环是否能正常结束,从而避免程序进入死循环。

while语句还有一个特殊的用途是设计无限循环的程序,在一些特定场合,循环需要无限期地执行下去,直至循环被强行退出。

不确定循环次数的问题是指循环之前不可预知循环需执行多少次,循环何时结束是由 while语句的条件表达式来决定。

确定循环次数的问题是指循环之前可以预知循环即将执行的次数。为了控制循环次数,通常在程序中设置一个计数变量,每次循环,该变量进行自增或自减操作,当变量值自增到大于设定的上限值或者自减到小于设定的下限值时,循环自动结束。

【例4-3】计算1+2+3+…+100的值。

分析:本题使用循环结构解决,每循环一次累加一个整数值,整数的取值范围为 1~100。由于整数的范围是确定的,因此循环次数也是确定的。

框图:本题的程序流程如图4-6所示。

当 while 语句的条件表达式永远为布尔真时,循环将永远不会结束,形成无限循环,也称死循环。大多数循环结构设计都应避免进入死循环,但是在某些场合,有意设置的无限循环是非常有用的。例如,一个手机开机后,手机程序将持续自动运行,直到关机或者掉电,手机的主程序便是一个无限循环的结构。

使用while语句构成无限循环的格式通常为:

whileTrue:

循环体

此时条件表达式值恒为“真”,循环不会自动结束。为了使得循环能够结束,通常在循环体内嵌套if语句,判断当某个特定条件成立时,就执行break语句(见4.5节介绍),从而强制结束循环。

for语句

Python提供的另一个循环机制是for语句,它提供了Python中最强大的循环结构。Python中的for语句与传统的for语句不太一样,它接受序列或迭代器作为其参数,每次循环取出其中的一个元素。

for语句的一般语法如下。

for 循环索引值 in 序列:

循环体

for语句的执行过程是:每次循环,判断循环索引值是否还在序列中,如果在,取出该值提供给循环体内的语句使用;如果不在,则结束循环。

4.4.1 for语句用于序列类型

列表、元组、字符串都是序列。序列类型具有相同的访问模式:它的每一个元素可以通过指定一个偏移量的方式得到;而多个元素可以通过切片操作的方式得到。

序列操作可以通过很多内建函数来实现,比如求序列长度len( );求最大值、最小值max( )、min( );求和sum( );排序sorted( );颠倒顺序reversed( )等,以上这些内建函数的实现都离不开循环结构。下面的例子说明内建函数是如何使用循环结构来实现的,并且介绍for语句的几种应用场合。

1.通过序列索引迭代

2.通过序列项迭代

for语句用于计数循环

1使用内建函数range( )可以把Python中的for语句变成与其他语言中的for语句更为相似的计数循环模式。

2.双层循环嵌套

循环的嵌套是指在一个循环中又完整地包含另外一个完整的循环,即循环体中又包含循环语句。while 循环和for循环可以相互嵌套。

【例4-13】使用for循环的嵌套结构输出9-9乘法表。分析:9-9乘法表由9行组成,每行的列数有规律地递增。通过观察可以看出,表达式“X*Y=Z”中的X是内循环变量j的取值,Y是外循环变量i的取值,Z是X乘以Y的结果。

框图:本题的程序流程如图4-16所示。

break语句

Python 提供了一条提前结束循环的语句——break 语句。当在循环过程中,某个条件被触发(一般通过if语句),需要立即停止循环时可使用该语句。break语句可以用在while和for循环中。

【例4-16】从键盘输入1个整数,判断该数是否是素数(素数也称质数,是指只能被1和它本身整除的数)。

分析:素数的判断需要用循环结构来解决,假设被判断的数存在于变量x中,则循环范围是[2,x-1],在此范围内,如果判断x能被其中的某个数整除,则说明x不是素数,同时后续的数值无需再判断,循环提前结束。如果在此范围内,x不能被任何1个数整除,则说明x是素数。

框图:本题的程序流程如图4-19所示。

程序说明:

(1)for循环使用range( )函数创建列表[2,3,,…,x-1],每次循环取出列表中的1个元素,用x对该元素求余,如果余数为零,则说明 x 能被该元素整除,于是调用 break语句提前结束循环;

(2)如果x不是素数,则条件“x%i==0”必然会为真,于是将执行break语句提前结束循环;如果x是素数,则条件“x % i==0”总是为假,于是for循环是在列表元素被全部取完后自然结束的;

(3)根据以上逻辑关系,在for循环之后,利用1个if…elif分支结构判断“i”是否小于或者等于“x-1”。如果“i==x-1”为真,说明for循环是自然结束的,于是断定x是素数;如果“i<x-1”为真,说明for循环是提前结束的,于是断定x不是素数。

continue语句

Python提供的continue语句和其他高级语言中传统的continue并没有什么不同,它可以用在while循环和for循环里,其作用是:当遇到continue语句时,程序会终止当前循环,并忽略continue之后的语句,然后回到循环的顶端,继续执行下一次循环。

初学者应注意区分break语句和continue语句的作用。break语句一旦执行,则整个循环将被立即终止;continue语句的执行不会终止整个循环,而是忽略剩余语句,提前进入下一次循环。

循环结构程序设计的方法,重点介绍了while语句和for语句,然后介绍了循环结构中用来改变正常循环流程的break语句和continue语句。

1.while语句也称为条件循环。while语句的基本语法是:

while 条件表达式

循环体

while语句的循环体是否执行受条件表达式的控制,只有当条件表达式的值为“真”时,才执行循环体;当条件表达式的值为“假”时,就结束循环。

2.for语句通常用来迭代序列,也常常用于计数循环。for语句的基本语法是:

for 循环变量 in 序列:

循环体

for语句的循环体是否执行取决于循环变量的当前取值是否还在序列中,如果循环变量的取值还在序列范围内,就执行循环体;如果循环变量的取值已超出序列范围,则结束循环。

3.break语句的作用是强制结束循环。它既可以用在while语句中,也可以用在for语句中。通常,循环都是正常结束的,但是在一些问题的处理过程中,当某个条件成立时,需要提前结束循环,此时就要用到break语句。

有两点需要特别说明:(1)如果循环体是嵌套结构,则执行 break 语句只会跳出该语句所在的那一层循环,而不会同时跳出所有循环;(2)break 语句通常都是写在 if 语句里面,即只有判断某个条件为真时,才执行break语句,这个条件就是控制循环提前结束的条件。

4.continue语句的作用是终止当前循环,并忽略continue之后的语句,然后回到循环的顶端,继续执行下一次循环。初学者在学习break语句和continue语句时,要注意区分这2条语句的不同。

标签: #python内循环变量和外循环变量的关系