对于刚入门Python的同学来说,在运行代码时总免不了报错。如何通过报错查找错误代码?今天,木木老师总结了一些常见的报错类型,每种报错都会有标有错误细节和错误行。大家以后看到了,就更容易找出自己的bug了。
SyntaxError: 语法错误
就是你输入的代码不符合格式,可能多打、少打或错打了一些必要的字母或者标点。
# 例:忘记加英文冒号def func1()print('Hello World')# 报错:SyntaxError: invalid syntax# (语法错误:无效的语法)# 正确写法def func1():print('Hello World')
IndentationError:缩进错误
Python非常注重缩进的层次,一旦确定了缩进层次,后面就要统一。一开始用两个或者四个空格作为一个缩进,后面也需要一直保持一样的标准,否则机器就会识别错乱。
# 例:y = 2 缩进错误def func2():x = 1y = 2# 报错:IndentationError: unindent does not match any outer indentation level# (缩进错误:(y = 2 这一行)缩进变小了,但是其它地方匹配不到和他一样的缩进层级)# 正确写法def func2():x = 1y = 2
TypeError:类型错误
字典,列表,元组等在使用时一定要区分开,有些函数可以通用,有些就是专属。用错了就会有这类的报错,要灵活的进行类型转换。
# 例:没有将元组改为元组个数整型t=( 'a', 'b', 'c')for i in range(t):print([i])# 报错:TypeError: 'tuple' object cannot be interpreted as an integer# (类型错误:元组对象不能被解释为整数)# 正确写法t=( 'a', 'b', 'c')for i in range (len(t)):print([i])
NameError:变量名错误
忘记定义变量,或者定义的变量不用补全键敲错,就会报这种错误。
# 例:全局作用域不能访问局部变量def func4():x = 1print(x)# 报错:NameError: name 'x' is not defined# (变量名错误:变量名 'x' 没有被定义)# 正确写法def func4():x = 1print(x)
AttributeError:属性错误
特性引用和赋值失败时会引发属性错误。
# 例:元组中没有append属性tp=('1','3','5')tp.append('7')print(tp)# 报错:AttributeError: 'tuple' object has no attribute 'append'# (属性错误:元组对象没有'append'属性)# 正确写法tp=('1','3','5')tp=('1','3','5','7')print(tp)
IndexError:索引错误
使用的索引不存在,常索引超出序列范围。
# 例:引用超过list最大索引spam = ['cat', 'dog', 'mouse']print(spam[6])# 报错:IndexError: list index out of range# (索引错误:列表索引超出范围)# 正确写法spam = ['cat', 'dog', 'mouse']print(spam[2])
KeyError:关键字错误
使用了映射中不存在的关键字(键)时引发的关键字错误。
# 例:使用不存在的字典键值spam = {'cat': 'Zophie', 'dog': 'Basil','mouse': 'Whiskers'}print('The name of my pet zebra is ' + spam['zebra'])# 报错:KeyError: 'zebra'# (关键字错误:'zebra')# 正确写法spam = {'cat': 'Zophie', 'dog': 'Basil','mouse': 'Whiskers'}print('The name of my pet zebra is ' + spam['cat'])
TabError:Tab错误
相邻的两句的缩进需要统一使用tab或统一使用空格,不能混用,否则就会出现报错。
# 例:Tab空格混用def func8():x = 1y = 2# 报错:TabError: inconsistent use of tabs and spaces in indentation# (Tab错误:缩进中Tab键和空格的使用不一致)#正确写法def func8():x = 1y = 2
以上,是我们入门Python时最常见的一些错误类型。另外还有很多错误,我把整理的表格分享给大家,记得收藏起来~~
平时如果出错了,记得把错误保存起来,每种错误下还有很多细分错误,多多积累,自然而然就熟悉啦。
对于刚入门Python的同学来说,在运行代码时总免不了报错。如何通过报错查找错误代码?今天,木木老师总结了一些常见的报错类型,每种报错都会有标有错误细节和错误行。大家以后看到了,就更容易找出自己的bug了。SyntaxError: 语法错误就是你输入的代码不符合格式,可能多打、少打或错打了一些必要的字母或者标点。# 例:忘记加英文冒号def func1()print('Hello World')#...
1)忘记在 if , elif , else , for , while , class ,def 声明末尾添加 :(导致 “SyntaxError :invalid syntax”) 该
错误
将发生在类似如下代码中: 复制代码 代码如下: if spam == 42 print(‘Hello!’) 2)使用 = 而不是 ==(导致“SyntaxError: invalid syntax”) = 是赋值操作符而 == 是等于比较操作。该
错误
发生在如下代码中: 复制代码 代码如下: if spam = 42: print(‘Hello!’) 3)
错误
的使用缩进量。(导致“Indentation
(r"/a", aHandler)])
httpServer = tornado.httpserver.HTTPServer(app)
httpServer.listen(8888)
tornado.ioloop.IOLoop.instance().start()
Python
3 str.format传入参数
报错
KeyError
解决办法
KeyError
错误
描述与解决补充知识
KeyError
错误
描述与解决
以’w’的方式调用参数,会产生
KeyError
报错
# 定义变量c
>>>c = {'w':'w', 'o': 'o', 'r': 'r', 'l': 'l', 'd': 'd'}
{'w':'w', 'o': 'o', 'r': 'r'...
虽然说
Python
现在有f开头的字符串用来格式化了,但是出于习惯,以及在部分场景下,比如需要混合使用原始字符串(raw string)的时候,感觉还是format函数好用。
这次写的时候遇到了奇怪的
KeyError
。我一开始是这么写的:
s = r'''
function foo() {
printf("{}");
'''.format(arg)
但是这样会
报错
。
后来发现,因为format自己用大括号作为占位符,如果字符串里本身有大括号,还得转义一下。具体怎么转义,就是用两个大括号,所以应该改成
出现这
种
错误
,首先要看一下你是否使用了字典,
错误
提示的意思是找不到对应的键值。
例如,给定如下字典:
book_dict = {"price": 500, "bookName": "
Python
设计", "weight": "250g"}
若是查找字典中存在的key,则正常输出:
print(book_dict["price"])
运行
结果如下:
若是查找字典中不存在的key,则
报错
:
print(book_dict["sdfs"])
如上所示,
报错
提示就是
KeyError
:。对于这
种
问题,可以使
3. 可以使用`get()`方法获取字典中的值,如果键不存在,返回一个默认值。
例如,如果有一个字典`dict`,使用`dict[key]`时出现了`
KeyError
`,可以使用以下代码来避免此
错误
:
if key in dict:
value = dict[key]
else:
value = None # or other default value
或者,可以使用`get()`方法:
value = dict.get(key, None) # or other default value