17个新手常见Python运行时错误

2023-05-16

对于刚入门的Pythoner在学习过程中运行代码是或多或少会遇到一些错误,刚开始可能看起来比较费劲。随着代码量的积累,熟能生巧当遇到一些运行时错误时能够很快的定位问题原题。下面整理了常见的17个错误,希望能够帮助到大家。

1、
忘记在if,for,def,elif,else,class等声明末尾加 :
会导致“SyntaxError :invalid syntax”如下:
if spam == 42
print(‘Hello!’)

2、
使用= 而不是 ==
也会导致“SyntaxError: invalid syntax”
= 是赋值操作符而 == 是等于比较操作。该错误发生在如下代码中:
if spam = 42:
print(‘Hello!’)

3、
错误的使用缩进量
导致“IndentationError:unexpected indent”、“IndentationError:unindent does not match any outer indetation level”以及“IndentationError:expected an indented block”
记住缩进增加只用在以:初中初二生物辅导结束的语句之后,而之后必须恢复到之前的缩进格式。该错误发生在如下代码中:
print(‘Hello!’)
print(‘Howdy!’)

或者:
if spam == 42:
print(‘Hello!’)
print(‘Howdy!’)

4、
在 for 循环语句中忘记调用 len()
导致“TypeError: ‘list’ object cannot be interpreted as an integer”
通常你想要通过索引来迭代一个list或者string的元素,这需要调用 range() 函数。要记得返回len 值而不是返回这个列表。
该错误发生在如下代码中:
spam = [‘cat’, ‘dog’, ‘mouse’]
for i in range(spam):
print(spam[i])

5、
尝试修改string的值
导致“TypeError: ‘str’ object does not support item assignment”
string是一种不可变的数据类型,该错误发生在如下代码中:
spam = ‘I have a pet cat.’
spam[13] = ‘r’
print(spam)

而正确做法是:
spam = ‘I have a pet cat.’
spam = spam[:13] + ‘r’ + spam[14:]
print(spam)

6、
尝试连接非字符串值与字符串
导致 “TypeError: Can’t convert ‘int’ object to str implicitly”
该错误发生在如下代码中:
numEggs = 12
print(‘I have ’ + numEggs + ’ eggs.’)
而正确做法是:
numEggs = 12
print(‘I have ’ + str(numEggs) + ’ eggs.’)

numEggs = 12
print(‘I have %s eggs.’ % (numEggs))

7、
在字符串首尾忘记加引号
导致“SyntaxError: EOL while scanning string literal”
该错误发生在如下代码中:
print(Hello!’)

