1.NameError变量名错误
>>> a
Traceback (most recent call last):
File "<pyshell#1>", line 1, in <module>
a
NameError: name 'a' is not defined
>>> print(a)
Traceback (most recent call last):
File "<pyshell#0>", line 1, in <module>
print(a)
NameError: name 'a' is not defined
原因:a变量并没有定义(复制)
解决方案:
先要给a赋值。才能使用它。在实际编写代码过程中,报NameError错误时,查看该变量是否赋值,或者是否有大小写不一致错误,或者说不小心将变量名写错了。上面两个代码的错误都是因为a变量并没有赋值。
注:在Python中,无需显示变量声明语句,变量在第一次被赋值时自动声明。
>>> a=10
>>> a
10
>>> print(a)
10
2.IndentationError代码缩进错误
IndentationError: expected an indented block
>>>x=10
>>>if x==10:
print(x)
IndentationError: expected an indented block
原因:
缩进错误,在这里需要强调一点,python不仅对大小写敏感,而且对缩进非常严格,行首多个空格,少个空格都会报错。这是新手常犯的一个错误,要引起注意。不仅if语句要缩进,def(函数),class(类),for(循环),while(循环)等代码块都需要缩进。
解决方案:
>>>x=10
>>>if x==10:
print(x)
3.AttributeError对象属性错误
>>> import math
>>> math.value
Traceback (most recent call last):
File "<pyshell#14>", line 1, in <module>
math.value
AttributeError: module 'math' has no attribute 'value'
原因:导入的math模块并没有values这个属性
解决方案:
>>> import math
>>> a=4
>>> math.sqrt(4)
2.0
python拓展:使用dir函数查看某个模块的属性
例如:
>>> dir(math)
['__doc__', '__loader__', '__name__', '__package__', '__spec__', 'acos', 'acosh', 'asin', 'asinh', 'atan', 'atan2', 'atanh', 'ceil', 'comb', 'copysign', 'cos', 'cosh', 'degrees', 'dist', 'e', 'erf', 'erfc', 'exp', 'expm1', 'fabs', 'factorial', 'floor', 'fmod', 'frexp', 'fsum', 'gamma', 'gcd', 'hypot', 'inf', 'isclose', 'isfinite', 'isinf', 'isnan', 'isqrt', 'lcm', 'ldexp', 'lgamma', 'log', 'log10', 'log1p', 'log2', 'modf', 'nan', 'nextafter', 'perm', 'pi', 'pow', 'prod', 'radians', 'remainder', 'sin', 'sinh', 'sqrt', 'tan', 'tanh', 'tau', 'trunc', 'ulp']
4.TypeError类型错误
(1)TypeError: 'list' object cannot be interpreted as an integer
>>> t=('a','b','c')
>>> t=[1,2,3,4]
>>> for i in range(t):
print(s[i])
Traceback (most recent call last):
File "<pyshell#14>", line 1, in <module>
for i in range(t):
TypeError: 'list' object cannot be interpreted as an integer
原因:列表对象不能被解释为整数
解决方案:
>>> t=[1,2,3,4]
>>> for i in t:
print(i)
1
2
3
4
(2)'list' object is not callable
>>> t=[1,2,3,4]
>>> t()
Traceback (most recent call last):
File "<pyshell#30>", line 1, in <module>
t()
TypeError: 'list' object is not callable
原因:不是调用的列表对象
解决方案:
>>> t=[1,2,3,4]
>>> t[-1]
4
5.IOError输入输出错误
(1)文件不存在报错
>>> f=open("Hello.py")
Traceback (most recent call last):
File "<pyshell#34>", line 1, in <module>
f=open("Hello.py")
FileNotFoundError: [Errno 2] No such file or directory: 'Hello.py'
原因:open()函数没有指明mode,默认为只读方式,如果该目录下没有Hello.py的文件,则会报错,可查看是否拼写有错误,或者是否大小写错误,或者根本不存在这个文件。
解决方案:
#创建一个hello.py文件
#在我的目录下已经创建了hello.py文件
>>>f=open('hello.py')
'hello world'
(2)因文件权限问题报错
>>> f=open("hello.py")
>>> f.write("test")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IOError: File not open for writing
原因:open("hello.py")如果入参没有加读写模式参数mode,说明默认打开文件的方式为只读方式,而此时又要写入字符,所以权限受限,才会报错。
解决方案:
>>> f=open("hello.py",'w+') #w+:既可以写入还可以读取
>>> f.write("test")
6.KeyError字典键值错误
>>> d={'a':'小明','b':'小红','c':'小花'}
>>> d['b']
'小红'
>>> d['e']
Traceback (most recent call last):
File "<pyshell#37>", line 1, in <module>
d['e']
KeyError: 'e'
原因:键‘e’不存在
知识拓展:字典通过花括号中用逗号分隔的项目(键/值。键/值对使用冒号分隔)定义。其基本形式如下:
{键1:值1,[键2:值2,…,键n:值n] }
键必须为可hash对象,因此不可变对象(bool、int、float、complex、str、tuple、frozenset等)可以作为键;值则可以为任意对象。字典中的键是唯一的,不能重复。
解决方案:
>>> d['e']='小王' #你可以在字典里增加一个键
>>> d
{'a': '小明', 'b': '小红', 'c': '小花', 'e': '小王'}
>>> d['e']
'小王'