python 除数不能为零的报错有哪些_【社区精选40】Python错误处理及代码调试方法(文末赠书中奖名单)...

6d555f1afd04bf4bcb0d1518263b9b03.gif

本文整理自爱数据学院中的问答

更多精彩问答,进入下方社区网站查看

http://www.lovedata.cn/invitation


社区精选话题 第40期

Python错误处理及代码调试方法

一次写完代码程序并能够正常运行的概率很小很小,总会有各种各样的错误bug需要处理。有的报错简单,看看报错信息简单修改一下就可以了。

但是有的报错很复杂,特别是一些复杂长代码,需要我们到错误的位置,需要判断是什么变量出现了问题,因此我们除了会写代码之外,还需要会解决常见的错误,那么具体有哪些处理错误的方法呢,具体简单介绍以下几块内容:

1

异常处理

基本语法:

try:
  #要运行别的代码
except :
  #如果在try部份引发了'xxxError'异常就会执行这一步语句
except ,:
  #如果上一个except语句引发了'xxxError'异常,获得附加的数据,并执行这一部分的语句
else:
  #如果没有出现异常要执行的代码
finally:
  #无论发生异常与否,最终都要执行的代码

比如:

try:
  print('执行try部分语句:')
  i = input('输入一个除数:')
  result = 10 / i
  print('result:', result)
except ZeroDivisionError:
  print("除数不能为0")
else:
  print("成功输出结果")
finally:
  print("无论发生异常与否,我都会在这里")

当然这里的except后面可以省略错误名称,但是不建议。省略就意味着只要有错误就执行这一部分代码,比如我在这里输入一个字母a,明明错误应该是除数不能为字符串,这里仍然说除数不能为0是不是就不正确了,所以尽量写出错误的名称

在这个语法中,try是核心成员,意思是不能没有try,其他的内容都可以或多或少的省略掉,比如try-except,try-finally等。

2

debug调试

调试有很多种方法,这里列出主要的几种方法:

1.用print语句

用print()语句把可能有问题的每一个过程都进行输出,就像上面异常处理当中的一样,这种方法简单粗暴,但是在处理完所有的错误之后运行可能会有很多的无用信息,所以最终还要回来删掉这些print语句,于是有了下面的方法。

2.断言(assert)

在这里“断言”是一种程序设计的专业术语,是一种放在程序中的一阶逻辑(如一个结果为真或是假的逻辑判断式),目的是为了标示与验证程序开发者预期的结果。凡是用print()来辅助查看的地方都可以用断言(assert)来进行替代。

但是在程序中如果导出都是assert也并没有比print()好到哪里去,不过可以通过社吹Python解释的-o参数来启用或停用assert。

3.logging

把print()替换成logging是第三种方式,和assert比,logging不会抛出错误,而且还可以输出到文件中形成一个日志文件

logging的好处是,在运行代码中不会抛出错误,而是把错误输出到文件中,还可以指定记录信息的级别,有debug、info、warning、error等,且只会有一个生效

4.pdb

第四种方式是启动Python的调试器pdb,让程序以单步方式运行,可以随时查看运行的状态,就像使用jupyter notebook来一行一行运行代码一样,但是jupyter notebook的功能会更强大一些

5.IDE

利用一些支持调试功能的IDE工具来进行调试,比如VS code,PyCharm等

6.jupyter notebook

最喜欢的方式就是使用jupyter notebook来进行调试代码,可以自己设置一次运行多少行代码,能够准确定位到具体的错误位置,也是非常推荐的一个方式来进行代码的调试。

最后,代码调试是一个非常需要耐心的过程,也是体现学习程度的一个很重要的技能,希望大家能够好好掌握~

参考文章:https://www.liaoxuefeng.com/wiki/1016959663602400/1017602696742912

END -

本文为中国统计网社区产出内容,未经允许禁止转载


赠书活动中奖名单如下:

请未联系【小数】发送邮寄信息的读者,尽快联系我们!

708496dceaaa1f35c7e24f4b9f6d7dee.png

6d6f57cda08648722a141cb9b67db970.gif

d7826944d65b8fe8e3c5c057d1934d52.gif

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值