python基础学习-else搭配循环语句、异常捕获使用+with语句使用

这里只是做一个简单的记录,大佬绕道

这python当中,else除了可以搭配if使用外,也可以搭配循环和异常捕获进行使用

1、else搭配循环使用

# else搭配循环使用
def showMaxFactor(num):
  count = num // 2 # 整除
  while count > 1:
    if num % count == 0:
      print('%d的最大公约数是%d' %(num, count))
      break # 直接跳出循环
    count -= 1
  # else搭配while使用
  else:
    print('%d是素数!' % num)

num = int(input('请输入一个整数:'))
showMaxFactor(num)

运行结果
在这里插入图片描述

这里采用了一个循环求最大公约数的例子来说明,else可以搭配while循环使用(当然也可以搭配其他循环)。如果循环内的内容全部执行,没有中途跳出的话,则执行else当中的内容;如果中途通过break跳出程序,则else当中的内容将不会被执行。

2、else搭配异常捕获使用

出现报错,else未被执行

# else搭配异常捕获使用
try:
  int('abc') # 类型错误
except ValueError as reason:
  print('出错了!错误原因是' + str(reason))
# else搭配异常捕获使用
else:
  print('没有出错')

正常出现异常然后进行报错
在这里插入图片描述
程序未出现报错,进入else

# else搭配异常捕获使用
try:
  int('123') # 类型未出错
  print(int('123'))
except ValueError as reason:
  print('出错了!错误原因是' + str(reason))
# else搭配异常捕获使用
else:
  print('没有出错')

这里进入else
在这里插入图片描述

这里也是引用小甲鱼的一个ppt图片,很生动形象
在这里插入图片描述
ps:这里博主想多说一句,python的对齐格式其实很能说明问题,在c语言当中其实else往往对应最近的一个if,一定是一一对应的,但是在python中,可以直接看对齐的格式,这里的例子当中else是和while对齐,可以帮助我们理清逻辑。

3、with语句

with 提供了一种机制,可以在进入和退出(无论正常退出,还是异常退出)某个语句块时,自动执行自定义的代码。对这个机制的封装,叫做上下文管理器。with 是对上下文管理器的调用。with 通常用来处理访问资源后,对资源的释放工作。
有一些任务,可能事先需要设置,事后做清理工作,类似我们之前打开文件的操作,在出现异常后,我们通过finally中执行关闭文件的语句进行关闭文件,但是如果这里采用了with,系统会在我们没有调用文件的时候自动进行关闭文件的操作。

用之前的方法打开一个不存在的文件,然后进行关闭文件

# 普通用法
try:
  file = open('data.txt', 'w') # 试图打开一个不存在的文件
  for eachLine in file:
    print(eachLine)
except OSError as reason:
  print('出现错误!原因是' + str(reason))
finally:
  file.close()

运行结果
在这里插入图片描述
这里的data.txt是一个不存在的文件,通过close试图去关闭一个不存在的文件,是会存在问题的

采用with的方式

# with用法
try:
  with open('data.txt', 'w') as file:
    for eachLine in file:
      print(eachLine)
except OSError as reason:
  print('出现错误!原因是' + str(reason))
# 不需要finally

当系统检查到这个文件没有被用到后会执行关闭文件操作

另外其实关于with还有挺多说明的,这里引入一个链接,以后深入学习后再进行研究python中with用法

おすすめ

転載: blog.csdn.net/m0_47146037/article/details/120666466