首页 > 编程语言 >新手必看!Python30 个常见错误速查手册

新手必看!Python30 个常见错误速查手册

时间:2024-12-25 09:59:48浏览次数:5  
标签:缩进 必看 Python 解决方案 字符串 Python30 print 速查 my

老邓给大家整理了30个 Python 新手常见的错误,并提供了代码示例、注释和解决方案。

1. `SyntaxError: invalid syntax`

  • 这是 Python 最常见的错误之一,表示代码违反了 Python 的语法规则。

# 缺少冒号
if x > 5
    print("x > 5")

# 错误的赋值
5 = x 

解决方案:仔细检查代码,确保符合 Python 的语法规则。尤其注意冒号、括号、引号等符号的使用。查阅 Python 官方文档可以帮助理解正确的语法。

2. `SyntaxError: non-default argument follows default argument`

  • 函数定义中,默认参数必须放在非默认参数之后。

def func(a=1, b):
    print(a, b)

解决方案:将默认参数放在非默认参数之后。

def func(b, a=1):
    print(a, b)

3. `SyntaxError: invalid character in identifier`

  • 标识符中包含了无效字符,例如中文标点符号。

变量名=10  # 使用了中文等号

解决方案:使用英文标点符号和字母、数字、下划线组成标识符。

4. `TypeError: can only concatenate str (not "XXX") to str`

  • 尝试将字符串与非字符串类型进行拼接。

age = 20
print("My age is " + age)

解决方案:将非字符串类型转换为字符串再进行拼接。

age = 20
print("My age is " + str(age))

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

  • 函数调用时参数数量不匹配。

def add(x, y):
    return x + y

result = add(5)

解决方案:提供正确的参数数量。

result = add(5, 3)

6. `TypeError: 'tuple' object does not support item assignment`

  • 尝试修改元组元素。元组是不可变的。

my_tuple = (1, 2, 3)
my_tuple[0] = 4

解决方案:如果需要修改,使用列表代替元组。

7. `ValueError: could not convert string to float: '12.2s'`

  • 尝试将包含非数字字符的字符串转换为浮点数。

float('12.2s')

解决方案:去除字符串中的非数字字符,或者进行错误处理。

8. `ValueError: invalid literal for int with base 10`

  • 尝试将包含非数字字符的字符串转换为整数。

int('12a')

解决方案:去除字符串中的非数字字符,或者进行错误处理。

9. `ValueError: substring not found`

  • 使用 str.index() 或其他字符串方法查找不存在的子字符串。

"hello".index("world")

解决方案:使用 in 或 find() 方法检查子字符串是否存在,或者使用 try-except 块处理异常。

10. `ZeroDivisionError: division by zero`

  • 除数为零。

10 / 0

解决方案:检查除数是否为零,或者使用 try-except 块处理异常。

11. `AttributeError: 'module' object has no attribute 'xxx'`

  • 模块中不存在指定的属性。

import math
math.sinn(0)  # 拼写错误

解决方案:检查属性名称是否正确,拼写是否正确。

12. `AttributeError: 'Obj' object has no attribute 'attr'`

  • 对象没有指定的属性。

class MyClass:
    pass

obj = MyClass()
print(obj.attr)  # MyClass 没有定义 attr 属性

解决方案:确保对象拥有指定的属性。

13. `FileExistsError: [Errno 17] File exists`

  • 尝试创建已存在的文件。

with open("my_file.txt", "x") as f:  # x 模式用于创建文件,如果文件已存在会报错
    f.write("Hello")

解决方案:使用 w 模式覆盖现有文件,或者使用 a 模式追加内容。

14. `FileNotFoundError: [Errno 2] No such file or directory`

  • 尝试打开不存在的文件。

with open("non_existent_file.txt", "r") as f:
    content = f.read()

解决方案:检查文件路径是否正确,确保文件存在。

15. `IndentationError: expected an indented block`

  • 代码块缩进错误,缺少缩进。

if x > 5:
print("x > 5")

解决方案:添加正确的缩进。

16. `IndentationError: unexpected indent`

  • 代码块缩进错误,出现意外的缩进。

