您的位置 首页 > 数码极客

[else如何运用]c#if else的运用

学过python的都知道if和else搭配使用,可还有几种else的用法少有人知,下面说说这几种少有人知的else用法。

for和else

for可以和else搭配使用,for循环代码块正常完成后执行else代码块,若在for循环代码块中执行了break那么else代码块不会被执行。

代码案例:

某果园有销售数据如下:

sell_list = [ {'客户': '张三', '种类': '苹果','数量':100}, {'客户': '李四', '种类': '苹果','数量':200}, {'客户': '李四', '种类': '香梨','数量':200}, {'客户': '李四', '种类': '香梨','数量':300}, {'客户': '张三', '种类': '苹果','数量':100}, {'客户': '王五', '种类': '香蕉','数量':500}, {'客户': '王五', '种类': '香蕉','数量':150}, {'客户': '王五', '种类': '香蕉','数量':150}, {'客户': '王五', '种类': '苹果','数量':500}, {'客户': '赵六', '种类': '葡萄','数量':300}, {'客户': '李四', '种类': '葡萄','数量':300}, {'客户': '赵六', '种类': '苹果','数量':300}, ]

客户希望对数据进行整理,期待得到的数据集格式类似如下这样:

result_list = [ ['张三', {'苹果': 300, '香蕉': 200, }], ['李四', {'苹果': 100, '香蕉': 200, }], ['王五', {'苹果': 100, '香蕉': 200, }], ]

代码:

def merge_by_for(table): result = [] for i in table: for j in result: if j[0] == i['客户']: if i['种类'] not in j[1]: j[1][i['种类']] = i['数量'] else: j[1][i['种类']] = j[1][i['种类']] + i['数量'] break else: re([i['客户'], {i['种类']: i['数量'], }]) return result sell = merge_by_for(sell_list) for i in sell: print(i)

输出:

['张三', {'苹果': 200}] ['李四', {'苹果': 200, '香梨': 500, '葡萄': 300}] ['王五', {'香蕉': 800, '苹果': 500}] ['赵六', {'葡萄': 300, '苹果': 300}]

说明:

在上述代码中运用了for和else的组合。在for i in table中遍历列表;在for j in result中遍历result列表,假设for j in result正常结束(若result为空时也算正常结束)那么会执行re([i[‘客户’], {i[‘种类’]: i[‘数量’], }]),表示在reslut列表中添加一条记录;在for j in result内部判断当前记录客户是否和table中的客户同名,若同名则且种类存在累加数量,若同名且种类不存在则新建该种类,之后跳出循环且包括for的else部分。

在这个案例中可以看到通过for和else的精妙配合的效果,各位可以尝试不用for和else的结构写一遍,那样会多好几行代码。

while和else

while和else也可以搭配使用,while循环代码块正常完成后执行else代码块,若在while循环代码块中执行了break那么else代码块不会被执行。

上述案例中写成while和else版本的代码:

def merge_by_while(table): result = [] for i in table: j = 0 length = len(result) while j < length: if result[j][0] == i['客户']: if i['种类'] not in result[j][1]: result[j][1][i['种类']] = i['数量'] else: result[j][1][i['种类']] = result[j][1][i['种类']] + i['数量'] break j += 1 else: re([i['客户'], {i['种类']: i['数量'], }]) return result sell = merge_by_while(sell_list) for i in sell: print(i)

说明:

上述代码运行结果与for和else的版本完全一致,但while循环要多写2-3行代码,没有for循环方便。

try、except和else

try、except和else也可以搭配,而且同样少有人知道。try尝试执行可能报错的代码;except截取指定类型的报错,若截取成功则执行except内部的代码块;else指未发生报错时要执行的代码块。

代码:

try: f = open(';, mode='r') # 尝试只读模式打开文件 except FileNotFoundError: # 捕获文件不存在的报错 print('文件不存在,新建文件!') # 打印文件不存在的提示 f = open(';, mode='w') # 新建文件 else: prin()) # 假如没报错,会执行该语句,打印f文件;如果报错则该语句不会被执行

说明:

try代码块中的代码应该尽可能地少,它是为了尝试执行可能会报错的代码并用except语句捕获和用except代码块进行处理;else代码块是在try代码块执行时未报错后执行的,若try代码块执行时报错了则else代码块不会被执行。

责任编辑: 鲁达

1.内容基于多重复合算法人工智能语言模型创作,旨在以深度学习研究为目的传播信息知识,内容观点与本网站无关,反馈举报请
2.仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证;
3.本站属于非营利性站点无毒无广告,请读者放心使用!

“else如何运用,c#if,else的运用,else如何使用,if,else如何使用,如何避免if,else”边界阅读