一、丰富的else语句
- 要么怎样,要么不怎样
典型的if-else搭配:
if条件:
条件为真执行
else:
条件为假执行
- 干完了能怎样,干不完就别想怎样
else语句可以与for和while语句配合使用,但是else语句在循环完成后执行,但循环中间使用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语句还可以与异常处理进行搭配,实现跟循环语句搭配差不多:只要try语句块里没有出现任何异常,那么就会执行else语句块里的内容
try:
print(int('123'))
except ValueError as reason:
print('出错啦:' + str(reason))
else:
print('没有任何异常!')
二、简介的with语句
当你觉得打开文件又要关闭文件,还要关注异常处理很繁琐,所以Python提供了with语句。with语句抽象除文件操作中频繁使用的try/except/finally相关的细节。对文件操作使用with语句,将大大减少代码量,不用再担心文件打开忘记关闭的问题了(with会自动帮你关闭文件)
try:
f = open('data.txt','w')
for each_line in f:
print(each_line)
except OSError as reason:
print('出错啦:' + str(reason))
finally:
f.close()
使用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语句能跟哪些语句进行搭配
答:1)else与if搭配,要么怎样,要么不怎样
2)else与循环语句(for语句或者while语句),干完了能怎样,干不完就别想怎样
3)else与异常处理搭配,没有问题,那就干吧
答:会。当else与循环语句搭配,那么只有循环正常执行后才会执行else语句块的内容。
2.请目测一下代码会打印什么内容
try:
print('abc')
except:
print('def')
else:
print('ghi')
finally:
print('xyz')
答:只有except语句中的内容不被打印,因为try语句块里没有异常,则else语句块也会被执行
3.使用什么语句可以使你不必再担心文件打开后却忘记关闭的尴尬
答:with语句
4.使用with语句固然方便,但如果出现异常的话,文件还会自动正常关闭吗?
答:with语句会自动处理文件的打开和关闭,如果中途出现异常,会执行清理代码,然后确保文件自动关闭。
答:with语句处理多个项目的时候,可以用逗号隔开写成一条语句
with a() as a, b() as b:
suite
0.使用with语句改写以下代码,让Python去关心文件的打开与关闭吧
def file_compare(file1,file2):
with open(file1) as file1,open(file2) as file2:
count = 0
differ = []
for line1 in f1:
line2 = f2.readline()
count += 1
if line1 != line2:
differ.append(count)
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)
1.你可以利用异常原理,修改下面的代码使得更高效率的实现吗?
print('——————欢迎进入通讯录程序——————')
print('——————1:查询联系人资料——————')
print('——————2:插入新的联系人——————')
print('——————3:删除已有联系人——————')
print('——————4:退出通讯录程序——————')
contacts = dict()
while 1:
instr = int(input('请输入相关的指令代码:'))
if instr == 1:
name = input('请输入联系人姓名:')
try:
print(name + ':' + contacts[name])
except KeyError:
print('您输入的联系人不存在')
if instr == 2:
name = input('请输入联系人姓名:')
try:
print('您输入的联系人已存在',end = '')
print(name + ':' + contacts[name])
if input('是否修改联系人信息(YES/NO):') == 'YES':
contacts[name] = input('请输入联系人电话:')
except KeyError:
contacts[name] = input('请输入联系人电话:')
if instr == 3:
name = input('请输入联系人姓名:')
try:
del(contacts[name])
except KeyError:
print('您输入的用户不存在')
if instr == 4:
break
print('——————感谢使用——————')