print("Hello")
    print("World")

解决方案:删除意外的缩进。

17. `IndentationError: unindent does not match any outer indentation level`

  • 代码块缩进错误,取消缩进的级别与任何外部缩进级别都不匹配。

if x > 5:
    print("x > 5")
  print("Done")
  • 解决方案:调整缩进,使其与外部缩进级别匹配。

18. `IndexError: list index out of range`

  • 访问列表中不存在的索引。

my_list = [1, 2, 3]
print(my_list[3])

解决方案:确保索引在列表的范围内。

19. `IsADirectoryError: [Errno 21] Is a directory`

  • 尝试对目录执行文件操作。

with open("my_directory", "r") as f:  # my_directory 是一个目录
    content = f.read()

解决方案:确保操作的对象是文件,而不是目录。

20. `KeyError: 'age'`

  • 访问字典中不存在的键。

my_dict = {"name": "Alice"}
print(my_dict["age"])

解决方案:使用 in 运算符检查键是否存在,或者使用 get() 方法安全地访问键。

21. `ModuleNotFoundError: No module named 'pymysql'`

  • 未安装指定的模块。

import pymysql

解决方案:使用 pip install pymysql 安装模块。

22. `NameError: name 'test' is not defined`

  • 使用了未定义的变量。

print(test)  # test 未定义

解决方案:定义变量后再使用。

23. `RecursionError: maximum recursion depth exceeded in comparison`

  • 递归深度超过了限制。

def infinite_recursion():
    infinite_recursion()

infinite_recursion()

解决方案:检查递归函数的终止条件,确保递归能够结束。

24. `TimeoutError: [WinError 10060] No response or response from host after a period of time. Connection attempt failed.`

  • 网络连接超时。

import socket

# ... 网络操作 ...

解决方案:检查网络连接,增加超时时间,或者进行错误处理。

25. `TypeError: unsupported operand type(s) for +: 'int' and 'str'`

  • 尝试对不支持的类型进行操作,例如将整数和字符串相加。

num = 10
string = "20"
result = num + string

解决方案:将操作数转换为合适的类型,例如使用 int(string) 将字符串转换为整数。

26. `TypeError: 'str' object cannot be interpreted as an integer`

  • 将字符串传递给需要整数的函数或操作。

string = "10"
for i in range(string): 
    print(i)

解决方案:使用 int(string) 将字符串转换为整数。

27. `UnboundLocalError: local variable 'x' referenced before assignment`

  • 在函数内部尝试访问在函数内部赋值之前引用的局部变量。

def my_function():
    print(x)  # x 在这里还没有被赋值
    x = 10

my_function()

解决方案:在引用局部变量之前先进行赋值,或者将其声明为全局变量(如果确实需要访问全局变量)。

28. `TypeError: unhashable type: 'list'`

  • 尝试将不可哈希的类型(例如列表)用作字典的键或集合的元素。

my_dict = {[1, 2]: "value"}  # 列表不能作为字典的键

解决方案:使用可哈希的类型,例如元组或字符串。

29. `MemoryError`

  • 程序试图使用超过可用内存的内存。

very_large_list = [i for i in range(10**10)]  # 创建一个非常大的列表

解决方案:优化代码,减少内存使用,例如使用生成器或迭代器,或者分批处理数据。

30. `OverflowError: math range error`

  • 数学运算的结果超出了可表示的范围。

import math

result = math.exp(1000)  # exp(1000) 的结果太大

解决方案:使用能够处理更大数值范围的库,或者调整计算方法。

希望这30个常见的 Python 错误及其解决方案能够帮助你更好地理解和解决 Python 编程中遇到的问题。

全套Python学习资料分享:

一、Python所有方向的学习路线

Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。

图片

二、全套PDF电子书

书籍的好处就在于权威和体系健全,刚开始学习的时候你可以只看视频或者听某个人讲课,但等你学完之后,你觉得你掌握了,这时候建议还是得去看一下书籍,看权威技术书籍也是每个程序员必经之路。

图片

三、python入门资料大全

图片

四、python进阶资料大全

图片

五、python爬虫专栏

图片

