17.丰富的else语句和简洁的with语句

丰富的else语句

要么怎样,要么不怎样:if...else...
干完了能怎样,干不完就别想怎样
没有问题,那就干吧

一、要么怎样,要么不怎样

常见的if...else...语法

=====

二、干完了能怎样,干不完就别想怎样

例1:while与else之间的break

    判断一个数是素数还是合数,如果是合数,则求出
合数的最大约数。
自己求解:
def func(num):
    k = num //2  #板除,结果肯定是整数
    if(k<1):  #如果k是1,2,3,那么肯定是素数,否则进入下面的判断
        print '%d是素数' % num
    else:
        while(k != 1):
            if(num % k == 0):
                print '%d是合数,它的最大约数是%d' % (num,k)
                break
            k = k - 1
        else:
            print '%d是素数' % num

>>> func(3)
3是素数
>>> func(30)
30是合数,它的最大约数是15


正规求解:
def func(num):
    k = num // 2
    while( k > 1 ):
        if num % k == 0:
            print ('%d是合数,它的最大约数是:%d' % (num,k))
            break
        else:
            k -= 1
    else:
        print ('%d是素数' % num)


>>> func(2)
2是素数
>>> func(30)
30是合数,它的最大约数是:15

【重点解释:崭新的知识点】
如果while中,break执行,则不执行else语句中的内容;
如果while循环正常退出,则执行else语句中的内容。
    break跳出范围是while循环,连带while...else...语句一并跳出。
因此break跳出后,不会执行else语句中的内容。

例1:for与else之间的break

【注解】for...else...while...else...用法和含义完全相同

===

三、没有问题,那就干吧

    说明:与第二种形式类似,它是与try语句进行搭配的,
即只要try语句中没有发生异常,就会执行else语句中的内容。

例1def f1():
    try:
        int('show') #把字符串强制转为int,会发生ValueError 异常
    except ValueError as reason:
        print('出错了:'+str(reason))
    else:
        print('没有任何异常')

>>> f1()
出错了:invalid literal for int() with base 10: 'show'
【注解】在try语句中,如果发生异常,就不会执行try...else...
后面的else语句中的内容。

例2def ff():
    try:
        print('show') #直接打印字符串,不会发生异常
    except ValueError as reason:
        print('出错了:'+str(reason))
    else:
        print('没有任何异常')

>>> ff()
show
没有任何异常
【注解】在try语句中,如果不发生异常,就会执行try...else...
后面的else语句中的内容。

+++++++++++++++
+++++++++++++++
+++++++++++++++
+++++++++++++++

简洁的with语句:用于文件操作

http://www.cnblogs.com/ymjyqsx/p/6554817.html

方法一:以前的学习我们常用的文件打开方式
try:
    f = open('', '')
    print(f.read())
finally:
    if f:
        f.close()

【注解】上面的形式太繁琐,不但有try异常处理机制,还有
f.close()语句。因此我们引出下面的语法

方法二:
with open('','') as f:
    print(f.read())
    这和前面的try ... finally是一样的,但是代码更佳简洁,并且不必调用f.close()方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值