Python 学习Task9!

else语句

while … else

当 while 循环正常执行完的情况下,执行 else 输出;
当 while 循环中执行了跳出循环的语句,比如 break,将不执行 else 代码块的内容;

#!/usr/bin/env python3
# -*- coding:utf-8 -*-
 
def showMaxFactor(num):
    count = num // 2
    while count > 1:
        if num % count == 0:
            print("%d的最大约数是%d" % (num,count))
            break
        count -= 1
    else:
        print("%d是一个质数!" % num)
num = int(input("请输入一个大于1的整数: "))
showMaxFactor(num)

结果:
请输入一个大于1的整数: 9
9的最大约数是3

for … else

for正常执行完,else也会跟着执行。for没有正常执行完,中间异常退出,则else也不会执行

for i in range(3):
    print(i)    
else:
    print('hello world')

结果:

0
1
2
hello world

try …. except … else

格式:
try:
语句t
except 错误码 as e:
语句1
except 错误码 as e:
语句2
………… #可有多个
else: #可有可无
语句3
作用:用来检测try语句块中的错误,从而让except语句捕获错误信息并处理
逻辑:当程序执行到try-except-else语句时
1:如果当try“语句t”执行出现错误,会匹配第一个错误码,如果匹配到就执行对应"语句"
2:如果当try"语句t"执行出现错误,没有匹配的异常,错误将会被提交到上一层的try语句,或者到程序的最上层
3:如果当try“语句t”执行没有出现错误,执行else语句下的语句3(前提是存在else)

try :
    print(int(input("请输入一个数:")) % 2)
except(ValueError ):
    print("你输入的不是一个数字,请输入一个数字")
else:
    print("##展示else的用法")
#结果:
请输入一个数:a
你输入的不是一个数字,请输入一个数字
#结果:
请输入一个数:8
0
##展示else的用法

with 语句

当with语句执行时,便执行上下文表达式(context_expr)来获得一个上下文管理器,上下文管理器的职责是提供一个上下文对象,用于在with语句块中处理细节:

一旦获得了上下文对象,就会调用它的__enter__()方法,将完成with语句块执行前的所有准备工作,如果with语句后面跟了as语句,则用__enter__()方法的返回值来赋值;

当with语句块结束时,无论是正常结束,还是由于异常,都会调用上下文对象的__exit__()方法,exit()方法有3个参数,如果with语句正常结束,三个参数全部都是 None;如果发生异常,三个参数的值分别等于调用sys.exc_info()函数返回的三个值:类型(异常类)、值(异常实例)和跟踪记录(traceback),相应的跟踪记录对象。

因为上下文管理器主要作用于共享资源,enter()和__exit__()方法干的基本是需要分配和释放资源的低层次工作,

比如:数据库连接、锁分配、信号量加/减、状态管理、文件打开/关闭、异常处理等。

class A:
    def __enter__(self):
        print('__enter__() is called')
 
    def __exit__(self, e_t, e_v, t_b):
        print('__exit__() is called')
 
 
with A() as a:
    print('got instance')
#结果:
__enter__() is called
got instance
__exit__() is called

继续努力!

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值