常见的 Python 错误及其解决方案

此文整理了一些常见的 Python 错误及其解决方案。

在这里插入图片描述

1、SyntaxError: invalid syntax

说明:无效的语法是最常见的错误之一,通常是由于编写代码时违反了 Python 的语法规则。可能的原因:

  1. 忘记在 ifwhilefor 等语句后写冒号,或者将冒号写成分号或其他符号。解决方案:更改为英文半角冒号。
  2. 代码中可能存在未正确关闭的括号,或者在字符串中使用的引号未正确匹配。解决方案:检查括号,引号处。
  3. 条件表达式中出现等号(=)。解决方案:将其更改为比较运算符(==)。
  4. 定义没有参数的函数时未添加括号。解决方案:添加括号。

查看错误提示信息,通常会指出出错的行数和位置。合适的代码编辑器也会在代码中标记出语法错误。

2、Syntax Error: non-default argument follows default argument

说明:定义的参数顺序不正确。可能的情况:

默认值参数未放在所有参数的末尾。解决方案:更改参数的顺序。

3、SyntaxError : invalid character in identifier

说明:标识符中存在无效字符,通常是由于在标识符(变量名、函数名、类名等)中使用了无效的字符引起的。在 Python 中,标识符必须遵循一定的命名规则,不能包含特殊字符或空格,只能包含字母、数字和下划线,并且必须以字母(或者下划线 _)开头。可能的原因:

  1. 标识符中包含了不被 Python 认可的特殊字符,如 @#$% 等。
  2. 标识符中包含空格或制表符。
  3. 标识符以数字开头。
  4. 标识符与 Python 的保留字或关键字冲突。

4、TypeError: can only concatenate str (not “XXX”) to str

说明:只能将字符串与其他字符串连接起来。可能的原因:

尝试将字符串与非字符串数据类型(如整数、浮点数、布尔值或序列对象)连接起来。解决方案:在连接之前使用 str() 函数转换数据类型。

5、TypeError: f() takes exactly 2 arguments (1 given)

说明:向函数提供的参数不足。可能的原因:

定义具有两个参数的函数,但在调用时仅提供一个参数。解决方案:提供缺少的参数以完成函数调用。

6、TypeError: ‘tuple’ object does not support item assignment

说明:无法修改元组元素。可能的原因:

尝试通过索引修改元组元素。解决方案:将元组转换为列表或移除修改操作。

7、ValueError: could not convert string to float:‘12.2s’

说明:无法将字符串转换为浮点数。可能的原因:
float() 函数接受了非浮点字符串数据类型。解决方案:修改为浮点字符串。

8、ValueError: invalid literal for int() with base 10

说明:向 int() 函数传递的参数无效。可能的原因:

  1. 字符串中包含了非数字字符。解决方案:确保字符串中只包含数字字符。可以使用 str.isdigit() 方法来检查字符串是否只包含数字字符。
  2. 尝试将包含小数点的字符串转换为整数。解决方案:如果字符串可能包含浮点数,使用 float() 函数将其转换为浮点数,然后再将其转换为整数。
  3. 过大或过小的数字:尝试将超出整数表示范围的数字字符串转换为整数。解决方案:数字太大或太小以至于超出了 Python 的整数表示范围,使用 float() 或其他数据类型来处理超大数值。

9、ValueError: substring not found

说明:在尝试查找一个子字符串时,该子字符串未在目标字符串中找到。这个错误可能会在使用字符串的 index()find()rfind() 等方法时触发。解决方案:搜索前检查。

10、ZeroDivisionError: division by zero

说明:0 不能用作除数。可能的原因:执行除法、整除或取余运算时,使用 0 作为除数。解决方案:在进行除法操作之前,检查除数是否为零;使用条件语句避免除以零的情况发生。

11、AttribteError: ‘module’ object has no attribute xxx’

说明:模块没有相关属性。可能的原因:

  1. 拼写错误:尝试访问的属性或方法名的拼写不正确。解决方案:检查拼写,确保使用正确的属性或方法名。
  2. 命名 .py 文件时使用 Python 保留字或与模块名称相同。解决方案:修改文件名
  3. 模块重命名:如果导入了一个模块并使用了别名,那么需要使用别名来访问模块的属性或方法。解决方案:使用正确的别名来访问属性或方法。

