条件判断和循环语句
引言:条件判断以if为主,循环则是while和for……in……。这两者共有的新奇之处在于:一般的代码我们都是从头至尾一路“披荆斩棘”般顺着捋,而它们的出现改变了代码的运行顺序——不再局限于“一步到位”,而是增添分支路线。笔者经自学和这学期的学习发现,这二者又有些许不同之处。
我们有必要先捋清“主线任务”——即明白条件判断和循环语句的总体运行逻辑是什么,然后顺着这个逻辑去完成一些工作,而不至于毫无头绪,一头雾水,因为条件和循环本就容易把人绕晕。
一、条件和循环基本语法以及plt中的条件和循环
··我们完全可以这么理解条件判断:如果……就……否则……或者……。例:
if 条件表达式:
条件执行体
·上述只是一个简单的单条件,有时候一个条件判断并不能满足工作需求,于是我们引入双分支,例:
if 条件表达式:
条件执行体1
else:
条件执行体2
·如果双分支还不够,我们继续引入多个分支,例:
if 条件表达式1:
条件执行体1
elif 条件表达式2:
条件执行体2
elif 条件表达式3:
条件执行体3
……
else:
条件执行体n
·简单介绍了if条件判断后,我们继续介绍两种循环结构while和for……in……,它和if最根本的区别在于:很多情况下,我们可以通过if条件数判断可能发生的结果或判断次数,简单来说就是“能数清、看得见的”;而while则是“数不清、看不见的”,只要满足条件就会一直执行。
用数学的角度来讲,if是只判断一次,满足条件(True)就执行;而while可能要判断n+1次,其中会运行n次,如果一直正确,n就会趋近于无穷大,于是while就出现了“根本停不下来”的情况,例:
while True:
print(‘学无止境’)
运行上述代码后,用户如果不手动停止,jupyter会一直打印输出“学无止境”。因为在计算机的认知中,while True这个语句永远成立,所以它不会停止。
··for……in……循环语句
这个循环语句可以说是结合了条件和循环两者的优点,既有条件也有循环。换句话讲,它在自己的“圈子里”运行程序直至输出结果,而不至于像while一样“一骑绝尘”了。我们先来看一下for……in……的基本语句:
for 自定义变量 in 可迭代对象:
循环体
自定义变量是需要用户着重注意的,循环的一切工作都是以这个自定义变量为基准展开,我们先看一个例子:
color = [‘r’ if i==0 else ‘b’ for i in data [‘Season’]]
#这类似于英语的倒装句,我们需要先翻译后面的for in循环:自定义变量i是在原数据集中定义好的;再往前看条件判断,如果i取值为0,我们把它的颜色调成红色,否则调成蓝色。
··在这学期的学习中笔者还发现,在plt模块中使用条件判断语句时,还有如下的功能:
①在一个统计图中标记出“异常值”或“强影响点”。
注:异常值在回归分析中主要描述的是距离均值较远的点
②在一个统计图中描绘出不同类的数据,例如用不同颜色形状大小来分别表示各不相同类别的数据。
③在用户先建立空列表的前提下,通过一个条件判断模块,判断原数据集中的数据应规划到哪一类中。
此外还有更高级的用法,但鉴于笔者水平有限,故只给读者罗列出来,感兴趣的读者可查阅相关资料,更多用法如下:
①根据条件调整图表参数:可以使用条件判断语句根据不同的条件来调整图表的参数。例如根据数据的范围选择合适的坐标轴刻度和标签,或者根据数据的特性选择合适的颜色和线型。
②遍历数据批量绘图:通过循环语句遍历数据集合,并在每次循环中绘制相应的图表。例如使用循环语句遍历多个数据文件,将它们的数据分别绘制成多个子图。
③动态更新图表内容:使用循环语句可以实现图表的动态更新。例如在每次循环中更新数据并重新绘制图表,从而实现动态展示数据变化的效果。
二、plt中的条件判断和循环语句
说到这,笔者接下来再跟大家分享一下在这学期学习过程中遇到的另外一种循环逻。如果说前面一节是先设定条件或循环再给出相应的模块,那这一节就是先找到一个“落脚点”,开展条件或者循环,然后把满足条件的列入“落脚点”中。我们先看一个例子:
my_list=[]
if 条件表达式:
my_list.append(element)
#上述代码大致意思是:我们先定义一个空的列表,也就是“落脚点”,然后我们引入if条件判断,只要满足,列表中就会增添新的元素。
我们使用for in循环,同样可以做到增添元素,例:
for 自定义变量 in 可迭代对象:
my_list.append()
#上述代码大致意思是:我们先定义一个空的列表,也就是“落脚点”,然后我们for in循环语句,只要满足,列表中就会增添新的元素。以上就是笔者在学习过程中总结出来的两种主要的循环逻辑:
①先循环再工作(先有条件判断循环语句,然后写代码)
②先工作在循环(先创建落脚点——空列表,然后写循环,最后验收成果)
三、心得体会
笔者在之前的文章中提到过,python有趣的地方在于input函数的交互性,它能让计算机反客为主让用户获得一定的“参与感”。而这个input函数之所以有趣,离不开循环和条件判断。
试想一下,倘若用户仅仅是敲了寥寥几句代码,判断一次就结束了,是不是显得很无聊?毫无疑问是的。故在此基础上,我们尽量把这个有趣的交互代码写长,越长越好。
我们可以模拟银行卡输密码,输错3次冻结。这时候我们可以先定义一个数值,然后减一赋值过去,直到3次都输错……
附:银行卡密码输错了没?
for i in range(3):
pw = input('请输入您的银行卡密码:')
if pw=='114514':
print('密码正确')
break #break一般用于退出内层循环
else:
print('密码错误')
else:
print('累计输错3次,您的银行卡已被冻结')
#for in版本
a=0
while a<3:
pw = input('请输入您的银行卡密码:')
if pw=='114514':
print('密码正确')
break
else:
print('密码错误')
a+=1
else:
print('累计输错3次,您的银行卡已被冻结')