1e计算机,1E: 错误

本文介绍了编程中常见的两类错误——句法错误和运行时错误。句法错误是由于Python无法理解代码的结构,如忘记括号或使用无效符号。运行时错误则是在代码理解无误但执行时出现问题,如引用未定义的变量或尝试除以零。文章通过示例解释了这两种错误,并提供了如何识别和修复它们的方法。此外,还提到了逻辑错误,即程序虽能运行但结果不正确的情况。最后,提供了几个编程练习来帮助读者实践错误调试技巧。
摘要由CSDN通过智能技术生成

你会在编程过程中遇到很多错误 (名为漏洞)。理解这些错误产生的原因,以及解决方法在编程中尤为重要。Python会严格按照你写的代码运行,但如果它理解不了你所写的东西,程序就不会运行。同样的道理,Python会提示你哪个地方会出错,帮助你修正程序。

以下是两种Python错误。

示例:句法错误

print "Gee golly"

在第一个例子中,我们忘了在 print 后面的内容上加上圆括 号,正确形式为 Print (…)。 Python 无法理解这样错误的代码。

这是第二个例子。

示例:运行时错误

print(greeting)

在第二个例子中,我们没有定义 greeting 变量。Python知道你要做什么,但是因为 greeting 没有被定义,所以错误出现了。

当Python不理解程序时,syntax error (句法错 误)会出现。当Python理解程序,但是在运行时出现问题时,run-time error (运行时 错误)会出现。

在英语中,句法错误 就像是说

Please cat dog monkey.

这句话的语法是错的。从英语语法角度讲,缺少一个动词。导致你不知道该做什么。句法与语法相似。

在英语中,运行时错误就像是说

Please eat the piano.

这个句子从语法角度说是对的 - 有动词,有名词,位置也对 - 所以你能理解要做什么。但是,在你执行吃钢琴的这个指令时会出现问题(除非你是一只白蚁)。这个错误叫做运行时错误因为它在这个程序运行后出现。

我们会在结束的时候讨论逻辑错误,逻辑错误是指程序可以正常运行,但是会输出错误的结果。比如说,

Please close the back door so that the bugs don't come in.

如果front door是打开的,这就是一个逻辑错误:漏洞 here should be 虫子

常见的Python语法错误

以下是一些额外的句法错误例子。其中一个很常见的是当Python发现了一个本不该有的符号。

示例:语法错误

print(Hello, World!)

Python会显示SyntaxError: invalid syntax and points with ^ to the exclamation point.原因是 !在Python中无意义。如果我们输入print("Hello, World!"),程序就正确了,因为这时Python就会明白!是Hello, World的一部分文本。

这里还有另一个更加不易察觉 的语句错误。

示例:语法错误

class = "入门高级计算机"

在Python中,class是一个特别的词语。如果你写了course而不是class还好。点击此处来查看Python中所有的特殊“关键词”。

如果你在文本两边只加了一个双引号,或者只用了一个单括号,你会得到以下句法错误:

示例:句法错误缺少第二个双引号

name = "Jim

在这个例子里,EOL是End Of Line的缩写:Python需要另一个"但是这一行内没有。

示例:句法错误缺少第二个括号

print(77

同样,EOF是End Of File的缩写:Python需要)但是程序内没有。

有时看似相近的两个句法错误其实会有不同的错误提示。但不管怎样,错误提示都是为了帮助你改正代码。

运行时错误

以下是一些常见的运行时错误。Python能理解程序指令,但是运行时出了问题。

使用未定义的变量或方程。如果随意篡改大小写,这种错误就会发生:示例未定义变量

callMe = "Maybe"

print(callme)

除以0。数学角度上是错误的。(为什么?因为0乘任何数都是0,所以 1 = X * 0无解,所以 1/0 无意义) 示例除以0

print(1/0)

代码类别不符示例将数字与字母相加

print("you cannot add text and numbers" + 12)

随着我们学习的深入,会有更多的Python句法错误。

5a5aeccc20290ba21a430ae47accb29a.png从技术角度来看,句法错误和运行时错误有什么区别呢?下面我们一起来比较一下他们。观察每个程序的输出。示例:运行时错误

print("这是一些文字")

print(1/0)

示例:句法错误

print("这是一些文字")

print(1*0

会出现运行时错误的程序会有输出,而出现句法错误的程序不会输出。这是因为Python运行是分两步走的:

Python首先查看程序句法是否正确,以确定其组成成分。

如果句法正确,程序才会被运行。

所以,一个句法错误的程序根本不会运行,但是一个运行时错误的程序会运行,直到错误出现。

逻辑错误

程序也可以成功运行(不出现句法或运行时错误)但是做的事情可能不对。比如,你可能想要一个可以计算两个数平均值的程序:x和y的平均值的定义为

f8ee139302715517e80a16593d3e4dd4.png

为什么这个程序不对呢?

示例This does notcalculate the average correctly.

x = 3

y = 4

average = x + y / 2

print(average)

平均值应该是

682e6c6d40d7f8781eff78802682edc0.png

但是程序运行结果是5.0!这次错误是关于算数中“运行顺序”的问题。当你输入x + y / 2的时候,从数学的角度上讲等同于

8814a072084d941e789b5f63370b540d.png。修正这个东西,第三行程序应该被写成average = (x + y) / 2,以告诉Python我们真正想要的是

4cb2c1911ebf6c4e30578dc5dbe80ff9.png,先进行加法,在进行除法。

逻辑错误出现的原因是错误地设计了程序,或者是因为写的代码表达的意思与设计本意不符(比如平均值这个例子)。逻辑错误很难被发现,尤其是在一个很长的程序中,但随着你编程经验的累计,你会更擅长避开这些逻辑错误。第6D课会给一些帮助你规避这些逻辑错误的建议。

练习

到此为止这一节课的知识就讲解完了,下面是一些有关调试的练习题(修正程序中的漏洞)。你可以试着在程序运行前查找 并修正错误,或者先运行程序 然后通过程序提示来进行修正。

5a5aeccc20290ba21a430ae47accb29a.png每一个程序都是已经写好的代码。你只需要改几个字符(字母/符号/数字)来修正每个程序。系统拒绝评判更改太多字符的程序。如果想要将程序至原始程序,点击重置程序。

78ca97a04a4d1b6e0829d7b1723724e4.png

编程练习:夏天请修改以下程序的句法错误,使得打印出从1到10的和。至多可改一个字符。

你需要创建一个账号并登录才能问一个问题。

print(1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 +)

78ca97a04a4d1b6e0829d7b1723724e4.png

编程练习:你好 Joe请修改以下程序中存在的运行时错误,使得在第一行打印Hello,在第二行打印Joe。至多可改两个字符。

你需要创建一个账号并登录才能问一个问题。

print("Hello")

username = Joe

print(username)

78ca97a04a4d1b6e0829d7b1723724e4.png

编程练习:购物你打算去买肉和牛奶,但是需要交税。你买了2美金的牛奶和4美金的肉,税率为3%。打印出总额(不需要打印出$)。Hint

你需要创建一个账号并登录才能问一个问题。

meatPrice = 4.00

meatTax = 0.03 * meatPrice

milkPrice = 2.00

milkTax = 0.03 * milkPrice

print(meatTax + meatPrice + milkTax + meatPrice)

当你完成以上练习题后,进入下一课的学习吧!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值