else用法(else的两种用法)

学过python的都知道if和else一起用,但是else还有几种用法很少有人知道。来说说else的这些鲜为人知的用法。for和elseFor可以与else一起

学过python的都知道if和else一起用,但是else还有几种用法很少有人知道。来说说else的这些鲜为人知的用法。

for和else

For可以与else一起使用。在for循环代码块正常完成后,将执行else代码块。如果在for循环代码块中执行break,则不会执行else代码块。

代码案例:

有些果园有如下销售数据:

sell _ list =[{ & # 39;客户& # 39;: '张& # 39;, '类型& # 39;: '苹果& # 39;,'数量& # 39;:100}, {'客户& # 39;: '李& # 39;, '类型& # 39;: '苹果& # 39;,'数量& # 39;:200}, {'客户& # 39;: '李& # 39;, '类型& # 39;: '梨& # 39;,'数量& # 39;:200}, {'客户& # 39;: '李& # 39;, '类型& # 39;: '梨& # 39;,'数量& # 39;:300}, {'客户& # 39;: '张& # 39;, '类型& # 39;: '苹果& # 39;,'数量& # 39;:100}, {'客户& # 39;: '王武& # 39;, '类型& # 39;: '香蕉& # 39;,'数量& # 39;:500}, {'客户& # 39;: '王武& # 39;, '类型& # 39;: '香蕉& # 39;,'数量& # 39;:150}, {'客户& # 39;: '王武& # 39;, '类型& # 39;: '香蕉& # 39;,'数量& # 39;:150}, {'客户& # 39;: '王武& # 39;, '类型& # 39;: '苹果& # 39;,'数量& # 39;:500}, {'客户& # 39;: '赵& # 39;, '类型& # 39;: '葡萄& # 39;,'数量& # 39;:300}, {'客户& # 39;: '李& # 39;, '类型& # 39;: '葡萄& # 39;,'数量& # 39;:300}, {'客户& # 39;: '赵& # 39;, '类型& # 39;: '苹果& # 39;,'数量& # 39;:300},]客户希望整理数据,期望的数据集格式类似如下:

result _ list =[[& # 39;张& # 39;, {'苹果& # 39;: 300, '香蕉& # 39;: 200, }], ['李& # 39;, {'苹果& # 39;: 100, '香蕉& # 39;: 200, }], ['王武& # 39;, {'苹果& # 39;: 100, '香蕉& # 39;:200,}],]代码:

def merge _ by _ for(table):result =[]for I in table:for j in result:if j[0]= = I[& # 39;客户& # 39;]:如果我[& # 39;类型& # 39;]不在j[1]:j[1][I[& # 39;类型& # 39;]]= I[& # 39;数量& # 39;]else:j[1][I[& # 39;类型& # 39;]]= j[1][I[& # 39;类型& # 39;]]+I[& # 39;数量& # 39;]break else:result . append([I[& # 39;客户& # 39;],{我[& # 39;类型& # 39;]:我[& # 39;数量& # 39;],}])返回结果sell = merge _ by _ for(sell _ list)for I in sell:print(I)output:

['张& # 39;, {'苹果& # 39;: 200}]['李& # 39;, {'苹果& # 39;: 200, '梨& # 39;: 500, '葡萄& # 39;: 300}]['王武& # 39;, {'香蕉& # 39;: 800, '苹果& # 39;: 500}]['赵& # 39;, {'葡萄& # 39;: 300, '苹果& # 39;:300}]描述:

上述代码中使用了for和else的组合。遍历表中I的列表;在for j in result中遍历结果列表,假设for j in result正常结束(如果结果为空,则结果。append ([I ['customer'],{I ['kind']: I ['quantity'],}])将被执行,这意味着向reslut列表中添加一条记录;在for j in result中,判断当前记录的客户是否与表中的客户同名。如果它有相同的名字,有一个类别的累积数量。如果它具有相同的名称,并且类别不存在,则创建一个新的类别,然后它跳出循环,并包含for的else部分。

在这种情况下,你可以看到for和else之间微妙合作的效果。可以尝试不用for和else的结构再写一遍,这样会多几行代码。

while和else

While和else也可以一起使用。while循环代码块将在正常完成后执行。如果在while循环代码块中执行break,则不会执行else代码块。

在上述情况下,代码编写为while和else版本:

def merge_by_while(table):表中I的result =[]:j = 0 length = len(result)while j & lt;长度:if result[j][0]= = I[& # 39;客户& # 39;]:如果我[& # 39;类型& # 39;]不在结果[j][1]中:结果[j][1][I[& # 39;类型& # 39;]]= I[& # 39;数量& # 39;]else:result[j][1][I[& # 39;类型& # 39;]] =结果[j][1][I[& # 39;类型& # 39;]]+I[& # 39;数量& # 39;]break j+= 1 else:result . append([I[& # 39;客户& # 39;],{我[& # 39;类型& # 39;]:我[& # 39;数量& # 39;],}])返回结果sell = merge _ by _ while(sell _ list)for I in sell:print(I)描述:

以上代码运行结果与for和else的版本完全一致,但while loop需要多写2-3行代码,不如for loop方便。

try、except和else

试试,except和else也可以搭配,知道的人很少。尝试执行可能报告错误的代码;Except拦截指定类型的错误,如果拦截成功,则执行except内部的代码块;Else是指没有错误发生时要执行的代码块。

代码:

try:f = open(& # 39;test1.py & # 39,模式= & # 39;r & # 39)#尝试以只读模式打开test1.py文件,FileNotFoundError除外:# Catch错误打印该文件不存在(& # 39;该文件不存在。创建一个新文件!')#提示打印文件不存在f = open(& # 39;test1.py & # 39,模式= & # 39;w & # 39)#创建一个新的test1.py文件else: print(f.read()) #如果没有报错,则执行该语句,打印F文件;如果报告了错误,则不会执行该语句。描述:

try代码块中的代码应该尽可能少。它试图执行可能报告错误的代码,用except语句捕获它们,并用except代码块处理它们。else代码块在try代码块执行无误后执行。如果执行try代码块时出错,则不会执行else代码块。

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。

作者:美站资讯,如若转载,请注明出处:https://www.meizw.com/n/199355.html

发表回复

登录后才能评论