Debug你的错误 – PyHW指南 – esap~!
esap~!
esap~!

Debug你的错误 - PyHW指南

你的代码鼬鼬鼬鼬报错啦!
写代码当然少不了报错,关键是我们要学会怎么看
–AptS:1549

错误……

错误,错误。
自从写代码开始就一直躲不过她
解释器给的红色字符,时时刻刻在刺痛我们的眼睛

这是一个小错误,但解释器直接报错

但她其实并没有那么讨厌
她会直白的告诉你你的代码错在哪里,错的原因是什么
给你足够的信息去Debug
这就是我为什么这么喜欢错误信息,而不是你的源代码
把解释器当成你的朋友,这是你并肩作战的伙伴

你的错误日志呢?

Python是怎么告诉你错在哪里的?

环境:Python 3.12.7 Windows 64-bit

name = "Python"
print(f"it is {namee}")
-----------------------------
Traceback (most recent call last):
  File "c:UsersesapsDesktoperror.py", line 2, in <module>
    print(f"it is {namee}")
                   ^^^^^
NameError: name 'namee'; is not defined. Did you mean: 'name'?
-----------------------------
Python检测到错误后会告诉你代码的路径、行数,并指出是哪里错误,并给出错误类型
比如这里就是"NameError,变量'namee';,没有定义。你是不是在指'name'?"
解释器有时候可以给出修改建议给你,她真的,我哭死

接下来我将分类说明新手写代码比较常见的错误,以及如何使用错误信息进行Debug


语法错误 SyntaxError

当你输入的代码不符合Python的语法的时候会扔出这个错误

    if letter =="a" letter == "b":
                    ^^^^^^
SyntaxError: invalid syntax
-----------
语法错误,if判断过程中有多个条件需要用and、or等连接起来
-----------------------------
    if letter = "a" or letter == "b":
       ^^^^^^^^^^^^
SyntaxError: invalid syntax. Maybe you meant '==' or ':=' instead of '='?
-----------
语法错误,错误的使用了赋值符号,比较操作符号为两个等号(她甚至给了你解决方案,她真的,我哭死)
-----------------------------
    print("Hello Error Python!)
SyntaxError: EOL while scanning string literal
-----------
双引号没有闭合导致,把双引号补上
-----------------------------
#省略无关内容
if bian1==bian2==bian3:
#省略无关内容
-----------
SyntaxError: invalid character ':'(U+FF1A)
-----------
替换成英文字符即可

⚠️缩进同时使用空格和制表符 TabError

请绝对不要同时使用空格和制表符!

# shape_name,num_sides已定义,shape_name函数返回一个字符串
if 3 <= num_sides <= 10:
    name = shape_name(num_sides)
    print(f"it is {name}")
-----------
Traceback (most recent call last):
    print(f"it is {name}")
TabError: inconsistent use of tabs and spaces in indentation
-----------
这段代码中,print函数前方使用的是制表符缩进,而其他都为4空格缩进。这个错误在3.6.3版本中很难查出来!

类型错误 TypeError

a = 10
b = "5"
print(a + b)
-----------
TypeError: can only concatenate str (not "int") to str
-----------
解决方案:确保类型一致。

名称错误 NameError

name = "Python"
print(f"it is {namee}")
-----------
NameError: name 'namee' is not defined. Did you mean: 'name'?
-----------
解决方案:确保变量在引用之前已被定义

IndexError & KeyError 索引错误 & 键值错误

lst = [1, 2, 3]
print(lst[3])
-----------
IndexError: list index out of range
-----------
解决方案:确保索引在列表范围内。

-----------------------------

my_dict = {"name": "Alice","age": 30}
print(my_dict["gender"])
-----------
KeyError: 'gender'
-----------
解决方案:确保键值在字典中。

AttributeError 属性错误

class MyClass:
    def __init__(self):
        self.value = 10

obj = MyClass()
print(obj.non_existent_attribute)
-----------
AttributeError: 'MyClass' object has no attribute 'non_existent_attribute'
-----------
解决方案:确保此类含有此属性。
赞赏
知识共享许可协议
本作品采用知识共享署名 4.0 国际许可协议进行许可。
转载请注明本文链接:https://esaps.net/debug-your-code-error-esap-python/

AptS:1549

文章作者

这里是AptS:1549!The ESAP Project管理员

发表回复

textsms
account_circle
email


esap~!

Debug你的错误 - PyHW指南
你的代码鼬鼬鼬鼬报错啦!别再错这么多啦!赶紧学会自己Debug代码成为大佬吧!(虽然这篇文章并不能帮你成为大佬)
扫描二维码继续阅读
2024-10-16