print('Hello!)

myName = ‘Al’
print(‘My name is ’ + myName + . How are you?’)

8、
变量或者函数名拼写错误
导致“NameError: name ‘fooba’ is not defined”
该错误发生在如下代码中:
foobar = ‘Al’
print('My name is ’ + fooba)

spam = ruond(4.2)

spam = Round(4.2)

9、
方法名拼写错误
导致 “AttributeError: ‘str’ object has no attribute ‘lowerr’”
该错误发生在如下代码中:
spam = ‘THIS IS IN LOWERCASE.’
spam = spam.lowerr()

10、
引用超过list最大索引
导致“IndexError: list index out of range”
该错误发生在如下代码中:
spam = [‘cat’, ‘dog’, ‘mouse’]
print(spam[6])

11、
使用不存在的字典键值
导致“KeyError:‘spam’”
该错误发生在如下代码中:
spam = {‘cat’: ‘Zophie’, ‘dog’: ‘Basil’, ‘mouse’: ‘Whiskers’}
print('The name of my pet zebra is ’ + spam[‘zebra’])

12、
尝试使用Python关键字作为变量名
导致“SyntaxError:invalid syntax”
Python关键不能用作变量名,该错误发生在如下代码中:
class = ‘algebra’

Python3的关键字有:and, as, assert, break, class, continue, def, del, elif, else, except, False, finally, for, from, global, if, import, in, is, lambda, None, nonlocal, not, or, pass, raise, return, True, try, while, with, yield

13、
在一个定义新变量中使用增值操作符
导致“NameError: name ‘foobar’ is not defined”
不要在声明变量时使用0或者空字符串作为初始值,这样使用自增操作符的一句spam += 1等于spam = spam + 1,这意味着spam需要指定一个有效的初始值。
该错误发生在如下代码中:
spam = 0
spam += 42
eggs += 42

14、
在定义局部变量前在函数中使用局部变量(此时有与局部变量同名的全局变量存在)
导致“UnboundLocalError: local variable ‘foobar’ referenced before assignment”
在函数中使用局部变来那个而同时又存在同名全局变量时是很复杂的,使用规则是:如果在函数中定义了任何东西,如果它只是在函数中使用那它就是局部的,反之就是全局变量。
这意味着你不能在定义它之前把它当全局变量在函数中使用。
该错误发生在如下代码中:
someVar = 42
def myFunction():
print(someVar)
someVar = 100
myFunction()

15、
尝试使用 range()创建整数列表
导致“TypeError: ‘range’ object does not support item assignment”
有时你想要得到一个有序的整数列表,所以 range() 看上去是生成此列表的不错方式。然而,你需要记住 range() 返回的是 “range object”,而不是实际的 list 值。
该错误发生在如下代码中:
spam = range(10)
spam[4] = -1
正确写法:
spam = list(range(10))
spam[4] = -1
(注意:在 Python 2 中 spam = range(10) 是能行的,因为在 Python 2 中 range() 返回的是list值,但是在 Python 3 中就会产生以上错误)

16、
不存在 ++ 或者 – 自增自减操作符。
导致“SyntaxError: invalid syntax”
如果你习惯于例如 C++ , Java , PHP 等其他的语言,也许你会想要尝试使用 ++ 或者 – 自增自减一个变量。在Python中是没有这样的操作符的。
该错误发生在如下代码中:
spam = 1
spam++
正确写法:
spam = 1
spam += 1

17、
忘记为方法的第一个参数添加self参数
导致“TypeError: myMethod() takes no arguments (1 given)”
该错误发生在如下代码中:
class Foo():
def myMethod():
print(‘Hello!’)
a = Foo()
a.myMethod()

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

17个新手常见Python运行时错误 的相关文章

随机推荐

  • INDEMIND带你玩转OpenCV4.0(一):DIS光流算法解析

    文章目录 一 xff0e OpencCV 4 0 新特性介绍首先是OpenCV完全支持了C 43 43 11DNN xff08 深度神经网络 xff09 模块是目前OpenCV更新最重要的模块G API 为算法的硬件优化加速提供计算图支持O
  • STM32 SWD烧录一次后J-LINK设备消失的问题

    偶然遇到移植程序时烧录一次后无法烧录的问题 如果用的时CUBEMX 应该马上检查SWDIO SWCLK的配置问题 如果无误 那就检查时钟问题 时钟问题有可能导致该问题的发生 看到有其它用户说在标准库的配置中添加 RCC AHB1Periph
  • IIC通讯详解笔记

    IIC概述 IIC总线是一种串行半双工两线总线 一根是双向的数据线SDA xff0c 另一根是时钟线SCL 所有接到IIC总线设备上的串行数据SDA都接到总线的SDA上 xff0c 各设备的时钟线SCL接到总线的SCL上 硬件拓扑如下图所示
  • 关于Gitee的介绍和使用

    Gitee Gitee是开源中国 xff08 OSChina xff09 推出的基于Git的代码托管服务 Gitee xff08 码云 xff09 是开源中国社区推出的代码托管协作开发平台 xff0c 支持Git和SVN xff0c 提供免
  • webpack postcss-loader自动添加前缀版本问题

    报错 xff1a 问题所在 xff1a postcss loader版本问题 xff0c 用了5版本会报错 解决 xff1a 将postcss loader降低到4版本就解决此问题
  • 使用数据表反向生成以及出现问题汇总

    什么是正向以及反向生成 正向生成 xff0c 指的是先创建model py文件 xff0c 然后通过django内置的编译器 xff0c 在数据库如mysql中创建出符合model py的表 反向生成 xff0c 指的是先在数据库中crea
  • 解决svn文件图标不显示

    1 首先检查svn设置中是否设置图标显示 2 win 43 R xff0c 输入regedit xff0c 调出注册表信息 xff0c 按下Ctrl 43 F 在注册表里搜索 ShellIconOverlayIdentifiers 查看是否
  • vue父组件传值给子组件不生效

    先上代码 父组件 lt hj subjects v if 61 34 showHjSubect 34 list 61 34 subjectsList 34 64 getHjSubjects 61 34 getHjSubject 34 gt
  • vue下载pdf为空问题解决

    后端返回文件流 xff0c vue下载到本地 请求时需要设置responseType blob 否则下载pdf文件打开会为空 下载方法代码如下 xff1a url请求参数 params请求参数 filename文件名称 span class
  • vue使用iframe嵌入html

    1 本地html文件的存放 在根目录下找到public文件夹 xff0c 在public文件夹下创建static文件夹 xff0c 把html文件放入static文件夹中 2 使用iframe标签引入html文件 span class to
  • 解决Android运行过程中出现的NoClassDefFoundError

    1 先说一下出现上述问题的经过 出现这个问题是集成一个aar之后 xff0c 编译过程中没有问题 在安装运行的时候出现上述错误 然后百度各种解决办法都无济于事 但是有了一点思路 报错位置 在自定义的application中初始化的aar导致
  • 前端将base64图片格式转化为文件流并传给后端

    base64图片格式 xff1a base64图片格式转化为文件流代码 xff1a data base64图片格式字符串 filename xff1a 文件名称 base64toFile span class token punctuati
  • IP地址分类

    一 xff1a IP地址 1概念 xff1a a IP地址是指互联协议地址 xff0c 又译为网际协议地址 b IP地址是提供的IP协议一种统一地址格式 xff0c 它为互联网上的每一个网络和每一台主机分配一个逻辑地址 xff0c 以此来屏
  • vue项目打包npm run build报错

    报错如下图 xff1a 删除根目录下的package lock json和node modules文件 xff0c 再运行npm i命令 npm i命令运行完成后 xff0c 再输入npm run build命令 命令执行成功后 xff0c
  • SpringBoot运行报o.s.b.d.LoggingFailureAnalysisReporter

    报错截图 xff1a 报错原因 xff1a 从上图Description中可以看出 xff0c 报错原因是端口被占用 报错解决方法 xff1a 找到application yml文件 xff0c 修改端口为8081 xff08 或者关闭80
  • ROS教程 Gazebo仿真(3)-摄像头

    接上一篇 ROS教程 Gazebo仿真 2 激光雷达 https blog csdn net weixin 43928944 article details 115904044 配置摄像头 camera sensors xacro span
  • Ubuntu18 远程桌面 VNC-Server 配置[亲测]

    安装vino sudo apt update sudo apt install vino 设Enable VNC 服务 sudo ln span class token operator span s span class token pu
  • redis redisson 集合使用示例(RList、Rset、RMap)

    redis redisson 集合操作 相关类及接口 Rlist xff1a 链表 public interface RList lt V gt extends List lt V gt RExpirable RListAsync lt V
  • Python数据分析、挖掘常用工具

    Python语言 xff1a 简要概括一下Python语言在数据分析 挖掘场景中常用特性 xff1a 列表 xff08 可以被修改 xff09 xff0c 元组 xff08 不可以被修改 xff09 字典 xff08 lt k v gt 结
  • 17个新手常见Python运行时错误

    对于刚入门的Pythoner在学习过程中运行代码是或多或少会遇到一些错误 xff0c 刚开始可能看起来比较费劲 随着代码量的积累 xff0c 熟能生巧当遇到一些运行时错误时能够很快的定位问题原题 下面整理了常见的17个错误 xff0c 希望