python3经典实例_Python3十大经典错误及解决办法

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

927af6d9ffa27eb3dcb904139129747a.jpg-wh_651x-s_246905569.jpg

一、 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的操作。

v += 1

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

报错信息:

SyntaxError:invalid syntax

错误示例:

if v=64:2

print('hello world')

解决方法:

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

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

报错信息:

SyntaxError: can`t assigntokeyword

错误示例:

False= 1

解决方法:

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

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

报错信息:

SyntaxError:invalid syntax

错误示例1:

a ='12345'

for i ina

print(i)

错误示例2:

def sayhi()

print('Hi')

解决方法:

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

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

报错信息:

SyntaxError: invalidcharacterinidentifier

错误示例1:

print('hello','world')

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

错误示例2:

foriinrange(10):

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

解决方法:

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

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

IndentationError:unindent doesnotmatchanyouterindentationlevel

IndentationError:expected an indented block

错误示例:

a = 2

while a < 0:

print('hello')

a -= 1

else:

print('0.0')

解决方法:

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

三、 NameError 名字错误

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

NameError:name'pirnt'isnotdefined

NameError: name'sayhi'isnotdefined

NameError: name'pd'isnotdefined

错误示例1:

pirnt('hello world')

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

错误示例2:

sayhi()

def sayhi():

pass

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

错误示例3:

pd.read_excel(r'file.xlsx')

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

解决方法:

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

四、 TypeError 类型错误

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

报错信息:

TypeError: Can`tconvert'int'objecttostr implicitly

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

错误示例1:

print('score:'+100)

错误示例2:

print(9.8 +'seconds')

解决方法:

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

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

报错信息:

TypeError: input expectedatmost 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: listindexoutofrange

错误示例:

a = [1,2,3]

print(a[3])

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

解决方法:

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

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

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

UnboundLocalError:localvariable's'referenced before assignment

错误示例:

s = 1

def test():

s += 1

print(s)

test()

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

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

解决方法:

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

八、 AttributeError 属性错误

报错信息:

AttributeError:'tuple'object hasnoattribute'append'

AttributeError: 'DataFrame'object hasnoattribute'col'

错误示例1:

t = (1,2,3)

t.append(4)

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

错误示例2:

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

df.col

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

解决方法:

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

九、 ModuleNotFoundError 模块不存在

报错信息:

ModuleNotFoundError:Nomodule named'pandas'

错误示例1:

import pandasaspd

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

解决方法:

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

十、 FileNotFoundError 文件不存在

报错信息:

FileNotFoundError: File b'E:\test\test_data.csv'doesnotexist

错误示例:

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

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

解决方法:

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

结束语

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

当然了,大家还可以找严小样儿啊!严小样儿特别乐意帮别人的代码找错,排错,然后再告诉你正确之道——点“在看”,右下角↘‘在看’点一下。

【编辑推荐】

【责任编辑:华轩 TEL:(010)68476606】

点赞 0

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

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

相关文章

python谱聚类算法_谱聚类Spectral clustering(SC)

在之前的文章里&#xff0c;介绍了比较传统的K-Means聚类、Affinity Propagation(AP)聚类、比K-Means更快的Mini Batch K-Means聚类以及混合高斯模型Gaussian Mixture Model(GMM)等聚类算法&#xff0c;今天介绍一个比较近代的一类算法——Spectral Clustering 中文通常称为“谱…

LeetCode 1807. 替换字符串中的括号内容(哈希map)

文章目录1. 题目2. 解题1. 题目 给你一个字符串 s &#xff0c;它包含一些括号对&#xff0c;每个括号中包含一个 非空 的键。 比方说&#xff0c;字符串 "(name)is(age)yearsold" 中&#xff0c;有 两个 括号对&#xff0c;分别包含键 “name” 和 “age” 。 你知…

bootice.exe linux 启动盘,下载BOOTICE来把你的U盘做成启动盘

为了方便维护电脑&#xff0c;需要制作一个合适的U盘启动盘。网上制作U盘启动盘的工具也有很多&#xff0c;我下面使用bootice这个U盘启动盘制作工具来制作U盘启动盘。下载BOOTICE1、BOOTICE>分区管理G&#xff0c;对U盘进行格式化&#xff0c;FAT16&#xff0c;卷标设置为G…

数据类型的选择

1、CHAR与VARCHAR CHAR与VARCHAR类型类似&#xff0c;都用来存储字符串。 CHAR&#xff1a;固定长度&#xff0c;处理速度较VARCHAR快&#xff0c;但浪费空间。 VARCHAR&#xff1a;可变长度 1 CHAR(4)和VARCHAR(4)列检索的值并不总相同&#xff0c;CHAR列删除了尾部的空格 2、…

excel打开空白_啥?下载的文件显示“文件已损坏,无法打开”?

推荐文章&#xff1a;Windows10系统的优化工具神器对于一个开发人员的我&#xff0c;这两天在网站做一个导出Excel表格功能&#xff0c;遇到了一个坑。在本地测试导出并且可以打开&#xff0c;但是到了测试环境导出打开却显示“文件已损坏&#xff0c;无法打开”。刚开始以为是…

erp故障处理流程图_PLC故障常见原因及处理方法!

欢迎关注“热控圈 ” ID&#xff1a;rekongquan传播热控知识&#xff0c;分享技术精华&#xff01;第一部分、运行中PLC故障常见原因及处理方法(一)、外围电路元器件故障此类故障在PLC工作一定时间后的故障中经常发生。在PLC控制回路中如果出现元器件损坏故障&#xff0c;PLC控…

LeetCode 1808. 好因子的最大数目(整数拆分,乘积最大)

