Python--小甲鱼学习笔记--第34课:else语句及with语句

else语句使用方法:

1)配合if语句。(要么怎样,要么不怎样

if 判断条件:
    条件为真时执行内容
else:
    条件为假时执行内容

2)在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)

3)与异常处理语句配合使用:(如果没有出错,则打印出没有任何错误!(没有问题,那就干吧)

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

4with语句:(避免忘记关闭已打开文件)

#        异常处理配合with语句                   #  
#            可以避免已打开文件没关闭的情况       #  
try:  
    with open('data.txt','w') as f:  
        for each_line in f:  
            print(each_line)  
except OSError as reason:  
    print('出错啦:' + str(reason))  

0. Python中,else语句能跟哪些语句进行搭配?

在Python中,else语句能跟if语句搭配、能跟循环语句for语句或者while语句搭配、还能够跟异常处理进行搭配。

 

1.请问以下例子中,循环中的 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)
会,因为如果将 else 语句与循环语句( while for 语句)进行搭配,那么只有在循环正常执行完成后才会执行 else 语句

2.请目测以下代码会打印什么内容?

try:  
    print('ABC')  
except:  
    print('DEF')  
else:  
    print('GHI')  
finally:  
    print('JKL')  

因为try语句块中并没有异常,则else语句块也会被执行,故只有except语句中的内容不被打印。

ABC

GHI

JKL


3.使用什么语句可以使你不比再担心文件打开后却忘了关闭的尴尬?

答:使用with语句:with open(‘文件名’) as f:

 

4.使用with语句固然方便,但如果出现异常的话,文件还会自动正常关闭吗?

答:with语句会自动处理文件的打开和关闭,如果中途出现异常,会执行清理代码,然后确保文件自动关闭

 

5.你可以换一种形式写出下边的伪代码吗?

with A() as a:
    with B() as b:
        suite
修改为:

with A() as a,B() as b:  
    suite

6.使用 with语句改写以下代码,让 Python去关心文件的打开与关闭吧。

def file_compare(file1,file2):  
    f1 = open(file1)  
    f2 = open(file2)  
    count = 0#统计行数  
    differ = []#统计不一样的数量  

    for line1 in f1:  
        line2 = f2.readline()  
        count += 1  
        if line1 != line2:  
            differ.append(count)  

    f1.close()  
    f2.close()  
    return differ  

file1 = input('请输入需要比较的头一个文件名:')  
file2 = input('请输入需要比较的另一个文件名:')  

differ = file_compare(file1,file2)  

if len(differ) == 0:  
    print('两个文件完全一样!')  
else:  
    print('两个文件共有【%d】处不同:'%len(differ))  
    for each in differ:  
        print('第%d行不一样'%each)  

仅将file_compare()函数修改为:

def file_compare(file1,file2):  
    with open(file1) as f1, open(file2) as f2:  
        count = 0#统计行数  
        differ = []#统计不一样的数量  

        for line1 in f1:  
            line2 = f2.readline()  
            count += 1  
            if line1 != line2:  
                differ.append(count)  
    return differ  





你可能感兴趣的:(python学习)