这是为青少年编写的《Python趣味编程:从入门到人工智能》的附录B的内容,列出了Python初学者常见错误及解决方法目录1. SyntaxError语法错误2. IndentationError缩进错误。
3. NameError名字错误4. TypeError类型错误5. KeyError键错误6. IndexError索引错误7. UnboundLocalError未初始化本地变量错误
![](http://ldjg88.com/zb_users/upload/2024/06/20240612074105171814926537352.png)
附录B:Python初学者常见错误及解决方法在学习Python语言编程的最初几周内,初学者会遇到大量的语法错误及其他错误但是只要坚持克服困难,经过一段时间的编程训练,这些错误就会显著减少下面列出了常见的一些错误及其解决方法,供初学者备查。
1. SyntaxError语法错误(1)用来表示字符串的引号没有成对出现报错信息:SyntaxError: EOL while scanning stringliteral错误示例:print(hello)。
解决方法:将字符串放在一对双引号内当一个字符串中包含单引号或双引号时,很容易出现引号不配对的情况(2)圆括号没有成对出现报错信息:SyntaxError: unexpected EOF while parsing。
错误示例1:a= (1 + (2 / 3) * 4错误示例2:print(hello解决方法:使圆括号成对出现在书写复杂的表达式或调用函数时会经常遇到这个错误(3)调用print()函数时使用了Python 2的语法。
报错信息:SyntaxError: Missing parentheses in call toprint错误示例:print hello解决方法:使用Python 3的语法格式调用print()函数,即print(hello)。
当初学者从Python 2转到Python 3时,往往会习惯性地犯这个错误(4)错误使用自操作运算符++或--等报错信息:SyntaxError: invalid syntax错误示例:a = 1a++。
解决方法:在Python语言中,没有类似C语言的++或--等自操作运算符与之类似功能的用法是+=或-=运算符例如,使用下面代码进行让变量a进行自增1的操作a += 1(5)试图使用等号(=)来判断两个运算量是否相等。
报错信息:SyntaxError: invalid syntax错误示例:if a = 1: print(hello)解决方法:在Python语言中使用两个等号(==)作为判断两个运算量是否相等的关系运算符,而等号(=)是赋值运算符。
(6)误用Python语言关键字作为变量名报错信息:SyntaxError: cant assign to keyword错误示例:True = 1解决方法:不要使用Python语言关键字作为变量名、函数名或类名等。
在Python Shell窗口中,使用help(keywords)指令可以查看Python语言的关键字列表(7)忘记在if/elif/else/while/for/def/class等语句末尾添加冒号(:)。
报错信息:SyntaxError: invalid syntax错误示例1:a = 2if a > 0 print(+)错误示例2:def sayhello() print(hello)解决方法:
在if/elif/else/while/for/def/class等语句末尾添加冒号(:)即可牢记语法规则,习惯成自然2. IndentationError缩进错误报错信息:IndentationError: unindent does not matchany outer indentation level。
IndentationError: expected an indentedblock错误示例:a = 2if a > 0: print(+) print(a)else: print(-)
注:错误原因是上述代码中if语句体内的代码缩进没有对齐解决方法:正确使用缩进排版代码当代码是从它处复制粘贴过来的时候,这个错误较为常见3. NameError名字错误当变量名、函数名或类名等书写错误,或者是函数在定义之前就被函数等情况下,就会导致名字错误。
报错信息:NameError: name pirnt is not definedNameError: name sayhello is not defined错误示例1:pirnt(hello)注:错误原因是print拼写错误。
错误示例2:sayhello()def sayhello(): pas注:错误原因是在函数定义之前对函数进行调用解决方法:正确书写变量名、函数名或类名等,在使用变量前先进行赋值,将函数的定义放在函数调用之前,等等。
即保证某个名字(标识符)先存在,才能被使用4. TypeError类型错误(1)整数和字符串不能进行连接操作报错信息:TypeError: Cant convert int object tostr implicitly。
TypeError: unsupported operand type(s) for+: float and str错误示例1:print(score:+ 100)错误示例2:print(9.8+ seconds)
解决方法:在整数、浮点数或布尔值与字符串进行连接操作之前,先使用str()函数将其转换为字符串类型(2)调用函数时参数的个数不正确,或者未传递参数报错信息:TypeError: input expected at most 1arguments, got 2。
TypeError: say() missing 1 requiredpositional argument: words错误示例1:input(输入姓名, 年龄)注:错误原因是试图给input()函数提供第二个参数。
错误示例2:def say(words): print(words)say()注:错误原因是调用函数时未传递参数解决方法:记住函数用法,了解函数的参数定义,使用正确的方法调用函数即可5. KeyError。
键错误使用不存在的键名访问字典中的元素,就会发生这个错误报错信息:KeyError: c错误示例:d= {a:1, b:2}print(d[c])解决方法:在访问字典中的元素时,先用in关键字检测要访问的键名是否存在,或者是使用字典的get()方法安全地访问字典元素。
6. IndexError索引错误当访问列表的索引超出列表范围时,就会出现索引错误报错信息:IndexError: list index out of range错误示例:a = [1, 2, 3]print(a[3])
注:错误原因是列表a中不存在第4个索引请记住,列表的索引从0开始编号解决方法:通过len()函数获取列表的长度,然后判断要访问的索引是否超出列表范围7. UnboundLocalError未初始化本地变量错误。
在函数中,如果对未声明的全局变量进行修改操作,将会遇到这个错误报错信息:UnboundLocalError: local variable sreferenced before assignment错误示例:
s = 1def test(): s += 1 print(s)test()注:错误原因是在函数内对未声明的全局变量s进行了自增操作Python将变量s视为一个本地的局部变量,但该变量未初始化。
解决方法:在函数内使用全局变量时,使用global关键字对其进行声明即可总之,在实际编程中遇到错误是不可避免的但是不用担心,它们不过是纸老虎初学者应善于利用搜索引擎查找和解决问题,遇到什么错误就查什么只要将错误信息的内容输入到搜索引擎的搜索框内,就能找到很多解决错误的资料。
![](http://ldjg88.com/zb_users/upload/2024/06/20240612074105171814926553382.gif)
美哉勾股树:勾股定理和树木形态的奥秘
![](http://ldjg88.com/zb_users/upload/2024/06/20240612074105171814926534099.jpeg)
![](http://ldjg88.com/zb_users/upload/2024/06/20240612074106171814926647065.jpeg)
勾股树、分形图等是非常有趣的话题,对此感兴趣的朋友可以阅读《Scratch趣味编程进阶》一书的第7章《神奇分形图》,其中介绍了几种常见的分形图的构造方法。
![](http://ldjg88.com/zb_users/upload/2024/06/20240612074106171814926682060.jpeg)
在此特别提醒scratch初学者,绘制勾股树分形图时应用到了递归方法对于递归编程不熟悉的朋友可以阅读《Scratch编程从入门到精通》一书,书中第5章“过程”中对函数(过程、自定义积木)和递归调用进行了详细的介绍。
这两本书在当当有售,价格低,送货快点击下方链接,查看图书详情:📚《Scratch编程从入门到精通》,数学·游戏·算法,无趣味,不编程!📚《Scratch趣味编程进阶——妙趣横生的数学和算法》Scratch课程推荐。
📚美哉勾股树:勾股定理和树木形态的奥秘📚少儿编程从Scratch到C++学习推荐书目📚在老电脑 XP 系统中使用 Scratch 2.0 软件📚收藏|Scratch软件下载大全集📚Scratch2离线版编辑器使用中文帮助文件
📚用Scratch画太极图📚520,521:用Scratch画出美丽的爱心📚解决Scratch中导入列表出现中文乱码📚用Scratch和Python画勾股树📚韩信点兵:用Scratch巧解奥数题
📚水手分椰子:用Scratch巧解奥数题📚鸡兔同笼:用Scratch巧解奥数题📚汉诺塔:用Scratch巧解游戏难题📚爱因斯坦阶梯问题:用Scratch巧解数学题
![](http://ldjg88.com/zb_users/upload/2024/06/20240612074106171814926647871.jpeg)
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。