文章目录1. 题目2. 解题1. 题目 给你一个正整数 primeFactors 。你需要构造一个正整数 n &#xff0c;它满足以下条件&#xff1a; n 质因数&#xff08;质因数需要考虑重复的情况&#xff09;的数目 不超过 primeFactors 个。n 好因子的数目 最大化。 如果 n 的一个因子可以…

请输入星期的第一个字母c语言,C语言经典案例:请输入星期几的第一个字母来判断一下是星期几,...

需求描述&#xff1a;请输出礼拜几的第一个字母来断定一下是礼拜几&#xff0c;假如第一个字母一样&#xff0c;则持续断定第二个字母。C语言案例分析&#xff1a;用情形语句比拟好&#xff0c;假如第一个字母一样&#xff0c;则断定用情形语句或if语句断定第二个字母。实现代码…

实用crontab命令

常用crontab如下&#xff1a; crontab -e 编辑 crontabcrontab -l 显示 crontabcrontab -r 删除 crontabcrontab -v 显示上一次编辑 crontab 的时间&#xff0c;但不是所有系统适用。 编辑crontab在指令模式輸入 "crontab -e" 便会用预设编辑器打开 crontab &#…

安卓apk签名提取工具_Android测试工具入门介绍(二)

今天我们来讲讲一款牛逼的安卓集成工具&#xff1a;就是大名还算顶顶的AndroidKill&#xff1b;先来个软件界面截图&#xff1a;多么简单有华丽的界面啊&#xff01;我说的是功能华丽&#xff0c;该有的功能他都有。首先我们先点开菜单中的Android&#xff0c;配置下APKTOOL管理…

atoi函数_每日一道 LeetCode (50):字符串转换整数 (atoi)

❝每天 3 分钟&#xff0c;走上算法的逆袭之路。❞前文合集每日一道 LeetCode 前文合集代码仓库GitHub&#xff1a;https://github.com/meteor1993/LeetCodeGitee&#xff1a;https://gitee.com/inwsy/LeetCode题目&#xff1a;最长回文子串难度&#xff1a;「中等」题目来源&a…

面向对象4大特性的作用

文章目录1. 封装2. 抽象3. 继承4. 多态学习自 极客时间《设计模式之美》 1. 封装 隐藏保护内部数据&#xff0c;不被随意修改&#xff0c;提高可维护性仅暴露必要的接口&#xff0c;提高易用性 2. 抽象 提高代码可扩展、可维护性&#xff0c;修改不需要改变定义&#xff0c;…

计算机c语言二级试题及答案,计算机c语言二级考试试题及其答案.doc

计算机二级试题一选择题(1)下列叙述中正确的是A)算法的效率只与问题的规模有关&#xff0c;而与数据的存储结构无关B)算法的时间复杂度是指执行算法所需要的计算工作量C)数据的逻辑结构与存储结构是一一对应的D)算法的时间复杂度与空间复杂度一定相关(2)在结构化程序设计中&…

远程连接Kali Linux使用PuTTY实现SSH远程连接

远程连接Kali Linux使用PuTTY实现SSH远程连接 本书主要以在Android设备上安装的Kali Linux操作系统为主&#xff0c;介绍基于Bash Shell渗透测试。由于在默认情况下&#xff0c;在Android设备上安装的Kali操作系统没有安装任何工具。如果直接在手机或平板上安装一些软件时&…

python 百度ocr安装_Python调用百度OCR实现图片文字识别的示例代码

百度AI提供了一天50000次的免费文字识别额度&#xff0c;可以愉快的免费使用&#xff01;下面直接上方法&#xff1a; 首先在百度AI创建一个应用&#xff0c;按照下图创建即可&#xff0c;创建后会获得如下&#xff1a;创建后会获得如下信息&#xff1a; APP_ID ****** API_KE…

哪些代码设计看似是面向对象,实际是面向过程的?

文章目录1. 滥用 getter、setter 方法2. 滥用全局变量、全局方法3. 数据、方法分离学习自 极客时间《设计模式之美》 1. 滥用 getter、setter 方法 违反了封装特性&#xff0c;风格退化为面向过程编程 2. 滥用全局变量、全局方法 Constants 类 所有的常量都放在这个类中&…

vue 图片拖动加载 类似于地图_前端性能优化之图片懒加载(附vue自定义指令)...

作者&#xff1a;lzg9527链接&#xff1a;https://juejin.cn/post/6903774214780616718在类电商类项目&#xff0c;往往存在大量的图片&#xff0c;如 banner 广告图&#xff0c;菜单导航图&#xff0c;美团等商家列表头图等。图片众多以及图片体积过大往往会影响页面加载速度&…

四元数c语言,C + OpenGL四元数

didierc..6对于你的第一个问题,我认为你的意思是"我如何代表",而不是"解释".最简单的方法是使用struct:typedef struct quaternion_t {double x,y,z,w;} quaternion_t;请注意,如上所述,通常的做法也是使用x,y,z和w作为组件名称(但只要您知道哪个是哪个,您的…

POJ-3154-Graveyard

题目&#xff1a;POJ-3154-Graveyard 一个周长为10000的圆圈&#xff0c;一开始等距的安放着N个雕塑&#xff0c;现在想增加M个雕塑&#xff0c;使得雕塑之间还是等距&#xff0c;问坟墓最少移动的距离。 思路&#xff1a;只有n个时设周长为1&#xff0c;则坐标为i/n&#xff0…

vant toast 指定挂载到指定位置_docker卷挂载技术

卷技术&#xff0c;容器内部数据映射到宿主机上一、直接使用命令来挂载docker run -it -v /home/test:/home centos /bin/bash# 在主机上查看 docker运行容器的id [rootlocalhost home]# docker ps CONTAINER ID IMAGE COMMAND CREATED …