12、AttributeError: ‘Obj’ object has no attribute ‘attr’

说明:对象没有相关属性。可能的原因:

  1. 拼写错误:您尝试访问的属性或方法名的拼写不正确。解决方案:检查拼写,确保使用正确的属性或方法名。
  2. 如果属性或方法是私有的(以双下划线 __ 开头),则不能直接访问。解决方案:如果要访问私有属性或方法,可以使用单下划线 _ 或通过类的方法进行访问。
  3. 对象类型错误:有时,可能在一个对象上调用应该是类的方法,或者尝试在一个非对象上调用对象方法。解决方案:确保按照正确的方式使用对象方法和类方法。对象方法需要在对象上调用,而类方法需要在类上调用

13、FileExistsError: [Errmo 17] File exists

说明:该文件已存在。解决方案:首先检查文件是否存在,如果存在,请不要再次创建它。

14、FileNotFoundError: [Ermo 2] No such file or directory

说明:请求的文件或目录不存在。解决方案:检查文件或目录的路径是否正确

15、IndentationError: expected an indented block

说明:需要缩进块。可能的原因:

  1. 在定义函数或类时没有缩进。 解决方案:添加缩进
  2. ifforwhile 语句的结构下没有缩进。解决方案:添加缩进

16、IndentationError: unexpected indent

说明:缩进错误。可能的原因:除了缩进之外,代码前面还会出现额外的空格。解决方案:删除多余的空格。

17、IndentationError: unindent does not match any outer indentation level

说明:缩进问题。可能的原因:

  1. 同一级别的代码块使用不同的缩进规则(代码未对齐)。解决方案:调整缩进。
  2. 有非法字符或其他格式的不可见内容。解决方案:删除非法字符。

18、IndexError: list index out of range

说明:列表索引超出范围,可能的原因:

  1. 获取元素时指定的索引值超过列表的长度。解决方案:修改索引值
  2. 列表为空,获取元素时出错。解决方案:在获取之前检查它是否不为空。

19、DirectoryError: [Ermo 21] Is a directory

说明:尝试对文件进行操作但提供了目录。可能的原因:将目录作为文件进行操作,例如,如果 “test” 是一个目录,则使用 os.remove(test) 将导致错误。解决方案:添加相应的文件名

20、KeyError: ‘age’

说明:键错误。可能的原因:

  1. 基于键获取字典的值时,指定的键不存在。解决方案:修改为已有的键。
  2. 删除了不存在的键。解决方案:在删除之前检查它是否存在。

21、ModuleNotFoundError: No module named‘pymysql’

说明:模块不存在。可能的原因:

  1. 模块名称拼写错误。解决方案:更正拼写
  2. 模块未导入。解决方案:使用 import 语句导入模块。
  3. 环境问题:有时,虽然已经安装了模块,但在运行代码的环境中找不到它。这可能是因为正在使用的环境中未安装。解决方案:确保在虚拟环境中安装了所使用的模块。
  4. 某些模块可能不支持使用的 Python 版本。解决方案:确保所用 Python 版本与导入模块兼容。查看模块文档以了解它所支持的 Python 版本。

22、NameError:name test’ is not defined

说明:在代码中尝试使用一个未定义或不存在的变量或名称(‘test’),或者在当前的作用域内无法找到该名称。可能的原因:

  1. 变量或名称未定义。解决方案:在使用之前,定义变量或名称。
  2. 变量可能在不同的作用域内定义(例如函数内部或条件块内部),而试图在该作用域之外访问它。解决方案:如果需要在函数外部或不同的作用域内使用变量,在全局作用域内定义它。

23、RecursionEror:maximum rcusion depth exceded in comprison

说明:超出最大递归深度。解决方案:禁止无限递归,设置递归深度。

24、Timeout error [WinError 10060] No response or response from host after a period of time. Connection attempt failed.

说明:连接超时。可能的原因:

  1. 数据库连接超时。解决方案:检查数据库连接配置信息是否正确。
  2. 请求网址超时。解决方案:检查 URL 是否正确且可以访问。
  3. 连接到 FTP 服务器超时。解决方案:检查用于连接到 FTP 的参数是否正确。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

我和 TiDB 的故事 | 远近高低各不同

作者: ShawnYan 原文来源: https://tidb.net/blog/b41a02e6 Hi, TiDB, Again! 书接上回, 《我和 TiDB 的故事 | 横看成岭侧成峰》 ,一年时光如白驹过隙,这一年我好似在 TiDB 上投入的时间总量不是很多&#xff0…

vite打包配置以及性能优化

vite打包配置以及性能优化 安装插件 首先该安装的插件,你要安装一下吧 这三个是基本的插件,其他优化的插件下面会介绍到 "vite": "4.4.6","vite-plugin-html": "^3.2.0","vitejs/plugin-vue": &qu…

Eureka:集群环境配置

创建三个集群 导包 <!-- 导包--><dependencies><!-- Eureka -server --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-eureka-server</artifactId><version>1.…

信号

信号也是IPC中的一种&#xff0c;是和管道&#xff0c;消息队列&#xff0c;共享内存并列的概念。 本文参考&#xff1a; Linux中的信号_linux中信号_wolf鬼刀的博客-CSDN博客 Linux系统编程&#xff08;信号处理 sigacation函数和sigqueue函数 )_花落已飘的博客-CSDN博客 Linu…

回归预测 | MATLAB实现SA-SVM模拟退火算法优化支持向量机多输入单输出回归预测(多指标,多图)

回归预测 | MATLAB实现SA-SVM模拟退火算法优化支持向量机多输入单输出回归预测&#xff08;多指标&#xff0c;多图&#xff09; 目录 回归预测 | MATLAB实现SA-SVM模拟退火算法优化支持向量机多输入单输出回归预测&#xff08;多指标&#xff0c;多图&#xff09;效果一览基本…

Scratch 之 RPG 引擎制作教程(1) / 地图行走

大家好&#xff0c;又和大家见面了&#xff0c;那么我们这期讲的就是RPG游戏的地图以及人物的行走。 我发现大家并不是很懂RPG游戏引擎&#xff0c;也就是说这种引擎对于技术的要求还是比较高的。为了让更多人直接上手制作RPG游戏&#xff0c;我打算开启这一系列教程。 这个教程…

Azure应用程序网关

文章目录 什么是应用程序网关实战演练创建虚拟网络创建虚拟机创建应用程序网关测试搭建结果 什么是应用程序网关 Azure应用程序网关是一种托管服务&#xff0c;用于提供安全、可缩放的 Web 应用程序前端点的应用程序传送控制和保护。它可以通过 SSL 终止、cookie 基于会话持久…

Cesium加载Supermap的wmts服务

最近使用cesium 加载supermap的wmts 服务&#xff0c;多次遇到加载异常与白页面问题&#xff0c;纠结好久最后才搞定[特此记录] 1、首先找到方法加载wmts 的api 文档 官方提示使用WebMapTileServiceImageryProvider加载wmts 2、然后编辑加载代码 //1.新建ImageryProviderlet…

【rust/egui】(三)看看template的app.rs:序列化、持久化存储

说在前面 rust新手&#xff0c;egui没啥找到啥教程&#xff0c;这里自己记录下学习过程环境&#xff1a;windows11 22H2rust版本&#xff1a;rustc 1.71.1egui版本&#xff1a;0.22.0eframe版本&#xff1a;0.22.0上一篇&#xff1a;这里 serde app.rs中首先定义了我们的Templ…

Three.js程序化3D城市建模【OpenStreetMap】

对于我在 Howest 的研究项目&#xff0c;我决定构建一个 3D 版本的 Lucas Bebber 的“交互式讲故事的动画地图路径”项目。 我将使用 OSM 中的矢量轮廓来挤出建筑物的形状并将它们添加到 3js 场景中&#xff0c;随后我将对其进行动画处理 推荐&#xff1a;用 NSDT编辑器 快速搭…

ARM-M0内核MCU,内置24bit ADC,采样率4KSPS,传感器、电子秤、体脂秤专用,国产IC

ARM-M0内核MCU 内置24bit ADC &#xff0c;采样率4KSPS flash 64KB&#xff0c;SRAM 32KB 适用于传感器&#xff0c;电子秤&#xff0c;体脂秤等等

08 - 网络通信优化之IO模型:如何解决高并发下IO瓶颈?

提到 Java I/O&#xff0c;相信你一定不陌生。你可能使用 I/O 操作读写文件&#xff0c;也可能使用它实现 Socket 的信息传输…这些都是我们在系统中最常遇到的和 I/O 有关的操作。 我们都知道&#xff0c;I/O 的速度要比内存速度慢&#xff0c;尤其是在现在这个大数据时代背景…

postgresql 的递归查询

postgresql 的递归查询功能很强大&#xff0c;可以实现传统 sql 无法实现的事情。那递归查询的执行逻辑是什么呢&#xff1f;在递归查询中&#xff0c;我们一般会用到 union 或者 union all&#xff0c;他们两者之间的区别是什么呢&#xff1f; 递归查询的执行逻辑 递归查询的…

leetcode中常用的 C++函数和 STL容器

C函数和 STL容器 输入输出C排序sortC翻转字符串reverseC截取字符串strsub哈希表的使用定义查询哈希表里是否有该key在哈希表里存放键值链式哈希 哈希集合定义一个哈希集合查找一个字符是否在set里面删除和添加 优先队列 最大堆优先队列的大顶堆定义方式插入存储数组对定义插入 …

idea使用docker生成镜像(打包镜像,导入镜像,导出镜像)

1&#xff1a;先下载安装dockerdesktop&#xff0c;安装成功后 2&#xff1a; 在cmd执行docker -v&#xff0c;查看安装的docker版本 C:\Users\dell>docker -v Docker version 24.0.5, build ced09963&#xff1a;需要启动 dockerdesktop应用&#xff0c;才算启动docker&a…

⛳ TCP 协议详解

目录 ⛳ TCP 协议详解&#x1f3a8; 一、TCP / IP 协议的分层模型&#x1f3d3; 1.1、应用层&#x1f9f8; 1.2、传输层&#x1f52e; 1.3、网络层&#x1f3af; 1.4、链路层 &#x1f3ed; 二、HTTP 报文传输原理&#x1f945; 2.1、HTTP 报文传输&#x1f48e; 2.2、封装和分…

计算机网络-物理层(三)编码与调制

计算机网络-物理层&#xff08;三&#xff09;编码与调制 在计算机网络中&#xff0c;计算机需要处理和传输用户的文字、图片、音频和视频&#xff0c;它们可以统称为消息 数据是运输信息的实体&#xff0c;计算机只能处理二进制数据&#xff0c;也就是比特0和比特1。计算机中…

aardio开发语言Excel数据表读取修改保存实例练习

import win.ui; /*DSG{{*/ var winform win.form(text"aardio form";right759;bottom479) winform.add( buttonEnd{cls"button";text"末页";left572;top442;right643;bottom473;z6}; buttonExcelRead{cls"button";text"读取Exce…

用 VB.net,VBA 两种方式 读取单元格内的 换行数据,并出力到 CSV文件

用 VB.net&#xff0c;VBA 两种方式 读取单元格内的 换行数据&#xff0c;并出力到 CSV文件 需求 如下图所示&#xff0c;为了生成csv文件导入数据库&#xff0c;需要将下图 的 1 和 2 拼接成 如下 3 所示的一行数据&#xff0c; 开头为 1 &#xff0c;往后为 2 的换行数据 将换…

中国大学生服务外包创新创业大赛丨借 AI 之力,助“记账”难题

一、中国大学生服务外包创新创业大赛 赛事介绍 中国大学生服务外包创新创业大赛&#xff0c;是响应国家关于鼓励服务外包产业发展、加强服务外包人才培养的相关战略举措与号召&#xff0c;举办的每年一届的全国性竞赛。 大赛均由中华人民共和国教育部、中华人民共和国商务部…
最新文章