[转载] Python3十大经典错误及解决办法

参考链接: Python中的关键字2

◆ ◆ ◆  ◆ ◆

 

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

 

 一、 SyntaxError 语法错误

 (1)引号没有成对出现

 报错信息:

 1SyntaxError:EOL while scanning string literal

 

 

 错误示例:

 1string = 'hello world

 

 

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

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

 报错信息:

 1SyntaxError:unexpected EOF while parsing

 

 

 错误示例1:

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

 

 

 错误示例2:

 1print('hello world'

 

 

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

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

 报错信息:

 1SyntaxError:invalid syntax

 

 

 错误示例:

 1v = 64

2v++

 

 

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

 1v += 1

 

 

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

 报错信息:

 1SyntaxError:invalid syntax

 

 

 错误示例:

 1if v=64:

2    print('hello world')

 

 

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

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

 报错信息:

 1SyntaxError: can`t assign to keyword

 

 

 错误示例:

 1False= 1

 

 

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

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

 报错信息:

 1SyntaxError:invalid syntax

 

 

 错误示例1:

 1a = '12345'

2for i  in a

3    print(i)

 

 错误示例2:

 1def sayhi()

2    print('Hi')

 

 

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

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

 报错信息:

 1SyntaxError: invalid character in identifier

 

 

 错误示例1:

 1print('hello','world')

2# 错误原因:逗号是中文标点符号

 

 

 错误示例2:

 1for i in range(10):

2# 错误原因:冒号是中文标点符号

 

 

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

 二、 IndentationError 缩进错误

 报错信息:

 1IndentationError:unindent does not match any outer indentation level

2IndentationError:expected an indented block

 

 

 错误示例:

 1a = 2

2while a < 0:

3      print('hello')

4    a -= 1

5else:

6    print('0.0')

 

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

 三、 NameError 名字错误

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

 报错信息:

 1NameError: name 'pirnt' is not defined

2NameError: name 'sayhi' is not defined

3NameError: name 'pd' is not defined

 

 

 错误示例1:

 1pirnt('hello world')

2# 错误原因:print拼写错误。

 

 

 错误示例2:

 1sayhi()

2

3def sayhi():

4    pass

5# 错误原因:在函数定义之前对函数进行调用。

 

 

 错误示例3:

 1pd.read_excel(r'file.xlsx')

2# 错误原因:在调用pandas方法前并未导入pandas库或者并未起别名为pd。

 

 

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

 四、 TypeError 类型错误

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

 报错信息:

 1TypeError: Can`t convert 'int' object to str implicitly

2TypeError: unsupported operand type(s) for + : 'float' and 'str'

 

 

 错误示例1:

 1print('score:'+100)

 

 

 错误示例2:

 1print(9.8 + 'seconds')

 

 

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

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

 报错信息:

 1TypeError: input expected at most 1 arguments,got 2

2TypeError: say() missing 1 required positional argument:'words'

 

 

 错误示例1:

 1input('输入姓名','年龄')

2# 错误原因:试图给input()函数提供第2个参数。

 

 

 错误示例2:

 1def say(words):

2    print(words)

3

4say()

5# 错误原因:调用函数时未传递参数。

 

 

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

 五、 KeyError 键错误

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

 报错信息:

 1KeyError: 'c'

 

 

 错误示例:

 1d = {'a':1,'b':2}

2print(d['c'])

 

 

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

 六、 IndexError 索引错误

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

 报错信息:

 1IndexError: list index out of range

 

 

 错误示例:

 1a = [1,2,3]

2print(a[3])

3# 错误原因:列表a中不存在第4个索引。列表的索引从0开始编号。

 

 

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

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

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

 报错信息:

 1UnboundLocalError: local variable 's' referenced before assignment

 

 

 错误示例:

 1s = 1

2

3def test():

4    s += 1

5    print(s)

6

7test()

8# 错误原因:在函数内对未声明的全局变量s进行了自增操作。

9# Python将变量s视为一个本地的局部变量,但该变量未初始化。

 

 

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

 八、 AttributeError 属性错误

 报错信息:

 1AttributeError: 'tuple' object has no attribute 'append'

2AttributeError: 'DataFrame' object has no attribute 'col'

 

 

 错误示例1:

 1t = (1,2,3)

2t.append(4)

3# 错误原因:元祖不可变。

 

 

 错误示例2:

 1df = pd.read_excel(r'data.xlsx')

2df.col

3# 错误原因:DataFrame没有col属性,应该为columns。

 

 

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

 九、 ModuleNotFoundError 模块不存在

 报错信息:

 1ModuleNotFoundError: No module named 'pandas'

 

 

 错误示例1:

 1import pandas as pd

2# 没有导入成功,报上面错误。

 

 

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

 十、 FileNotFoundError 文件不存在

 报错信息:

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

 

 

 错误示例:

 1pd.read_csv('E:\test\test_data.csv')

2# 错误原因:路径中包含'\t',系统错误地认为是制表符。

 

 

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

 结束语

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/540277.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

两台电脑间大量数据拷贝的快捷方法

可能大家会遇到需要将一台电脑里的数据拷贝到另外一台电脑&#xff0c;最常用的方法是用u盘或移动硬盘等存储设备来拷贝&#xff0c;这样速度慢&#xff0c;而且可能拷贝多次才能将数据拷贝完。现提供一种方法&#xff0c;就是通过windows 的文件共享来实现。通过千兆网线直接连…

[转载] 使用 Web 标准生成 ASP.NET 2.0 Web 站点

参考链接&#xff1a; 使用super访问Java祖父母的成员 Stephen WaltherSuperExpert.com 适用于&#xff1a; Microsoft ASP.NET 2.0 (Beta 2) Microsoft Visual Studio .NET 2005 Microsoft Visual Web Developer 摘要&#xff1a; Microsoft ASP.NET 2.0 具有很多有用的功能…

Office快捷键大全之三(Access快捷键下篇)

向下键 向某帮助主题的末尾滚动 Page Up 以较大增量向某帮助主题的开头滚动 Page Down 以较大增量向某帮助主题的末尾滚动 Home 移到某帮助主题的开头 End 移到某帮助主题的末尾 CtrlP 打印当前帮助主题 CtrlA 选定整个帮助主题 CtrlC 将选定项复制到"剪贴…

[转载] 如何在Android设备之间共享Google Play应用,音乐等

参考链接&#xff1a; 使用super访问Java祖父母的成员 We recently showed you how to configure your iOS devices for app and media sharing; more than a few people wrote in asking how to do the same thing with Google Play purchases. Read on as we dig into how t…

linux 高性能读书笔记之通用socket地址

####socket网络编程接口 socket的地址是结构体sockaddr 代码如下 struct sockaddr{ sa_family_t sa_family; char sa_data[14]; } sa_family 成员是地址族类型&#xff08;sa_family_t)变量。地址族类型通常与协议族类型对应 1.二者对应表 协议族地址表描述PF_UNIXAF_UNIXUNIX本…

[转载] JAVA面向对象之代码块 继承 方法的重写 super关键字与重写toString()方法介绍

参考链接&#xff1a; 可以重写Java中的私有方法吗 JAVA面向对象之代码块与继承 代码块分类 局部代码块 作用:限制变量生命周期 书写位置:在方法中 构造代码块 开发中很少使用 书写位置:类中 方法外 调用时机:如果你有构造代码块 系统会帮你调用 帮你在创建对象…

struts2中s:select标签的使用

转自&#xff1a;https://www.cnblogs.com/Sara-shi/archive/2013/03/13/struts2_select.html 1 静态生成 <s:select name"user.sex" list"#{0:男,1:女}" label"性别" headerKey"" headerValue"请选择性别"></s:se…

[转载] JAVA面试题大全(part_1)

参考链接&#xff1a; 对Java中派生类方法更严格的访问 JAVA面试题大全(part_1) 1、面向对象的特征有哪些方面 (1)抽象&#xff1a; 抽象就是忽略一个主题中与当前目标无关的那些方面&#xff0c;以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题&#xf…

使用mysqladmin命令修改MySQL密码与忘记密码

修改密码&#xff1a; 1.例如你的 root用户现在没有密码&#xff0c;你希望的密码修改为123456&#xff0c;那么命令是&#xff1a; mysqladmin -u root password 123456 2.如果你的root现在有密码了&#xff08;123456&#xff09;&#xff0c;那么修改密码为abcdef的命令是&a…

[转载] java面试100问+参考答案

参考链接&#xff1a; 对Java中派生类方法更严格的访问 1、面向对象的特征有哪些方面 (1).抽象&#xff1a; 抽象就是忽略一个主题中与当前目标无关的那些方面&#xff0c;以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题&#xff0c;而只是选择其中的…

工作所用的模块回滚脚本

俗话说的好&#xff1a;“真男人从来不回滚”&#xff0c;但是家中常备一个回滚脚本也是很有必要的&#xff0c;我所在公司的服务器模块名都是在初始化的时候写进/etc/role_install这个文件里&#xff0c;如下图的这个服务器就是fss服务器&#xff1a; 再比如下面这个服务器&am…

Linux服务器性能评估与优化

一、影响Linux服务器性能的因素 1. 操作系统级 CPU 内存 磁盘I/O带宽 网络I/O带宽 2. 程序应用级 二、系统性能评估标准影响性能因素评判标准好坏糟糕CPUuser% sys%< 70%user% sys% 85%user% sys% >90%内存Swap In&#xff08;si&…

[转载] Java序列化的几种方式以及序列化的作用

参考链接&#xff1a; Java中带有继承的对象序列化 文章转载自&#xff1a; 本文着重讲解一下Java序列化的相关内容。 如果对Java序列化感兴趣的同学可以研究一下。 一.Java序列化的作用 有的时候我们想要把一个Java对象变成字节流的形式传出去&#xff0c;有的时候我们…

nginx 非80、443端口跳转到80、443

其实很简单: 123if ($server_port ! 80 ) { rewrite ^/(.*)$ http://$host/$1 permanent; }举一反三。。。 123if ($server_port ! 443 ) { rewrite ^/(.*)$ https://$host/$1 permanent; }123if ($host ! host ) { rewrite ^/(.*)$ http://host/$1 permanent; }本文转自 ninny…

[转载] 一文彻底搞懂父类引用指向子类对象问题

参考链接&#xff1a; 用子类引用子类对象 vs 父类引用 public class Father { private String name; private int age; private int weight; public void eat() { System.out.println("Father is eating"); } private void run() { System.out.println("Runin…

把控站外seo效果的几个操作点

把控站外seo效果的几个操作点 实际上&#xff0c;站外的seo不仅仅是外链这么简单&#xff0c;还包括用户行为&#xff08;点击&#xff09;&#xff0c;品牌词曝光等工作。大部分情况下&#xff0c;我们所说的站外优化就是发外链。本文就外链相关事宜&#xff0c;讲解些许操作点…

[转载] 【C语言】fopen C4996错误解决

参考链接&#xff1a; C和C#重载可以与继承一起使用吗 C4996 fopen: This function or variable may be unsafe. Consider using fopen_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. 解决方案&#xff1a;添加宏定…

Quartus II 8.1 详解--有图---图片详解 【1讲】

Quartus II 8.1 详解--有图---图片详解 看图片比较清楚&#xff0c;比文章清楚的多 本文转自 zhangguangyi 51CTO博客&#xff0c;原文链接http://blog.51cto.com/bosszhang/808019:

[转载] JAVA数组实现学生成绩统计

参考链接&#xff1a; Java程序的输出 20(继承) 一、项目名称 数组实现学生成绩统计 二、项目描述 1.项目简介&#xff1a; 由用户输入学生人数与名字&#xff0c;并定义当前学期课程数与课程名&#xff0c;并分别录入每位学生每门课程成绩&#xff0c;系统显示输入每位学生每…

建立同步文件的脚本

为避免一个一个的去修改每一个服务器的配置文件&#xff0c;只需要rsync同步一下就可以搞定#!/bin/bash#rsync.shLOCAL_DIR"/opt/admin"test -n "$hosts" || hosts"xxxx xxxx"REMOTE_DIR"/opt/"RSYNC_LOG"/opt/var/log/rsync.log…