当前位置: 首页 > 后端技术 > Python

【Python从入门到精通】(10)如何使用Python流程控制的关键字?【收藏,常看】

时间:2023-03-25 22:03:29 Python

大家好,我是飞哥,感谢您阅读本文,欢迎点击三连。本文主要介绍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)结果为:at0x103322e08>从上面的执行结果可以看出,使用tuplecomprehension生成的结果不是一个tuple,而是一个generator对象。可以使用tuple()函数将生成器对象直接转换为元组。例如:d_tuple=(x*xforxinrange(1,11))print(tuple(d_tuple))输出为(1,4,9,16,25,36,49,64,81,100)字典comprehension字典理解的语法结构是:{expressionforiterationvariableiniterableobject[ifconditionalexpression]}其中[ifconditionalexpression]可以使用也可以省略。例如:key_list=['姓名:CoderFeige','年龄:18','爱好:写博客']test_dict={key.split(':')[0]:key.split(':')[1]forkeyinkey_list}print(test_dict)resultis:{'hobby':'blogging','age':'18','name':'码农飞哥'}嵌套循环嵌套循环是循环中的循环,最经典的是冒泡排序。冒泡排序每次比较左右相邻的数,如果前面的数大于后面的数,则交换两个数的位置。这是一个演示:test_list=[12,3,1,13,10,5,9]foriinrange(len(test_list)):forjinrange(len(test_list)-i-1):iftest_list[j]>test_list[j+1]:tmp=test_list[j]test_list[j]=test_list[j+1]test_list[j+1]=tmpprint('{0}循环后的结果为='.format(str(i)),test_list)print('最终结果为=',test_list)运行结果为:第0次循环后的结果为=[3,1,12,10,5,9,13]第一个循环后的结果是=[1,3,10,5,9,12,13]第二个循环后的结果是=[1,3,5,9,10,12,13]第三个循环后的结果是=[1,3,5,9,10,12,13]第4次循环后的结果为=[1,3,5,9,10,12,13]第5次循环后的结果为=[1,3,5,9,10,12,13]第6次循环后的结果为=[1,3,5,9,10,12,13]最后的结果为=[1,3,5,9,10,12,13]冒泡排序过程介绍:从上面可以看出,外层循环负责冒泡排序执行的次数,而t内层循环负责比较列表中相邻的两个元素并调整顺序。也就是把小的放在前面。跳出循环跳出循环的关键字有两个,一个是continue语句,一个是break。continue语句用于跳出循环体中其余代码的执行,然后执行下一个循环。n=0whilen<=5:n=n+1ifn==3:continueprint(n)运行结果为:12456可以看到数字3被跳过了。break语句用于完全终止当前循环。需要注意的是,如果是嵌套循环,只能打断使用break的循环。我们以之前的冒泡排序为例!foriinrange(len(test_list)):forjinrange(len(test_list)-i-1):iftest_list[j]>test_list[j+1]:test_list[j],test_list[j+1]=test_list[j+1],test_list[j]ifj==2:print('innerloopbreak')breakifi==3:print('outerloopbreak')break运行结果为:innerloopLoopbreak,innerloopbreak,innerloopbreak,innerloopbreak,outerloopbreak,可见内循环的break并不影响外循环。也就是说,break只会跳出当前循环。小结本文简单介绍了Python中流程控制的几个关键字。如果选择一种结构,就是:if,elif,else三个关键字。循环结构就是while和for这两个关键字。语法相对简单。我是码农飞哥。再次感谢您阅读本文。全网同名【马农飞歌】。不积步,方能达千里。享受分享的快乐。我是码农飞哥。再次感谢您阅读本文。