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(即中国网络大会)上,众多院士、教授和业界技术领袖齐聚一堂,畅谈网络未来的发展方向,聚焦智算集群网络的创新变…...
【WiFi帧结构】
文章目录 帧结构MAC头部管理帧 帧结构 Wi-Fi的帧分为三部分组成:MAC头部frame bodyFCS,其中MAC是固定格式的,frame body是可变长度。 MAC头部有frame control,duration,address1,address2,addre…...
前端倒计时误差!
提示:记录工作中遇到的需求及解决办法 文章目录 前言一、误差从何而来?二、五大解决方案1. 动态校准法(基础版)2. Web Worker 计时3. 服务器时间同步4. Performance API 高精度计时5. 页面可见性API优化三、生产环境最佳实践四、终极解决方案架构前言 前几天听说公司某个项…...
Opencv中的addweighted函数
一.addweighted函数作用 addweighted()是OpenCV库中用于图像处理的函数,主要功能是将两个输入图像(尺寸和类型相同)按照指定的权重进行加权叠加(图像融合),并添加一个标量值&#x…...
学校招生小程序源码介绍
基于ThinkPHPFastAdminUniApp开发的学校招生小程序源码,专为学校招生场景量身打造,功能实用且操作便捷。 从技术架构来看,ThinkPHP提供稳定可靠的后台服务,FastAdmin加速开发流程,UniApp则保障小程序在多端有良好的兼…...
拉力测试cuda pytorch 把 4070显卡拉满
import torch import timedef stress_test_gpu(matrix_size16384, duration300):"""对GPU进行压力测试,通过持续的矩阵乘法来最大化GPU利用率参数:matrix_size: 矩阵维度大小,增大可提高计算复杂度duration: 测试持续时间(秒&…...
CRMEB 框架中 PHP 上传扩展开发:涵盖本地上传及阿里云 OSS、腾讯云 COS、七牛云
目前已有本地上传、阿里云OSS上传、腾讯云COS上传、七牛云上传扩展 扩展入口文件 文件目录 crmeb\services\upload\Upload.php namespace crmeb\services\upload;use crmeb\basic\BaseManager; use think\facade\Config;/*** Class Upload* package crmeb\services\upload* …...
使用 SymPy 进行向量和矩阵的高级操作
在科学计算和工程领域,向量和矩阵操作是解决问题的核心技能之一。Python 的 SymPy 库提供了强大的符号计算功能,能够高效地处理向量和矩阵的各种操作。本文将深入探讨如何使用 SymPy 进行向量和矩阵的创建、合并以及维度拓展等操作,并通过具体…...
渗透实战PortSwigger靶场:lab13存储型DOM XSS详解
进来是需要留言的,先用做简单的 html 标签测试 发现面的</h1>不见了 数据包中找到了一个loadCommentsWithVulnerableEscapeHtml.js 他是把用户输入的<>进行 html 编码,输入的<>当成字符串处理回显到页面中,看来只是把用户输…...
【FTP】ftp文件传输会丢包吗?批量几百个文件传输,有一些文件没有传输完整,如何解决?
FTP(File Transfer Protocol)本身是一个基于 TCP 的协议,理论上不会丢包。但 FTP 文件传输过程中仍可能出现文件不完整、丢失或损坏的情况,主要原因包括: ✅ 一、FTP传输可能“丢包”或文件不完整的原因 原因描述网络…...
高防服务器价格高原因分析
高防服务器的价格较高,主要是由于其特殊的防御机制、硬件配置、运营维护等多方面的综合成本。以下从技术、资源和服务三个维度详细解析高防服务器昂贵的原因: 一、硬件与技术投入 大带宽需求 DDoS攻击通过占用大量带宽资源瘫痪目标服务器,因此…...
