接触了很多Python爱好者,有初学者,亦有转行人。不论大家学习Python的目的是什么,总之,学习Python前期写出来的代码不报错就是极好的。下面,严小样儿为大家罗列出Python3十大经典错误及解决办法,供大家学习。

很多人学习python,不知道从何学起。
很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手。
很多已经做案例的人,却不知道如何去学习更加高深的知识。
那么针对这三类人,我给大家提供一个好的学习平台,免费领取视频教程,电子书籍,以及课程的源代码!
QQ群:1097524789

一、 SyntaxError 语法错误

(1)引号没有成对出现

报错信息:

SyntaxError:EOL while scanning string literal 

错误示例:

string = 'hello world 

解决方法:

字符串切记要放在引号中,单引号双引号无所谓。当一个字符串中包含单引号或双引号时,很容易出现引号不配对的情况。

(2)圆括号没有成对出现

报错信息:

SyntaxError:unexpected EOF while parsing 

错误示例1:

result = (1024+(512*2)/128 

错误示例2:

print('hello world' 

解决方法:

使圆括号成对出现。在书写复杂的表达式或调用函数时会经常遇到这个问题。

(3)错误使用自操作运算符++或--等

报错信息:

SyntaxError:invalid syntax 

错误示例:

v = 64 
v++ 

解决方法:

在Python语言中,没有类似C语言的++或--等自操作运算符。与之类似功能的用法是+=或-=运算符。例如,使用下面的代码进行让变量v进行自增1的操作。

  1. v += 1

(4)试图使用等号(=)判断两个运算量是否相等

报错信息:

SyntaxError:invalid syntax 

错误示例:

if v=64:2 
print('hello world') 

解决方法:

在Python语言中使用两个等号(==)作为判断两个运算量是否相等的关系运算符,而等号(=)是赋值运算符。

(6)错误使用Python语言关键字作为变量名

报错信息:

SyntaxError: can`t assign to keyword 

错误示例:

False= 1 

解决方法:

不要使用Python语言关键字作为变量名、函数名或类名等。在Python Shell窗口中,使用help('keywords')指令可以查看Python语言的关键字列表。

(7)忘记在if/elif/else/while/for/def/class等语句末尾添加冒号(:)

报错信息:

SyntaxError:invalid syntax 

错误示例1:

a = '12345' 
for i  in a 
    print(i) 

错误示例2:

def sayhi() 
    print('Hi') 

解决方法:

在if/elif/else/while/for/def/class等语句末尾添加冒号(:)即可。牢记语法规则,多多练习多多敲代码。

(8)错误地使用了中文标点符号

报错信息:

SyntaxError: invalid character in identifier 

错误示例1:

print('hello','world') 
# 错误原因:逗号是中文标点符号 

错误示例2:

for i in range(10): 
# 错误原因:冒号是中文标点符号 

解决方法:

除了字符串中可以有中文外,其它任何情况均使用英文状态进行编辑。

二、 IndentationError 缩进错误报错信息:

IndentationError:unindent does not match any outer indentation level 
IndentationError:expected an indented block 

错误示例:

a = 2 
while a < 0: 
      print('hello') 
    a -= 1 
else: 
    print('0.0') 

解决方法:

上述代码中while语句体内的代码缩进没有对齐。正确使用缩进排版代码。当代码是从其它地方复制并粘贴过来的时候,这个错误较多见。

三、 NameError 名字错误

当变量名、函数名或类名等书写错误,或者函数在定义之前就被调用等情况下,就会导致名字错误。报错信息:

NameError: name 'pirnt' is not defined 
NameError: name 'sayhi' is not defined 
NameError: name 'pd' is not defined 

错误示例1:

pirnt('hello world') 
# 错误原因:print拼写错误。 

错误示例2:

sayhi() 
 
def sayhi(): 
    pass 
# 错误原因:在函数定义之前对函数进行调用。 

错误示例3:

pd.read_excel(r'file.xlsx') 
# 错误原因:在调用pandas方法前并未导入pandas库或者并未起别名为pd。 

解决方法:

正确书写变量名、函数名或类名等,在使用变量前先进行赋值,将函数的定义放在函数调用之前,在使用第三方库前先进行导入、调包等等。即保证某个名字(标识符)先存在,才能被使用。

四、 TypeError 类型错误

(1)整数和字符串不能进行连接操作

报错信息:

TypeError: Can`t convert 'int' object to str implicitly 
TypeError: unsupported operand type(s) for + : 'float' and 'str' 

错误示例1:

print('score:'+100) 

错误示例2:

print(9.8 + 'seconds') 

解决方法:

在整数、浮点数或布尔值与字符串进行连接操作之前,先使用str()函数将其转换为字符串类型。

(2)调用函数时参数的个数不正确,或者未传递参数

报错信息:

TypeError: input expected at most 1 arguments,got 2 
TypeError: say() missing 1 required positional argument:'words' 

错误示例1:

input('输入姓名','年龄') 
# 错误原因:试图给input()函数提供第2个参数。 

错误示例2:

def say(words): 
    print(words) 
 
say() 
# 错误原因:调用函数时未传递参数。 

解决方法:

记住函数用法,了解函数的参数定义,使用正确的方法调用函数即可。

五、 KeyError 键错误

使用不存在的键名访问字典中的元素,就会发生这个错误。报错信息:

KeyError: 'c' 

错误示例:

d = {'a':1,'b':2} 
print(d['c']) 

解决方法:

在访问字典中的元素时,先用in关键字检测要访问的键名是否存在,或者是使用字典和get()方法安全地访问字典元素。

六、 IndexError 索引错误

当访问列表的索引超出列表范围时,就会出现索引错误。报错信息:

IndexError: list index out of range 

错误示例:

a = [1,2,3] 
print(a[3]) 
# 错误原因:列表a中不存在第4个索引。列表的索引从0开始编号。 

解决方法:

通过len()函数获取列表的长度,然后判断要访问的索引是否超出列表范围。

七、 UNboundLocalError 未初始化本地变量错误

在函数中,如果对未声明的全局变量进行修改操作,将会遇到这个错误。报错信息:

UnboundLocalError: local variable 's' referenced before assignment 

错误示例:

s = 1 
 
def test(): 
    s += 1 
    print(s) 
 
test() 
# 错误原因:在函数内对未声明的全局变量s进行了自增操作。 
# Python将变量s视为一个本地的局部变量,但该变量未初始化。 

解决方法:

在函数内使用全局变量时,使用global关键字对其进行声明即可。

八、 AttributeError 属性错误

报错信息:

AttributeError: 'tuple' object has no attribute 'append' 
AttributeError: 'DataFrame' object has no attribute 'col' 

错误示例1:

t = (1,2,3) 
t.append(4) 
# 错误原因:元祖不可变。 

错误示例2:

df = pd.read_excel(r'data.xlsx') 
df.col 
# 错误原因:DataFrame没有col属性,应该为columns。 

解决方法:

正确书写类的属性名,不要发生书写错误。深刻理解元祖,列表的区别,可将元祖转换为列表添加元素。

九、 ModuleNotFoundError 模块不存在

报错信息:

ModuleNotFoundError: No module named 'pandas' 

错误示例1:

import pandas as pd 
# 没有导入成功,报上面错误。 

解决方法:

这种报错常见于两种场景中,第一、未下载、安装该模块;第二、将调用的模块路径与被调用的模块路径不一致等。第一种情况直接下载安装即可,在cmd中,pip install xxx;第二种情况电脑中可能存在多个版本的Python,建议保留一个常用的即可。

十、 FileNotFoundError 文件不存在

报错信息:

FileNotFoundError: File b'E:\test\test_data.csv' does not exist 

错误示例:

pd.read_csv('E:\test\test_data.csv') 
# 错误原因:路径中包含'\t',系统错误地认为是制表符。 

解决方法:

在确保该路径下确实存在所写文件后,在读取文件路径前面加'r',表示只读,作为文件路径读取;或者使用双斜杠'\ \'来进行转义,形如:'E:\ \test\ \test_data.csv'。偶尔也会发生文件名、路径的确写错,犯一些低级错误。

结束语

报错,并不可怕,那是一个学习的机会。现在搜索引擎这么发达,只要把错误信息放进去,一搜就出来了各种解决之道。

Python编程的10个经典错误及解决办法的更多相关文章

  1. 四十八:数据库之alembic常用命令和经典错误的解决办法

    常用命令:1.init:创建一个alembic仓库2.reversion:创建一个新的版本3.--autogenerate:自动将当前模型的修改,生成迁移脚本4.-m:message,可以记录本次迁移 ...

  2. Python: 编程遇到的一些问题以及网上解决办法?

    0.Python: TypeError: 'str' does not support the buffer interface,(点我) fp.write(url.encode("utf- ...

  3. python编程中的一个经典错误之list引用

    请看下面代码 class User: def __init__(self, name, hobby=[]): self.name = name self.hobby = hobby def add_h ...

  4. python文件读取:遇见的错误及解决办法

    问题一: TypeError: 'str' object is not callable 产生原因: 该错误TypeError: 'str' object is not callable字面上意思:就 ...

  5. Android编程学习过程中遇到的错误以及解决办法

    Android Studio遇到的问题 Android Studio一直提示右下角那个错误,Failed to open zip file.我是根据这位大佬的博客https://www.cnblogs ...

  6. 关于Python打开IDLE出现错误的解决办法

    安装好python,打开IDLE出现以下错误: 解决办法: 修改[Python目录]\Lib\idlelib\PyShell.py文件,在1300行附近,将def main():函数下面use_sub ...

  7. VS2010出现FileTracker : error FTK1011编译错误的解决办法

    VS2010出现FileTracker : error FTK1011不知道是不是vs2010的一个bug,反正有人提交了. FileTracker : error FTK1011编译错误的解决办法有 ...

  8. Oracle的常见错误及解决办法

    ORA-12528: TNS:listener: all appropriate instances are blocking new connections ORA-12528问题是因为监听中的服务 ...

  9. WCF服务部署到IIS上,然后通过web服务引用方式出现错误的解决办法

    本文转载:http://www.cnblogs.com/shenba/archive/2012/01/06/2313932.html 昨天在用IIS部署一个WCF服务时,碰到了如下错误: 理解了文档内 ...

随机推荐

  1. Prometheus + Grafana 监控系统搭

    本文主要介绍基于Prometheus + Grafana 监控Linux服务器. 一.Prometheus 概述(略) 与其他监控系统对比 1 Prometheus vs. Zabbix Zabbix ...

  2. 数据可视化之powerBI入门(十一)认识Power BI数据分析语言DAX

    DAX是英文Data Analysis Expression的缩写,意思是数据分析表达式,从名称上就可以看出,DAX公式是用作数据分析的,事实上也确实如此,从数据分析层面认识DAX会更有助于我们理解它 ...

  3. J.U.C体系进阶(五):juc-collections 集合框架

    Java - J.U.C体系进阶 作者:Kerwin 邮箱:806857264@qq.com 说到做到,就是我的忍道! juc-collections 集合框架 ConcurrentHashMap C ...

  4. oracle数据库备份还原命令

    oracle数据库备份命令exp 用户名/密码@orcl file=d:\xxxxxx.dmp owner=用户名 oracle数据库还原命令sqlplus conn / as sysdba drop ...

  5. Cyber Security - Palo Alto Firewall Objects Addresses, Services, and Groups(1)

    Address Objects and Groups Creating address objects. Organizing address objects with address groups ...

  6. 可能这是Redis可视化工具最全的横向评测

    1 命令行 不知道大家在日常操作redis时用什么可视化工具呢? 以前总觉得没有什么太好的可视化工具,于是问了一个业内朋友.对方回:你还用可视化工具?直接命令行呀,redis提供了这么多命令,操作起来 ...

  7. p46_IPv4地址

    IP地址:全世界唯一的32位/4字节标识符,标识路由器主机的接口. IP地址::={<网络号>,<主机号>} 图中有6个子网 比如222.1.3.0是网络号,3是主机号,222 ...

  8. HTTP请求方式及常见问题

    请求方式 当前HTTP一共有八种方式.有三种是有HTTP1.0提供,剩余五种则是有HTTP1.1提供 常见问题 啥是OPTIONS?有啥作用 是浏览器对复杂跨域请求的一种处理方式,在真正发送请求之前, ...

  9. 毫不留情地揭开 ArrayList 和 LinkedList 之间的神秘面纱

    先看再点赞,给自己一点思考的时间,思考过后请毫不犹豫微信搜索[沉默王二],关注这个靠才华苟且的程序员.本文 GitHub github.com/itwanger 已收录,里面还有技术大佬整理的面试题, ...

  10. python Web项目上线之服务器环境配置

    1.下载安装Xftp 安装成功后,登录服务器用户密码,登录成功后 使用Xftp 将下载好的python解释器linux压缩包放置在服务器根目录下(这里用的是python3.7) 2. 解压压缩包,安装 ...