python基础刻意练习-- Task 9else 与 with 语句

mac2024-04-01  42

Day 12

1、else 语句

else语句一般是用在条件与循环语句中,也可以用在try语句中。下面给出几个e使用else语句的例子:

if...else...语句 a = 10 b = 20 if a > b: print('%d 大于 %d' % (a,b)) else: print('%d 小于 %d' % (a,b)) # 10 小于 20 while...else...语句 z = 5 while z < 10: print('%d 小于 10' %z) z = z + 1 else: print('%d 不小于 10' %z) # 5 小于 10 # 6 小于 10 # 7 小于 10 # 8 小于 10 # 9 小于 10 # 10 不小于 10 for...else...语句 print('下面打印1-30内的质数:') for i in range(1,30): for j in range(2,i): if i % j == 0: break else: print(i) ''' 下面打印1-30内的质数: 1 2 3 5 7 11 13 17 19 23 29 ''' try...except...else语句

如果在 try 子句执行时没有发生异常,Python将执行 else 语句后的语句(如果有 else 的话),然后控制流通过整个 try 语句。 使用 except 而不带任何异常类型,这不是一个很好的方式,我们不能通过该程序识别出具体的异常信息,因为它捕获所有的异常。

try: 正常的操作 ...................... except(Exception1[, Exception2[,...ExceptionN]]]): 发生以上多个异常中的一个,执行这块代码 ...................... else: 如果没有异常执行这块代码

举一个例子:

try: f = open('C:\\Users\dell\Desktop\study.txt') a = f.read() except OSError as error: print('出错了!\n原因是:' + str(error)) else: print(a) f.close() # 好好学习 # 天天向上

2、with 语句

一些对象定义了标准的清理行为,无论系统是否成功的使用了它,一旦不需要它了,那么这个标准的清理行为就会执行。关键词 with 语句就可以保证诸如文件之类的对象在使用完之后一定会正确的执行它的清理方法。

下面举一个例子:

try: f = open('study.txt','w') a = f.read() print(a) except OSError as error: print('出错了!\n原因是:' + str(error)) finally: f.close() 这段代码执行完毕后,就算在处理过程中出问题了,文件 f 总是会关闭。 try: with open('study.txt','w') as f: a = f.read() print(a) except OSError as error: print('出错了!\n原因是:' + str(error))

备注:

学习参考资料: https://mp.weixin.qq.com/s?__biz=MzIyNDA1NjA1NQ==&mid=2651011492&idx=1&sn=e0654f1aebf1be11efa48ba7f51f8fa9&chksm=f3e35e3cc494d72a3f5324c01b45c89bc36b7ac3e302664b842fd7fd73562fa480a60cb6332d&mpshare=1&scene=1&srcid=&sharer_sharetime=1572473330145&sharer_shareid=8c49d4226c319addceef298b781f6bb7&key=5792dae60a8bc6de2dda7e1ca142b5da0e2abe39e98bf2ecf772b637090efdccd7fcca26befd038d4e356fed8c47a80f9f8a15a200408e53d369712ab69ec80c8b3169e49ac3a1b4065008b7c83c976b&ascene=1&uin=MTgxNzI3MTY0MQ%3D%3D&devicetype=Windows+10&version=62060841&lang=zh_CN&pass_ticket=WgrUmwZbjLNWp%2FHdjgYsx9VoLQ6iqr3URJLBmzLMdqWlp4DS0qmtaLOuOHcDIxxM

最新回复(0)