六、入门学习视频全套

我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了。

图片

七、实战案例

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

图片

八、python最新面试题

图片

标签:缩进,必看,Python,解决方案,字符串,Python30,print,速查,my
From: https://blog.csdn.net/qq_36807888/article/details/144657716

相关文章

  • Vim 命令速查表
    简介#Vim命令速查表,注释化vimrc配置文件,经典Vim键盘图,实用Vim书籍,Markdown格式,目录化检索,快速熟悉使用!重复的威力#.#小数点,重复上一次的命令N<command>#重复某个命令N次,例如:10k,光标上移10行光标移动#注:一般模式下,任意一个动......
  • 线性表详解:一文彻底玩转线性表(万字长文,新手必看)
    目录1、线性表(线性存储结构)是什么线性表的顺序存储和链式存储前驱和后继2、顺序表(顺序存储结构)详解顺序表的使用3、顺序表的基本操作(C语言实现)顺序表插入元素顺序表删除元素顺序表查找元素顺序表更改元素实例演示4、链表(单链表)是什么结点(节点)头结点、头指针和首......
  • 团队协作必看!这8种行为千万不要做
    在现代企业中,团队协作是推动项目成功和实现组织目标的关键。然而,团队协作并非总是顺畅无阻,一些常见的不良行为会严重阻碍团队的高效运作和良好工作氛围的形成。本文将探讨这些不良行为及其影响,并提出相应的应对策略。缺乏沟通影响:无沟通或沟通不畅会导致信息误解、任务延误和......
  • 网络安全(黑客)小白自学必看—最新寒假学习计划【2025年】
    ......
  • (免费源码)计算机毕业设计必学必看 万套实战教程 java、python、php、node.js、c#、APP
    摘要随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,机房预约系统小程序被用户普遍使用,为方便用户能够可以随时进行机房预约系统小程序的数据信息管理,特开发了基于机房预约系统......
  • (免费源码)计算机毕业设计必学必看 万套实战教程 java、python、php、node.js、c#、APP
    摘 要随着科学技术的飞速发展,社会的方方面面、各行各业都在努力与现代的先进技术接轨,通过科技手段来提高自身的优势,校园商店当然也不能排除在外。校园商店是以实际运用为开发背景,运用软件工程原理和开发方法,采用Java技术构建的一个管理系统。整个开发过程首先对软件系统进行......
  • 新手必看!项目管理十大领域详解(附工具推荐)
    项目管理技能:未来职场的“硬通货”从数据上看,项目管理不是未来的“可能性”,而是职业发展的“确定性”:到2027年,全球市场对项目管理专业人员的需求可能将达到8770万+,这一技能不再是某些特定行业的“小众需求”,而是各行各业的“必备项”。企业需要什么样的人才?81%的公司在疯狂打磨......
  • 硬件工程师必看——电容特性
    1.电容两端的电压差不能突变注意这里说的是电压差而不是电压,电压是可以突变的。先让电容上端的电压为5V再断开开关让下端的开关为5v,可以发现上面的电压变成10v了,证明电容两端电压可以突变,但是电容的电压差不可以突变。2.电容的储能特性电容相当于一个小电池他是可以储......
  • 腾讯通RTX用户必看的升级方案,兼容Linux系统及移动端
    一、腾讯通RTX停更后的难题自腾讯通RTX停止更新并下架官网后,用户面临的挑战日益突出。这不仅是因为失去了技术支持、版本更新和资源下载渠道,更在于以下核心问题:●不适配国产系统与移动端:腾讯通RTX仅支持Windows和Mac系统,不兼容统信UOS、银河麒麟等国产操作系统,也无法在Android......
  • 超详细教程:手把手教你在 App Store 添加内购功能(从零开始到上线)” “新手必看!一文搞定
    目录什么是内购功能(In-AppPurchase)?实现内购功能前的准备工作(1)启用内购功能的前置条件(2)创建AppID并启用内购权限在AppStoreConnect中添加内购项目(1)内购类型的选择与区别(2)创建内购商品并填写相关信息使用代码实现内购功能测试内购功能(1)创建沙盒测试账号(2......