21番茄网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 21番茄网
查看: 707|回复: 1

python报错归纳

[复制链接]

646

主题

799

帖子

2686

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
2686
发表于 2020-11-11 20:52:31 | 显示全部楼层 |阅读模式
python报错归纳

1.【syntaxError:invalid syntax】(语法错误:无效语法)

invalid:无效的
syntax:句法

2.【IndentationError: expected an indented block】(缩进错误:期望一个缩进块)

Indentation:首行缩排
expected:预计
indented:缩进
block:阻碍

3.【ZeroDivisionError】小学数学告诉我们,0是不可以做除数的,所以导致后面的循环无法执行。

python报错归纳  Python基础语法 1
                               
登录/注册后可看大图


Python 异常处理

BaseException所有异常的基类
SystemExit解释器请求退出
KeyboardInterrupt用户中断执行(通常是输入^C)
Exception常规错误的基类
StopIteration迭代器没有更多的值
GeneratorExit生成器(generator)发生异常来通知退出
StandardError所有的内建标准异常的基类
ArithmeticError所有数值计算错误的基类
FloatingPointError浮点计算错误
OverflowError数值运算超出最大限制
ZeroDivisionError除(或取模)零 (所有数据类型)
AssertionError断言语句失败
AttributeError对象没有这个属性
EOFError没有内建输入,到达EOF 标记
EnvironmentError操作系统错误的基类
IOError输入/输出操作失败
OSError操作系统错误
WindowsError系统调用失败
ImportError导入模块/对象失败
LookupError无效数据查询的基类
IndexError序列中没有此索引(index)
KeyError映射中没有这个键
MemoryError内存溢出错误(对于Python 解释器不是致命的)
NameError未声明/初始化对象 (没有属性)
UnboundLocalError访问未初始化的本地变量
ReferenceError弱引用(Weak reference)试图访问已经垃圾回收了的对象
RuntimeError一般的运行时错误
NotImplementedError尚未实现的方法
SyntaxErrorPython 语法错误
IndentationError缩进错误
TabErrorTab 和空格混用
SystemError一般的解释器系统错误
TypeError对类型无效的操作
ValueError传入无效的参数
UnicodeErrorUnicode 相关的错误
UnicodeDecodeErrorUnicode 解码时的错误
UnicodeEncodeErrorUnicode 编码时错误
UnicodeTranslateErrorUnicode 转换时错误
Warning警告的基类
DeprecationWarning关于被弃用的特征的警告
FutureWarning关于构造将来语义会有改变的警告
OverflowWarning旧的关于自动提升为长整型(long)的警告
PendingDeprecationWarning关于特性将会被废弃的警告
RuntimeWarning可疑的运行时行为(runtime behavior)的警告
SyntaxWarning可疑的语法的警告
UserWarning用户代码生成的警告

来自:https://www.runoob.com/python/python-exceptions.html






上一篇:在python里,『#』常用作单行注释符号
下一篇:python注意点
回复

使用道具 举报

646

主题

799

帖子

2686

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
2686
 楼主| 发表于 2020-11-20 08:56:46 | 显示全部楼层
###
      学习Python,掌握读取错误信息、排除错误的能力是非常重要的,今天助教和同学们聊聊如何处理报错问题,一定要认真听哦~
###
      我们在编写代码的时候,最初会遇到很多次报错,只要我们遵循两个点,就不用再担心报错问题。一是确定报错的行数,二是根据错误类型,锁定几种可能的错误,逐步排查,最终找到问题所在。
###
      下面,我们就来看看新手常见的几种报错类型。
###

一、TypeError:类型错误,对象用来表示值的类型非预期类型时发生的错误。
###
错误例子:
age=18
print(‘我的年龄是’+age)

###
报错信息:TypeError: can only concatenate str (not "int") to str
这是类型错误,提示必须是一个字符串,不能是数字。
###
解决方法:在使用“+”做拼接的时候,必须使用字符串,或者把数字转化成字符串。
###
正确代码:
age=18
print(‘我的年龄是’+str(age))

