至此,我们已经把python最基本的数据结构讲的差不多了 不了解这个你可能永远不会成为python大佬(3) 不了解这个你可能永远不会成为python大佬(4) 从这节开始,你就可以写一个完整的程序结构,而不是一些零碎的小片段啦! 这节我们开始讲: if条件语句for循环while循环跳出和终止循环 〔赞〕〔赞〕〔赞〕〔赞〕〔赞〕〔赞〕 01hrif条件语句 顾名思义,if是如果的意思,它常用来判断程序在什么情况下需要做什么事,python里的条件语句形如: 1。如果如果a成立,则执行b if条件a: b 2。如果a成立,则执行b,否则(else)执行c if条件a: b else: c 3。如果a成立,则执行b,否则如果c成立,则执行d,如果都不成立,执行e if条件a: b elif条件c: d else: e 上文中的仅代表4个空格缩进,如果是在notebook里写,冒号:回车后会自动缩进(python程序结构的划分就是依据严格的缩进,if、for等语句的缩进必须注意) 条件语句可以多种多样,像下面这样: a3 b5 ifa3andb4: print(and用法) elifa3orb4: print(or用法) else: print(比大小) aandb表示必须两个同时成立,aorb则只需要至少一个成立即可。 输出结果: or用法 小知识:短路效应 aandb中,a如果为假,则python默认不执行b语句,由定义直接判定为假 aorb中,a如果为真,则默认不执行b语句,直接判定为真,这就是著名的短路效应 02hrfor、while循环 循环是让一个语句重复多次,为了提高程序效率。for循环形如: for变量in序列: 语句 可以依次循环列表中每个值,如: foriin〔a,b,c,d〕: print(i) 输出结果: abcd 上面的循环还可以写成另一种形式: list1〔a,b,c,d〕 foriinrange(len(list1)): print(list1〔i〕) 输出结果: abcd 第二种方法虽然看起来麻烦些,但实际工作中其实用的更多。 range()函数 上面程序里出现了range()函数,这里简单讲一下: 其中len()函数是获取列表的长度,range()函数是一个生成序列数的函数。基本形式为range(x,y,l)range(10)代表一个09的序列,range(0,10)与range(10)相同,默认步长为1,如下: list1〔xforxinrange(10)〕09,省略起始数字,左闭右开 list2〔xforxinrange(0,10)〕09,起始数字为0,左闭右开 list3〔xforxinrange(0,10,2)〕09,步长为2取,左闭右开 print(list1);print(list2);print(list3) 输出结果: 〔0,1,2,3,4,5,6,7,8,9〕 〔0,1,2,3,4,5,6,7,8,9〕 〔0,2,4,6,8〕 上面也是一种用for循环生成列表的快捷方式。 实际工作里,如果想在n个不同序列中同时循环n个量,可以像这样: fori,n,cinzip(〔0,1〕,〔bad,good〕,〔green,red〕): print(i,n,c) 输出结果: 0badgreen 1goodred 其中,zip()是一个打包函数,将〔0,1〕,〔bad,good〕,〔green,red〕变为 〔(0,bad,green),(1,good,red)〕,然后i、n、c分别进行循环。 (ps:我经常用这个方式绘图,可以一次性绘制多个参数,有奇效) while意为当。。。成立时执行。。。,循环形如: while条件: 语句 简单例子: i0 while(ispanstylecolor:B8D7A3;ttdarkmodecolor:96AF85;5): print(i) ii1strongspan 上面程序就是让i每次循环中变化,直到不满足i5时跳出循环。 for和while选择哪个一般来说都行,while更侧重明确有中断条件的情况,for更侧重于有确定长度或是循环已知的列表,但也可以在结构里设置中断,总的来说,for的适用面更广泛。 03hrbreak与continue 余下的篇幅简单讲下循环中的中断标志符:break和continue break很简单,遇到break直接跳出当前循环,这个循环就废了,不再进行 continue则是跳过本轮的循环,后面循环继续。 简单的例子展示一下区别: list1〔a,b,c,d〕 foriinrange(len(list1)): if(list1〔i〕c): break print(list1〔i〕) 输出结果: a b 换成continue: foriinrange(len(list1)): if(list1〔i〕c): continue print(list1〔i〕) 输出结果: a b d 区别显而易见了。 这时候就很多人要问了,如果我想满足某个条件就连续跳出好几层循环,该咋办?如果直接用break,会出现下面这样: foriinrange(10): forjinrange(10): if(j3): break print(j中断位置:,j) print(i中断位置:,i) 输出结果: j中断位置:3 i中断位置:9 显然break只能跳出内层循环,外部的循环仍然完整的进行了。 我们引入breakflag标志位来解决这个问题: foriinrange(10): breakflagFalse跳出整个循环的标志 forjinrange(10): if(j3): breakflagTrue break if(breakflag): break跳出外层循环 print(j中断位置:,j) print(i中断位置:,i) 输出结果: j中断位置:3 i中断位置:0 这里,内层break前先将breakflag置为True,跳出内层后if(breakflag)判定成立,再次执行外层的break,达到了连续跳多层循环的目的。 至此,关于控制结构的简单内容就这么多了,更多的基础知识关注我持续更新〔谢谢〕