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(即中国网络大会)上,众多院士、教授和业界技术领袖齐聚一堂,畅谈网络未来的发展方向,聚焦智算集群网络的创新变…...
几何合理的分片段感知的3D分子生成 FragGen - 评测
FragGen 来源于 2024 年 3 月 25 日 预印本的文章,文章题目是 Deep Geometry Handling and Fragment-wise Molecular 3D Graph Generation, 作者是 Odin Zhang,侯廷军,浙江大学药学院。FragGen 是一个基于分子片段的 3D 分子生成模…...
Python爬虫下载新闻,Flask展现新闻(2)
上篇讲了用Python从新闻网站上下载新闻,本篇讲用Flask展现新闻。关于Flask安装网上好多教程,不赘述。下面主要讲 HTML-Flask-数据 的关系。 简洁版 如图,页面简单,主要显示新闻标题。 分页,使用最简单的分页技术&…...
监控易监测对象及指标之:全面监控华为FusionInsight服务
随着大数据技术的广泛应用,华为FusionInsight以其卓越的性能和稳定性,成为了众多企业处理和分析海量数据的首选平台。然而,为了确保FusionInsight服务的持续稳定运行,对其进行全面监控至关重要。本文基于监控易工具,对…...
SQL面试题——蚂蚁SQL面试题 会话分组问题
会话分组问题 这里的分组不是简单的分组,而是会话的分组。 比如说,进入一个网站以后,可以连续的点击很多个页面,后台会记录用户的行为日志; 如果T日上午连续点击几个页面后退出了网站,直到第二天的下午才再次进入网站,单单从时间线上来看,昨天退出的那条日志跟今天进…...
nfs服务器--RHCE
一,简介 NFS(Network File System,网络文件系统)是FreeBSD支持的文件系统中的一种,它允许网络中的计 算机(不同的计算机、不同的操作系统)之间通过TCP/IP网络共享资源,主要在unix系…...
React--》如何高效管理前端环境变量:开发与生产环境配置详解
在前端开发中,如何让项目在不同环境下表现得更为灵活与高效,是每个开发者必须面对的挑战,从开发阶段的调试到生产环境的优化,环境变量配置无疑是其中的关键。 env配置文件:通常用于管理项目的环境变量,环境…...
Javascript高级—函数柯西化
函数柯西化(经典面试题) // 实现一个add方法,使计算结果能够满足如下预期: add(1)(2)(3) 6; add(1, 2, 3)(4) 10; add(1)(2)(3)(4)(5) 15;function add() {// 第一次执行时,定义一个数组专门用来存储所有的参数var…...
Sql进阶:字段中包含CSV,如何通过Sql解析CSV成多行多列?
Sql进阶 一、问题描述二、解决思路<一>、拆成多行<二>、拆成多列 三、代码实现 一、问题描述 Oracle数据库中某个字段value是CLOB类型,存的是csv格式的数据,如下所示 classnovalue1name,age,sex,… ‘李世民’,20,‘M’,…’ ‘李治’,18,‘M’,… ‘武则天’,16…...
linux之调度管理(5)-实时调度器
一、概述 在Linux内核中,实时进程总是比普通进程的优先级要高,实时进程的调度是由Real Time Scheduler(RT调度器)来管理,而普通进程由CFS调度器来管理。 实时进程支持的调度策略为:SCHED_FIFO和SCHED_RR。 SCHED_FIFOÿ…...
mybatis-plus: mapper-locations: “classpath*:/mapper/**/*.xml“配置!!!解释
和mybatis一样的道理!!!!如果不指定这个配置,通常要求 XML 映射文件和 Mapper 接口的包名和结构相同!!!! 如果没有配置 mapper-locations,通常文件结构应遵循…...
网站案例/电商运营转行后悔了
目录 0. 相关文章链接 1. 原理 1.1. 为什么使用Flink On Yarn 1.2. Flink如何和Yarn进行交互 1.3. 两种方式 2. 操作 2.1. 关闭yarn的内存检查 2.2. 同步 2.3. 重启yarn 3. 测试 3.1. Session模式 3.2. Per-Job分离模式 0. 相关文章链接 Flink文章汇总 1. 原理 …...
北湖区网站建设公司哪家好/泽成seo网站排名
一.我学到的内容 二.我的收获 PTA链接:https://pintia.cn/problem-sets?tab1 博客园链接:https://www.cnblogs.com/buxiu888/ 收获:这学期相比于上学期感觉自己收获了很多,不在像上学期那样去被动学习,因为明白了不能…...
惠安县住房和城乡建设部网站/宁波免费seo排名优化
网上对于安卓DeepLink方式跳转传递参数的例子较少,说的也不客观,实践之后发现还是有一些坑。其实为什么要用DeepLink方式跳转,有些是因为引流的原因,他们希望通过网页就能直接跳转到App的界面。还有其实就是某些业务的需要&#x…...
区块链技术做网站/谷歌seo软件
在Linux /etc/passwd文件中每个用户都有一个对应的记录行,它记录了这个用户的一些基本属性。系统管理员经常会接触到这个文件的修改以完成对用户的管理工作。 它的内容类似下面的例子: 从上面的例子我们可以看到,/etc/passwd中一行记录对应着…...
网站开发要会英语吗/上海网站排名优化怎么做
1.集成jsp 由于springboot默认视图层是Thymeleaf,所以需要导一些支持jsp的jar2.导jar,让内嵌tomcat支持jsp页面 <!--tomcat-embed-jasper 为内嵌的tomcat提供解析jsp的功能--> <dependency><groupId>org.apache.tomcat.embed</groupId><…...
做金融网站拘留多久/重庆小潘seo
从目前的政策环境来讲,送货机器人比送货无人机能更快实现落地。 本月月初,弗吉尼亚州通过法案,允许地面送货机器人上路,。同样关于送货机器人,爱达荷州(位于美国西北部)于昨天也批准其上路&…...