###

二、AttributeError:属性错误,特性引用和赋值失败时会引发属性错误
###
tp=('1','3','5')
tp.append('7')
print(tp)

###
报错信息:AttributeError: 'tuple' object has no attribute 'append'
提示:属性错误:元组对象没有“append”的属性,简单来说元组是不可变对象,解决方法:把元组换成列表。
###

三、NameError:试图访问的变量名不存在
###
      举个简单的例子,只运行一行print(a),会报错:NameError: name 'a' is not defined。简单来说,就是变量a没有定义,解决方法是在前面给a赋值,比如加上一行a=''。
###
      还有一种需要小心处理的是:变量或者函数名拼写错误。如:
name= '卡西'
print('My name is ' + nane)


四、SyntaxError:语法错误
###
  Python基础语法 085355p4iz5oy7od5oysgm
###
报错信息为:SyntaxError: invalid syntax
提示是:语法错误,非法的语法。
###
       当报错的时候,要注意回到错误信息的那一行,然后从下往上,慢慢查找,此处这个程序就是因为 if 语法忘了在判断语句后面加“:”,所以导致的错误。
###
       另外,初学者写代码时注意:使用英文符号哦~
###
  Python基础语法 085452ibgg0zbiit9brnvz
###

五、KeyError:在读取字典中的key和value时,如果key不存在,就会触发KeyError错误
###
举个小例子:
dict={'a':1,'b':2,'c':3}
print(dict['d'])

报错信息为:KeyError: 'd'。
###
      第一种解决方法,首先测试key是否存在,然后才进行下一步操作,如:
###
  Python基础语法 085523y9n9e7l313q31rnl
###
      第二种,利用dict内置的get(key[,default])方法,如:print(dict['d'])改为print(dict.get('d'))
###
      如果key存在,则返回其value,否则返回None;使用这个方法永远不会触发KeyError。
###
六、IndexError:索引错误,使用的索引不存在,常索引超出序列范围,序列中没有此索引(index)
###
  Python基础语法 085556p7cabseqnzn73bzd
###
报错信息:IndexError: list index out of range
提示:索引错误,列表索引超出了范围。
###
解决办法:回头看列表的长度,索引是要小于列表的长度的。上面的列表长度是5,而索引却要打印第七个,所以是超出了列表的长度。
##

七、IndentationError: 缩进有误
###
  Python基础语法 085631taho5ya42m31my9r
###
报错:IndentationError: expected an indented block
原因:缩进有误,Python的缩进非常严格,行首多个空格,少个空格都会报错。
###
由于不熟悉python编码规则,不易查找,所以会成为新手常犯的一个错误。像def,class,if,for,while等代码块都需要缩进。
###

八、TabError: Tab 和空格混用
###
      相邻的两句的缩进需要统一使用tab或统一使用空格,不能混用。否则就会出现以下报错:TabError: inconsistent use of tabs and spaces in indentation。
###
      tab键本质上是制表符,而不是缩进符,不同的文本编辑器中制表符代表的空格宽度不一如果代码需要跨平台或跨编辑器读写,建议不要使用制表符(tab键)。
###
      关于Python的报错类型还有很多,助教在这里就不一一细讲了,同学们可以在这个网站查阅更多报错类型:https://www.runoob.com/python/python-exceptions.html
###

      此外,助教也总结了一份《Python标准异常总结》https://shimo.im/docs/mNpr9UMgRt4qrhIy/ ,建议收藏~
###
      正所谓“久病成医”,同学们代码练习多了,遇到的报错多了,处理报错信息也将会越来越轻松。
###
      当然,在练习的同时,也不要忘了多思考多总结,只有把遇到的报错和解决方法记下来,下次遇到才不会慌,也不会再踩入同一个坑。
