更多课程 选择中心


Python培训

400-111-8989

自学Python教程【第六十节】调试程序

  • 发布:Python培训
  • 来源:Crossin的编程教室
  • 时间:2019-03-13 15:02

虽然我们大多数都是第一次接触Python编程,甚至是第一次接触编程,但是我们或多或少已经面对过一些代码异常的状况了,你是怎么处理的呢?你的处理方法适合应对大体积的较复杂的异常吗?

自学<a style='color:blue' href='http://python.tedu.cn/data/'>Python教程</a>【第六十节】调试程序

写代码,不可避免地会出现bug。很多人在初学编程的时候,当写完程序运行时,发现结果与自己预料中的不同,或者程序意外中止了,就一时没了想法,不知道该从何下手,只能反复重新运行程序,期待忽然有次结果就对了。

今天我就来讲讲代码遇到问题时的一些简单处理方法。

1. 读错误信息

来看如下一个例程:

import random

a = 0

for i in range(5):

b = random.choice(range(5))

a += i / b

print a

这个程序中,i从0循环到4,每次循环中,b是0到4中的一个随机数。把i/b的结果累加到a上,最后输出结果。

运行这段程序,有时候会输出结果,有时候却跳出错误信息:

Traceback (most recent call last):

File "C:\Users\Crossin\Desktop\py\test.py", line 6, in <module>

a += i / b

ZeroDivisionError: integer division or modulo by zero

有些同学看见一段英文提示就慌了。其实没那么复杂,python的错误提示做得还是很标准的。

它告诉我们错误发生在test.py文件中的第6行

a += i / b

这一句上。

这个错误是“ZeroDivisionError”,也就是除零错。

“integer division or modulo by zero”,整数被0除或者被0模(取余数)。

因为0不能作为除数,所以当b随机到0的时候,就会引发这个错误。

知道了原因,就可以顺利地解决掉这个bug。

以后在写代码的时候,如果遇到了错误,先别急着去改代码。试着去读一读错误提示,看看里面都说了些啥。

2. 输出调试信息

我们在所有课程的最开始就教了输出函数“print”。它是编程中最简单的调试手段。有的时候,仅从错误提示仍然无法判断出程序错误的原因,或者没有发生错误,但程序的结果就是不对。这种情况下,通过输出程序过程中的一些状态,可以帮助分析程序。

把前面那个程序改造一下,加入一些与程序功能无关的输出语句:

import random

a = 0

for i in range(5):

print 'i: %d' % i

b = random.choice(range(5))

print 'b: %d' % b

a += i / b

print 'a: %d' % a

print

print a

运行后的输出结果(每次结果都会不一样):

i: 0

b: 3

a: 0

i: 1

b: 3

a: 0

i: 2

b: 3

a: 0

i: 3

b: 0

Traceback (most recent call last):

File "C:\Users\Crossin\Desktop\py\test.py", line 8, in <module>

a += i / b

ZeroDivisionError: integer division or modulo by zero

当b的值为0时,发生了除零错。这次可以更清晰地看出程序出错时的状态。

在真实开发中,程序的结构可能会非常复杂。通过输出调试信息,可以有效地缩小范围、定位错误发生的位置,确认错误发生时的场景,进而找出错误原因。

恭喜您在Python自学的道路上又坚持了一天,这节课我们学习的调试程序的相关内容,你学会了吗?其实这节课的相关内容,在我们学习编程、实战的过程中还是蛮重要的,但我们这节课的内容有限,相关知识大家还需要课下去搜集学习,加油!

免责声明:内容和图片源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

预约申请免费试听课

填写下面表单即可预约申请免费试听! 怕学不会?助教全程陪读,随时解惑!担心就业?一地学习,可全国推荐就业!

上一篇:自学Python教程【第五十九节】计时
下一篇:自学Python教程【第六十一节】Python 2到3的新手坑

如何自学Python?

说一说python中的几个基础语法

为什么Python类语法应该不同?

0基础入门Python,3 个常识点必须先了解!

  • 扫码领取资料

    回复关键字:视频资料

    免费领取 达内课程视频学习资料

Copyright © 2023 Tedu.cn All Rights Reserved 京ICP备08000853号-56 京公网安备 11010802029508号 达内时代科技集团有限公司 版权所有

选择城市和中心
黑龙江省

吉林省

河北省

湖南省

贵州省

云南省

广西省

海南省