小甲鱼零基础学习python_21 【python中else语句的丰富使用和简洁的with语句】


1. else语句的丰富搭配

if - else / while(for)- else / try - else


1.1 if - else - elif:

用法:如果 if 条件满足,则执行 if 语句块,否则执行 else 语句块。

if(True):
    print('i love you')
else:
    print('i dont love you')

这里写图片描述

1.2 while(for) - else:

用法:当while/for循环顺利完成 即没有break跳出 才会执行else语句块。
例:验证是否是素数,如果不是素数,求最大公约数

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('请输入一个整数!'))
showMaxFactor(num)

这里写图片描述
这里写图片描述

1.3 try - else:

用法:只要try语句没有任何异常,顺利完成,才会执行else语句块。

try:
    int('123')
    #int('bc')
except ValueError as reason:
    print('出错啦!'+str(reason))
else:
    print('没有任何异常!')

这里写图片描述

try - else 与 try - finally 的区别是:

1. try - else只要try语句没有任何异常,顺利完成,才会执行else语句块。

2. try - finally不管try语句块如何,都会执行finally语句。


2. 简洁的with语句:

如果采用上阶段的try - finally 关闭文件,有可能会出现这么一种情况:
文件根本不存在,却要关闭,则会出错:

try:
    f=open('D:\\data.txt','r')
    for eachline in f:
        print(eachline)
except OSError as reason:
    print('出错啦!' + str(reason))
finally:
    f.close()

小甲鱼零基础学习python_21 【python中else语句的丰富使用和简洁的with语句】_第1张图片

此时可以采取两种方案:

1.在finally 里继续写一个try:


try:
    f=open('D:\\dataaaa.txt','r')
    for eachline in f:
        print(eachline)
except OSError as reason:
    print('出错啦!' + str(reason))
finally:
    try:
        f.close()
    except NameError as reason:
        print('出错啦!' + str(reason))

这里写图片描述

2.我们的with语句此时就派上了作用啦:

with不需要finally里的关闭,因为with会判断什么时候要自动关闭。

try:
    with open('D:\\data.txt','r') as f:
        for eachline in f:
            print(eachline)
except OSError as reason:
    print('出错啦!' + str(reason))

这里写图片描述


你可能感兴趣的:(Python,note)