###
  
  
AssertionError
  
  

  
断言语句(assert)失败
  

  
AttributeError
  

  
尝试访问未知的对象属性
  

  
EOFError
  

  
用户输入文件末尾标志EOF(Ctrl+d)
  

  
FloatingPointError
  

  
浮点计算错误
  

  
GeneratorExit
  

  
generator.close()方法被调用的时候
  

  
ImportError
  

  
导入模块失败的时候
  

  
IndexError
  

  
索引超出序列的范围
  

  
KeyError
  

  
字典中查找一个不存在的关键字
  

  
KeyboardInterrupt
  

  
用户输入中断键(Ctrl+c)
  

  
MemoryError
  

  
内存溢出(可通过删除对象释放内存)
  

  
NameError
  

  
尝试访问一个不存在的变量
  

  
NotImplementedError
  

  
尚未实现的方法
  

  
OSError
  

  
操作系统产生的异常(例如打开一个不存在的文件)
  

  
OverflowError
  

  
数值运算超出最大限制
  

  
ReferenceError
  

  
弱引用(weak reference)试图访问一个已经被垃圾回收机制回收了的对象
  

  
RuntimeError
  

  
一般的运行时错误
  

  
StopIteration
  

  
迭代器没有更多的值
  

  
SyntaxError
  

  
Python的语法错误
  

  
IndentationError
  

  
缩进错误
  

  
TabError
  

  
Tab和空格混合使用
  

  
SystemError
  

  
Python编译器系统错误
  

  
SystemExit
  

  
Python编译器进程被关闭
  

  
TypeError
  

  
不同类型间的无效操作
  

  
UnboundLocalError
  

  
访问一个未初始化的本地变量(NameError的子类)
  

  
UnicodeError
  

  
Unicode相关的错误(ValueError的子类)
  

  
UnicodeEncodeError
  

  
Unicode编码时的错误(UnicodeError的子类)
  

  
UnicodeDecodeError
  

  
Unicode解码时的错误(UnicodeError的子类)
  

  
UnicodeTranslateError
  

  
Unicode转换时的错误(UnicodeError的子类)
  

  
ValueError
  

  
传入无效的参数
  

  
ZeroDivisionError
  

  
除数为零
  


以下是 Python 内置异常类的层次结构:

BaseException

+-- SystemExit

+-- KeyboardInterrupt

+-- GeneratorExit

+-- Exception

       +-- StopIteration

       +-- ArithmeticError

       |    +-- FloatingPointError

       |    +-- OverflowError

       |    +-- ZeroDivisionError

       +-- AssertionError

       +-- AttributeError

       +-- BufferError

       +-- EOFError

       +-- ImportError

       +-- LookupError

       |    +-- IndexError

       |    +-- KeyError

       +-- MemoryError

       +-- NameError

       |    +-- UnboundLocalError

       +-- OSError

       |    +-- BlockingIOError

       |    +-- ChildProcessError

       |    +-- ConnectionError

       |    |    +-- BrokenPipeError

       |    |    +-- ConnectionAbortedError

       |    |    +-- ConnectionRefusedError

       |    |    +-- ConnectionResetError

       |    +-- FileExistsError

       |    +-- FileNotFoundError

       |    +-- InterruptedError

       |    +-- IsADirectoryError

       |    +-- NotADirectoryError

       |    +-- PermissionError

       |    +-- ProcessLookupError

       |    +-- TimeoutError

       +-- ReferenceError

       +-- RuntimeError

       |    +-- NotImplementedError

       +-- SyntaxError

       |    +-- IndentationError

       |         +-- TabError

       +-- SystemError

       +-- TypeError

       +-- ValueError

       |    +-- UnicodeError

       |         +-- UnicodeDecodeError

       |         +-- UnicodeEncodeError

       |         +-- UnicodeTranslateError

       +-- Warning

            +-- DeprecationWarning

            +-- PendingDeprecationWarning

            +-- RuntimeWarning

            +-- SyntaxWarning

            +-- UserWarning

            +-- FutureWarning

            +-- ImportWarning

            +-- UnicodeWarning

            +-- BytesWarning

            +-- ResourceWarning

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|21番茄网 ( 粤ICP备10099428号 ) 奇远富

GMT+8, 2024-4-24 19:00 , Processed in 0.610631 second(s), 49 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表