2.1 小小的沉思:bug和debug

小小的“hello,提拉米苏!”程序在 IDLE 中运行时出错了,弹出了一个警告框,如图2.1所示。

图2.1 警告框

这个警告的意思是有语法错误,就是说,你写的代码,Python的IDLE看不懂!IDLE在运行Python程序时会先检查一遍代码,发现其中存在语法错误会给出错误警告。小小仔细检查了一遍代码,发现print()中的引号似乎写得不对。于是他把代码修改了一下:

将引号改为英文的引号,再次运行就成功了,如图2.2所示。

图2.2 “hello,提拉米苏!”程序正确运行了

虽然程序正确运行了,可是小小却陷入了沉思:“这个程序只有一行代码,那如果编写更复杂的程序,如何才能保证代码不出错呢?”答案是:“无法保证!”有人统计过,一次就编写成功没有错误的程序大约只有1%。代码越长,出错的可能性就越大。这真是太糟糕了!不过反过来想,我们心理也平衡了,毕竟自己写的程序出错了也并不是什么稀奇的事。

我们虽然无法保证程序不出错,但是仔细检查代码,还是可以找出其中的错误的,然后改正它们。

在实际编程中,程序中出现的错误可没有这里的错误这么简单,成千上万行的代码中会出现千奇百怪的错误,让人防不胜防。这些错误就像一群藏在程序中的虫子,在英文中被称作bug。有的bug很简单,看看出错信息就可以知道问题出在哪,有的bug很复杂,需要知道在出错时,哪些变量的值是正确的,哪些变量的值是错误的。因此,需要通过一定的手段来修复 bug,这个过程叫作调(tiao)试,在英文中叫作debug。