大家好,我是飞哥,感谢您阅读本文,欢迎点击三连。本文主要介绍Python中使用关键字进行流程控制,涉及到ifelse、for、while等关键字。如果您有任何疑问或需求,欢迎随时留言~~~。前言中有一句话,程序是由进程+数据结构组成的。任何程序都是如此。花了好几页介绍了Python中的各种数据结构。本文接下来将介绍过程控制。说白了,数据结构是用来存储数据的,进程是用来控制系统运行的。流程控制流程控制有三种结构,一种是顺序结构,一种是选择(分支)结构,一种是循环结构。顺序结构:就是让程序从头到尾按顺序执行代码,不重复任何一行代码,也不跳过任何一行代码。这就是一步一步的意思。选择(分支)结构:就是让程序根据不同的条件执行不同的代码,例如:根据年龄判断一个人是否成年。循环结构:就是让程序循环执行某段代码。顺序过程这里就不介绍了。替代结构(if,else):if语句仅使用if语句是Python中最简单的形式。如果满足条件,则执行表达式。跳过表达式的执行。其伪代码为:ifcondition为真:如果if后面的条件为真,则代码块执行代码块。否则,将跳过代码执行。它的流程图是:也就是说,如果只有if,表达式为真则代码块执行,不为真则结束。下面是一个简单的例子,如果满足条件a==1,则打印a,否则跳过该语句。a=1ifa==1:print(a)ifelse语句ifelse语句是if的变体,如果满足条件,则执行代码块1,否则执行代码块2。其伪代码为:if条件为真:代码块1else代码块2流程图为:如果同时使用if和else,则表达式为真则执行一个代码块,表达式为真则执行另一个代码块不对。让我们举一个简单的例子。age=3ifage>=18:print('yourageis',age)print('adult')else:print("yourageis",age)print('kid')根据输入的判断是否某人年龄是成人。如果年龄大于等于18岁,则输出adult,否则输出kid。ifelifelse语句ifelifelse语句的目的是判断多个条件。如果不满足if条件,则执行elif条件。如果不满足elif条件,则执行else中的表达式。其伪代码为:if条件为真:表达式aelif条件为真:表达式b...elif条件为真:表达式为n-1else表达式n其中可以有多个elif,但是elif不能单独使用,必须使用如果和其他。需要注意的是,if、elif、else后面的代码块必须缩进,缩进要大于if、elif、else本身。推荐的缩进是4个空格。同一代码中的所有语句必须具有相同的缩进。还是一个例子:bmi=80.5/(1.75*1.75)ifbmi<18.5:print('toolight')elif18.5<=bmi<25:print('normal')elif25<=bmi<28:print('overweight')elif28<=bmi<32:print('obese')else:print('seriouslyobese')pass以下是根据bmi标准判断一个人是否体重过轻、正常或肥胖。pass是Python中的一个关键字,它告诉解释器跳过这里什么都不做。嵌套语句的使用嵌套语句是指在一个if或else代码块中有子判断。如下例所示:num=23ifnum<20:print('不构成饮酒行为')else:if20<=numandnum<80:print('已经满足酒后驾车')else:print('已达到酒驾标准')循环关键字while循环语句详解while是循环的关键字。其伪代码为:while条件表达式:代码块必须保证循环条件变为假,否则循环将变成死循环,即循环无法结束。它的流程图是:如果while中的表达式为真,则执行循环体,否则直接结束。举个栗子:计算1到100的和,这是一个经典的使用循环的场景sum=0n=1whilen<=100:sum=sum+nn=n+1print('sum=',sum)run结果就是sum=5050,而这个循环的结束条件是n>100,也就是说当n>100的时候,就会跳出循环。range函数range函数用于生成一系列数字,其语法结构为:range(start,end,step)各部分的语法解释为:start表示开头的数字(包括,可以不写blank),end表示末尾的数字(不包含,必须填写),step步长(可以不填写),默认为1,可以通过范围计算1~100的和功能。是这样的:sum=0forxinrange(101):sum=sum+xprint(sum)print(range(101))结果为:5050range(0,101)可以看出range()函数得到一个range对象,它的内容必须通过for循环解析输出。range(101)实际运行结果为range(0,101),默认start等于0,输出0~100范围内的所有数字,不包括数字101。for循环使用for关键字when引入范围函数。这里介绍一下for关键字的使用。它的语法结构是:foriterationvariableinstring|list|tuple|dictionary|collection:代码块字符串、列表、元组、字典、集合也可以用for进行迭代。它的流程图是:for循环是:先根据in关键字判断序列中是否有某一项,如果有则取下一项,然后执行循环体。如果没有,直接结束循环。range快速生成comprehensionlistcomprehensionlistcomprehension的语法格式是[expressionforiterationvariableiniterableobject[ifconditionalexpression]]这种格式,[ifconditionalexpression]不是必须的,可以用,也可以省略。以下是输出1到10的列表的乘积示例:L=[x*xforxinrange(1,11)]print(L)此表达式等同于L=[]forxinrange(1,11):L.append(x*x)print(L)运行结果为:[1,4,9,16,25,36,49,64,81,100]我们再复杂一点,下面是输出print([xforxinrange(1,11)ifx%2==0])运行的结果是[2,4,6,8,10]再复杂一点,使用多个循环来生成推导。d_list=[(x,y)forxinrange(5)foryinrange(4)]print(d_list)结果为:[(0,0),(0,1),(0,2),(0,3),(1,0),(1,1),(1,2),(1,3),(2,0),(2,1),(2,2),(2,3),(3,0),(3,1),(3,2),(3,3),(4,0),(4,1),(4,2),(4,3)]上面代码中,x是遍历range(5)的迭代变量(计数器),所以x可以迭代5次,y是遍历range(4)的计数器,所以y可以迭代4次。因此,(x,y)表达式总共迭代了20次。它等效于如下的嵌套表达式。dd_list=[]forxinrange(5):foryinrange(4):dd_list.append((x,y))print(dd_list)元组推导元组推导类似于列表推导,其语法结构为:(expressionforiterativevariableiniterableobject[ifconditionalexpression])在这种格式中,[if条件表达式]不是必需的,可以使用或省略。下面是输出1到10的元组乘积的例子:d_tuple=(x*xforxinrange(1,11))print(d_tuple)结果为:
