Python 小高考篇(6)常见错误及排查
目录
- TypeError
- 拼接字符串和数字
- 错误示范
- 正确示范
- 数字、字符串当成函数
- 错误示范
- 给函数传入未被定义过的参数
- 错误示范
- 传入的参数个数不正确
- 错误示范
- 字符串相乘
- 错误示范
- 正确示范
- 量取整数的长度
- 错误示范
- 正确示范
- 格式化字符串时占位符个数不正确
- 错误示范
- 给复数比较大小
- 错误示范
- 正确示范
- ValueError
- 将含有非数字的字符串转换为整数
- 错误示范
- 拆分时数据个数和变量个数不同
- 正确示范
- NameError
- 读取未被定义过的变量
- 错误示范
- 正确示范
- AttributeError
- 拆分一个数字
- 错误示范
- ZeroDivisionError
- 除数为0
- 错误示范
- 正确示范
- ModuleNotFoundError
- 导入不存在的模块
- 错误示范
- SyntaxError
- 位置参数后面放了关键词参数后面
- 错误示范
- 正确示范
- 混用单双引号
- 错误示范
- 正确示范
- 缩进错误
- 错误示范
- 没有if直接elif或else
- 错误示范
- 无效字符
- 错误示范
- while、if、elif、else、for里面缺少内容
- 错误示范
- 正确示范
- while、if、elif、else、for语句后面没有冒号
- 错误示范
- 结尾
本文由Jzwalliser原创,发布在CSDN平台上,遵循CC 4.0 BY-SA协议。
因此,若需转载/引用本文,请注明作者并附原文链接,且禁止删除/修改本段文字。
违者必究,谢谢配合。
个人主页:blog.csdn.net/jzwalliser
TypeError
拼接字符串和数字
input()
后获得的值是str
类型的,因此常常需要将其转化为相应的类型(如整数)再进行操作。
错误示范
>>> "2" + 1
Traceback (most recent call last):File "<stdin>", line 1, in <module>
TypeError: can only concatenate str (not "int") to str
正确示范
字符串和数字是无法相加的。
修改:要么把字符串转化为整数再相加,要么将整数转化为字符串后拼接。
>>> int("2") + 1
3
>>> "2" + str(1)
'21'
数字、字符串当成函数
数字和字符串它不是一个函数,所以它不能被调用。
错误示范
>>> num = 12
>>> num()
Traceback (most recent call last):File "<stdin>", line 1, in <module>
TypeError: 'int' object is not callable
>>> string = "string"
>>> string()
Traceback (most recent call last):File "<stdin>", line 1, in <module>
TypeError: 'str' object is not callable
给函数传入未被定义过的参数
提前搞清楚函数有哪些参数,以及参数个数,否则很容易犯这类错。
错误示范
>>> print("Hello",set="")
Traceback (most recent call last):File "<stdin>", line 1, in <module>
TypeError: 'set' is an invalid keyword argument for print()
>>> int('12',dec=16)
Traceback (most recent call last):File "<stdin>", line 1, in <module>
TypeError: 'dec' is an invalid keyword argument for int()
>>> def hi(arg):
... print(arg,"hi")
...
>>> hi(arg1=114)
Traceback (most recent call last):File "<stdin>", line 1, in <module>
TypeError: hi() got an unexpected keyword argument 'arg1'
传入的参数个数不正确
提前搞清楚函数有哪些参数,以及参数个数,否则很容易犯这类错。
错误示范
>>> def hello():
... print("Hello")
...
>>> hello(1)
Traceback (most recent call last):File "<stdin>", line 1, in <module>
TypeError: hello() takes 0 positional arguments but 1 was given
字符串相乘
字符串直接无法相乘。只有字符串和整数相乘,或者整数相乘。这种错误常常是因为在输入之后没有将输入的内容转化成整数导致的。
错误示范
>>> "12" * "12"
Traceback (most recent call last):File "<stdin>", line 1, in <module>
TypeError: can't multiply sequence by non-int of type 'str'
正确示范
将需要的数据转换为整数即可。
>>> 12 * 12
144
>>> 12 * "12"
'121212121212121212121212'
>>> "12" * 12
'121212121212121212121212'
量取整数的长度
整数类型无法通过len()
函数获取其位数。
错误示范
>>> len(123)
Traceback (most recent call last):File "<stdin>", line 1, in <module>
TypeError: object of type 'int' has no len()
正确示范
只需将需要计算位数的数字变成字符串,然后再用len()
函数度量其长度。
>>> len(str(123))
3
格式化字符串时占位符个数不正确
格式化字符串时占位符个数不正确,即可引发次错误。
错误示范
>>> "%s" % (5,6)
Traceback (most recent call last):File "<stdin>", line 1, in <module>
TypeError: not all arguments converted during string formatting
给复数比较大小
先说一下,再python中,因为某些原因,虚数单位不是i,而是j。而再数学中,我们学过虚数只能判断其是否相等,而不能判断谁大谁小。
错误示范
>>> 1+1j > 2+3j
Traceback (most recent call last):File "<stdin>", line 1, in <module>
TypeError: '>' not supported between instances of 'complex' and 'complex'
正确示范
只能判断复数是否相等。
>>> 1+1j == 2+3j
False
>>> 2+4j == 2+4j
True
ValueError
将含有非数字的字符串转换为整数
当字符串内包含非数字时,其无法转化为整数。
错误示范
>>> int("ab")
Traceback (most recent call last):File "<stdin>", line 1, in <module>
ValueError: invalid literal for int() with base 10: 'ab'
拆分时数据个数和变量个数不同
当一个链表或元组中的数据个数和分配给的变量个数不同时,将会出现此错误。经常是在a,b = input().split()
之后出现错误,因为没有搞清楚到底有几个数据。
>>> a,b = (1,2,3)
Traceback (most recent call last):File "<stdin>", line 1, in <module>
ValueError: too many values to unpack (expected 2)
>>> a,b,c = (1,2)
Traceback (most recent call last):File "<stdin>", line 1, in <module>
ValueError: not enough values to unpack (expected 3, got 2)
正确示范
使链表或元组中的数据个数和分配给的变量个数相匹配即可。
>>> a,b,c = (1,2,3)
NameError
读取未被定义过的变量
若在一个变量定义之前就去读其它,则会出现此错误。
错误示范
>>> print(a)
Traceback (most recent call last):File "<stdin>", line 1, in <module>
NameError: name 'a' is not defined
正确示范
>>> a = 114514
>>> print(a)
114514
AttributeError
拆分一个数字
只有str
可以拆分,数字无法被split。
错误示范
>>> num = 12
>>> num.split()
Traceback (most recent call last):File "<stdin>", line 1, in <module>
AttributeError: 'int' object has no attribute 'split'
ZeroDivisionError
除数为0
在数学上我们也学过,除数作为0是无意义的。所以在python中这种计算会导致错误。经常实在for i in range
时候,由于没有考虑i
的范围而导致的错误。
错误示范
>>> 5 / 0
Traceback (most recent call last):File "<stdin>", line 1, in <module>
ZeroDivisionError: division by zero
>>> for i in range(5):
... print(5 / i)
...
Traceback (most recent call last):File "<stdin>", line 2, in <module>
ZeroDivisionError: division by zero
正确示范
注意不要出现除数为0。
>>> for i in range(1,5):
... print(5 / i)
...
5.0
2.5
1.6666666666666667
1.25
ModuleNotFoundError
导入不存在的模块
如果导入模块时模块不存在,则可能模块名搞错了。看看有没有拼写错误,比如把“math
”打成“nath
”之类。
错误示范
>>> import unknownmodule
Traceback (most recent call last):File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named 'unknownmodule'
SyntaxError
位置参数后面放了关键词参数后面
有的函数我们喜欢用关键词参数传入数据,有的则喜欢用位置参数。先看一眼这两种参数到底是什么:
def func(arg1,arg2,arg3):print(arg1,arg2,arg3)
func(1,2,3)
func(arg1=1,arg2=2,arg3=3)
func(arg2=2,arg1=1,arg3=3)
func(1,2,arg3=3)
第3行就是用的位置参数传入的数据,像这样python会按照参数的位置一一对应给到各个变量(准确来说应该叫形参):1赋值给arg1
,2赋值给arg2
,3赋值给arg3
。第4、5行用的就是关键词参数,好处就是参数位置即使是乱的,依然可以把对应内容给到正确的形参(尤其是第5行)。第6行则是混合用法,前面按照位置匹配给对应的形参(1赋值给arg1
,2赋值给arg2
),后面按照关键词将3赋值给arg3
。但是,位置参数必须放在前面,关键词参数必须放在后面,否则会引起混乱,python就不知道某个数据该赋值给哪个形参,就像下面的例子。
错误示范
>>> print(1,2,3,sep="",4)File "<stdin>", line 1print(1,2,3,sep="",4)^
SyntaxError: positional argument follows keyword argument
正确示范
把关键词参数放到后面。
>>> print(1,2,3,4,sep="")
1234
混用单双引号
单、双引号不能混用,否则会引起错乱。
错误示范
>>> 'string"File "<stdin>", line 1'string"^
SyntaxError: unterminated string literal (detected at line 1)
>>> "string'File "<stdin>", line 1"string'^
SyntaxError: unterminated string literal (detected at line 1)
正确示范
单双引号必须匹配。
>>> "string"
'string'
>>> 'string'
'string'
缩进错误
缩进的空格个数不能乱。
错误示范
for i in range(10):print(i) #前面4个空格print(i) #前面5个空格
抛出错误:
Traceback (most recent call last):File "/data/user/0/ru.iiec.pydroid3/files/accomp_files/iiec_run/iiec_run.py", line 31, in <module>start(fakepyfile,mainpyfile)File "/data/user/0/ru.iiec.pydroid3/files/accomp_files/iiec_run/iiec_run.py", line 30, in startexec(open(mainpyfile).read(), __main__.__dict__)File "<string>", line 3print(i) #前面5个空格
IndentationError: unexpected indent
没有if直接elif或else
在没有if
打头的情况下,一般不可以出现else
或elif
。
错误示范
>>> a = 0
>>> elif a == 0:File "<stdin>", line 1elif a == 0:^^^^
SyntaxError: invalid syntax
无效字符
当代码中出现一些乱七八糟的字符时,就会出现这种错误。
错误示范
>>> 5!File "<stdin>", line 15!^
SyntaxError: invalid syntax
while、if、elif、else、for里面缺少内容
在while
、if
、elif
、else
、for
里面必须要有一些语句。如果还没想好要写什么,可以先用pass留空,如正确示范那样。
错误示范
>>> while True:
...File "<stdin>", line 2^
IndentationError: expected an indented block after 'while' statement on line 1
正确示范
可以用pass留空。
>>> while True:
... pass
...
while、if、elif、else、for语句后面没有冒号
while
、if
、elif
、else
、for
后面需要有冒号。
错误示范
>>> while TrueFile "<stdin>", line 1while True^
SyntaxError: expected ':'
结尾
好啦,今天就讲到这里了,记得一键三连哦!(˃ ⌑ ˂ഃ )
相关文章:
Python 小高考篇(6)常见错误及排查
目录 TypeError拼接字符串和数字错误示范正确示范 数字、字符串当成函数错误示范 给函数传入未被定义过的参数错误示范 传入的参数个数不正确错误示范 字符串相乘错误示范正确示范 量取整数的长度错误示范正确示范 格式化字符串时占位符个数不正确错误示范 给复数比较大小错误示…...

k8s上部署redis高可用集群
介绍: Redis Cluster通过分片(sharding)来实现数据的分布式存储,每个master节点都负责一部分数据槽(slot)。 当一个master节点出现故障时,Redis Cluster能够自动将故障节点的数据槽转移到其他健…...

C++的类和对象
在C中,类(class)和对象(object)是面向对象编程(OOP)的核心概念。以下是它们的详细介绍: 1. 类(Class) 定义: 类是用来定义一个新的数据类型&…...

自动驾驶系列—深入解析自动驾驶车联网技术及其应用场景
🌟🌟 欢迎来到我的技术小筑,一个专为技术探索者打造的交流空间。在这里,我们不仅分享代码的智慧,还探讨技术的深度与广度。无论您是资深开发者还是技术新手,这里都有一片属于您的天空。让我们在知识的海洋中…...

机器学习(1)
一、机器学习 机器学习(Machine Learning, ML)是人工智能(Artificial Intelligence, AI)的一个分支,它致力于开发能够从数据中学习并改进性能的算法和模型。机器学习的核心思想是通过数据和经验自动优化算法ÿ…...

深入理解 Redis跳跃表 Skip List 原理|图解查询、插入
1. 简介 跳跃表 ( skip list ) 是一种有序数据结构,通过在每个节点中维持多个指向其他节点的指针,从而达到快速访问节点的目的。 在 Redis 中,跳跃表是有序集合键的底层实现之一,那么这篇文章我们就来讲讲跳跃表的实现原理。 2. …...
Halcon HImage 与 Qt QImage 的相互转换(修订版)
很久以前,我写过一遍文章来介绍 HImage 和 QImage 之间的转换方法。(https://blog.csdn.net/liyuanbhu/article/details/91356988) 这个代码其实是有些问题的。因为我们知道 QImage 中的图像数据不一定是连续的,尤其是图像的宽度…...

【Golang】——Gin 框架中的模板渲染详解
Gin 框架支持动态网页开发,能够通过模板渲染结合数据生成动态页面。在这篇文章中,我们将一步步学习如何在 Gin 框架中配置模板、渲染动态数据,并结合静态资源文件创建一个功能完整的动态网站。 文章目录 1. 什么是模板渲染?1.1 概…...

CSS:导航栏三角箭头
用CSS实现导航流程图的样式。可根据自己的需求进行修改,代码精略的写了一下。 注:场景一和场景二在分辨率比较低的情况下会有一个1px的缝隙不太优雅,自行处理。有个方法是直接在每个外面包一个DIV,用动态样式设置底色。 场景一、…...
onlyoffice Command service(命令服务)使用示例
一、说明 文档在这里:https://api.onlyoffice.com/docs/docs-api/additional-api/command-service/ 命令服务提供有几个简单的接口封装。也提供了前端和后端同时操作文档的可能。 二、正文 命令服务地址:https://documentserver/coauthoring/Com…...

QSS 设置bug
问题描述: 在QWidget上add 一个QLabel,但是死活不生效 原因: c 主程序如下: QWidget* LOGO new QWidget(logo_wnd);LOGO->setFixedSize(logo_width, 41);LOGO->setObjectName("TittltLogo");QVBoxLayout* tit…...

交换排序——快速排序
交换排序——快速排序 7.7 交换排序——快速排序快速排序概念c语言的库函数qsort快速排序框架quickSort 7.7 交换排序——快速排序 快速排序概念 快速排序是Hoare于1962年提出的一种二叉树结构的交换排序方法(下文简称快排),其基本思想为&a…...

nodejs入门(1):nodejs的前后端分离
一、引言 我关注nodejs还是从前几年做了的一个电力大数据展示系统开始的,当然,我肯定是很多年的计算机基础的,万变不离其宗。 现在web网站都流行所谓的前后端结构,不知不觉我也开始受到这个影响,以前都是前端直接操作…...

笔记|M芯片MAC (arm64) docker上使用 export / import / commit 构建amd64镜像
很简单的起因,我的东西最终需要跑在amd64上,但是因为mac的架构师arm64,所以直接构建好的代码是没办法跨平台运行的。直接在arm64上pull下来的docker镜像也都是arm64架构。 检查镜像架构: docker inspect 8135f475e221 | grep Arc…...
gorm框架
连接 需要下载mysql的驱动 go get gorm.io/driver/mysql go get gorm.io/gorm 约定 主键:GORM 使用一个名为ID 的字段作为每个模型的默认主键。表名:默认情况下,GORM 将结构体名称转换为 snake_case 并为表名加上复数形式。 例如…...

免费送源码:Java+Springboot+MySQL Springboot多租户博客网站的设计 计算机毕业设计原创定制
Springboot多租户博客网站的设计 摘 要 博客网站是当今网络的热点,博客技术的出现使得每个人可以零成本、零维护地创建自己的网络媒体,Blog站点所形成的网状结构促成了不同于以往社区的Blog文化,Blog技术缔造了“博客”文化。本文课题研究的“…...

【ASR技术】WhisperX安装使用
介绍 WhisperX 是一个开源的自动语音识别(ASR)项目,由 m-bain 开发。该项目基于 OpenAI 的 Whisper 模型,通过引入批量推理、强制音素对齐和语音活动检测等技术。提供快速自动语音识别(large-v2 为 70 倍实时…...

【计算机网络】协议定制
一、结构化数据传输流程 这里涉及协议定制、序列化/反序列化的知识 对于序列化和反序列化,有现成的解决方案:①json ②probuff ③xml 二、理解发送接收函数 我们调用的所有发送/接收函数,根本就不是把数据发送到网络中!本质都是…...
【SQL】mysql常用命令
为方便查询,特整理MySQL常用命令。 约定:$后为Shell环境命令,>后为MySQL命令。 1 常用命令 第一步,连接数据库。 $ mysql -u root -p # 进入MySQL bin目录后执行,回车后输入密码连接。# 常用参数&…...

阿里云引领智算集群网络架构的新一轮变革
阿里云引领智算集群网络架构的新一轮变革 云布道师 11 月 8 日~ 10 日在江苏张家港召开的 CCF ChinaNet(即中国网络大会)上,众多院士、教授和业界技术领袖齐聚一堂,畅谈网络未来的发展方向,聚焦智算集群网络的创新变…...
Ubuntu系统下交叉编译openssl
一、参考资料 OpenSSL&&libcurl库的交叉编译 - hesetone - 博客园 二、准备工作 1. 编译环境 宿主机:Ubuntu 20.04.6 LTSHost:ARM32位交叉编译器:arm-linux-gnueabihf-gcc-11.1.0 2. 设置交叉编译工具链 在交叉编译之前&#x…...
ssc377d修改flash分区大小
1、flash的分区默认分配16M、 / # df -h Filesystem Size Used Available Use% Mounted on /dev/root 1.9M 1.9M 0 100% / /dev/mtdblock4 3.0M...
OkHttp 中实现断点续传 demo
在 OkHttp 中实现断点续传主要通过以下步骤完成,核心是利用 HTTP 协议的 Range 请求头指定下载范围: 实现原理 Range 请求头:向服务器请求文件的特定字节范围(如 Range: bytes1024-) 本地文件记录:保存已…...

Ascend NPU上适配Step-Audio模型
1 概述 1.1 简述 Step-Audio 是业界首个集语音理解与生成控制一体化的产品级开源实时语音对话系统,支持多语言对话(如 中文,英文,日语),语音情感(如 开心,悲伤)&#x…...

【OSG学习笔记】Day 16: 骨骼动画与蒙皮(osgAnimation)
骨骼动画基础 骨骼动画是 3D 计算机图形中常用的技术,它通过以下两个主要组件实现角色动画。 骨骼系统 (Skeleton):由层级结构的骨头组成,类似于人体骨骼蒙皮 (Mesh Skinning):将模型网格顶点绑定到骨骼上,使骨骼移动…...

Unity | AmplifyShaderEditor插件基础(第七集:平面波动shader)
目录 一、👋🏻前言 二、😈sinx波动的基本原理 三、😈波动起来 1.sinx节点介绍 2.vertexPosition 3.集成Vector3 a.节点Append b.连起来 4.波动起来 a.波动的原理 b.时间节点 c.sinx的处理 四、🌊波动优化…...
今日学习:Spring线程池|并发修改异常|链路丢失|登录续期|VIP过期策略|数值类缓存
文章目录 优雅版线程池ThreadPoolTaskExecutor和ThreadPoolTaskExecutor的装饰器并发修改异常并发修改异常简介实现机制设计原因及意义 使用线程池造成的链路丢失问题线程池导致的链路丢失问题发生原因 常见解决方法更好的解决方法设计精妙之处 登录续期登录续期常见实现方式特…...

Docker 本地安装 mysql 数据库
Docker: Accelerated Container Application Development 下载对应操作系统版本的 docker ;并安装。 基础操作不再赘述。 打开 macOS 终端,开始 docker 安装mysql之旅 第一步 docker search mysql 》〉docker search mysql NAME DE…...

LLMs 系列实操科普(1)
写在前面: 本期内容我们继续 Andrej Karpathy 的《How I use LLMs》讲座内容,原视频时长 ~130 分钟,以实操演示主流的一些 LLMs 的使用,由于涉及到实操,实际上并不适合以文字整理,但还是决定尽量整理一份笔…...
面试高频问题
文章目录 🚀 消息队列核心技术揭秘:从入门到秒杀面试官1️⃣ Kafka为何能"吞云吐雾"?性能背后的秘密1.1 顺序写入与零拷贝:性能的双引擎1.2 分区并行:数据的"八车道高速公路"1.3 页缓存与批量处理…...