希望点击上方 编程学习者社区,选择 创建星标
回复关键字 资源 获取编程资源
阅读文本大概需要 5 分钟
相比于其他语言,Python 的语法比较简单易学,但一旦不注意细节,刚入门的新手就会掉进语法错误的坑里。今天给大家讲几个平常比较容易掉的“坑”。
1、忘记写冒号
在 if、elif、else、for、while、class、def 语句后面忘记添加 “ : ”
![785301132e3b93bbad788183d18dccc4.png](https://i-blog.csdnimg.cn/blog_migrate/99985565ad3118402740d173697cb2fc.png)
2、误用 “=” 做等值比较
“=”是给变量赋值,“==”才是判断两个值是否相等:
![5499cc55db364fc64b66088eaf23ca7a.png](https://i-blog.csdnimg.cn/blog_migrate/55db2089a813a4d168fef42047d1b583.png)
改正:
![39d73bbce45a97ee89f79e504d9432e2.png](https://i-blog.csdnimg.cn/blog_migrate/e6c3699f484379e1fbac3de3eeb82964.png)
3、变量没有定义
![e29f9ed2326fd5642c02bfef3ae5318a.png](https://i-blog.csdnimg.cn/blog_migrate/d0568940de879674b54682cb67b0b560.png)
会导致:“NameError: name 'age' is not defined.”
改正:
![c4f6c3a4158e73c3193beb63afa8df3a.png](https://i-blog.csdnimg.cn/blog_migrate/0c017181ada25185b25244084b1cc189.png)
4、字符串与非字符串连接
错误:
![3ab8012659d4f4b2b1a22d24e556574f.png](https://i-blog.csdnimg.cn/blog_migrate/d5984506b7b3c82d4fec250949780933.png)
非字符串和字符串连接的时候,要将非字符串转换为字符串类型之后才能连接。
改正:
![a5552e47a80e3eda6c3f5aa57602c310.png](https://i-blog.csdnimg.cn/blog_migrate/9990d187f7dbbaadd094fd1276762f9a.png)
大家来猜一猜输出
1 + int(‘1’)
‘1’ + str(1)
会有怎样不同的结果呢?
![607bf18c0111f01ac21555ccf1765ff6.png](https://i-blog.csdnimg.cn/blog_migrate/0253631971c78495ebeb5b1987255d41.png)
1 + int(‘1’) 输出的结果是 2。
![f15454ebdc4c36aba1a2a0d8c9474363.png](https://i-blog.csdnimg.cn/blog_migrate/1d6193cfc1498a64a045d4c7eedadc19.png)
‘1’ + str(1) 的输出结果是 11。
5、列表的索引位置
有些同学会习惯性地认为列表元素的位置是从 1 开始的:
![a1be7de6604944538ca6ef43929ae2a8.png](https://i-blog.csdnimg.cn/blog_migrate/c37991691df78093d65ab47a5561a201.jpeg)
系统这时就会提示:"list index out of range."
可别忘了,列表元素的位置是从 0 开始的,所以第 3 个元素 “mouse” 的索引位置是 2。
改正:
![159a76601dd78a26c94e6446169db8f8.png](https://i-blog.csdnimg.cn/blog_migrate/3d78116bf66bd6b75e30324c7c52b3c2.png)
6、使用自增 “++” 自减 “--”
学过 C 语言或者 Java 的人会很习惯使用i++或者i--,但在 Python 中是没有自增自减操作符的:
![817a019639bded3df46a8830445fe813.png](https://i-blog.csdnimg.cn/blog_migrate/1583cb3c0be3c08e9df84735757df53f.png)
这时可以使用 “+=” 来代替 “++”
改正:
![1218e6eb2c463d830af0226858068bb4.png](https://i-blog.csdnimg.cn/blog_migrate/f16998963efa0c8336859d37cde3632c.png)
7、 使用关键字命名变量
Python 3 中一共 33 个关键字:
👉False,None,True,and,as,assert,break,class,continue,def,del,elif,else,except,finally,for,from,global,if,import,in,is,lambda,nonlocal,not,or,pass,raise,return,try,while,with,yield👈
自定义变量时,变量名不能和这些关键字重复。
8、 索引元素位置时忘记调用 len 方法
通过索引位置来获取列表元素时,忘记要先使用 len 函数来获取列表的长度:
![d4afa08480607959842673bb2e5b4aec.png](https://i-blog.csdnimg.cn/blog_migrate/b4a47db596db16d9a107727f092f9f0e.png)
改正:
![a758cc37d1bc4143c5ac09e09bbf7ad8.png](https://i-blog.csdnimg.cn/blog_migrate/9c55fff17ca59fdb0b1e026480990e34.png)
9、函数中的局部变量赋值前被使用:
![e64b6ebedc9d93d02514487d0f218219.png](https://i-blog.csdnimg.cn/blog_migrate/9fc3c6cb684faf48f60477cf0e8ba3d3.png)
第一行定义了一个全局变量 num ➡️函数 myFunction( )也定义了一个同名的局部变量➡️程序执行时是先查找局部变量的➡️在函数中找到 num 之后就不到外部查找了➡️此时就会出现 print 的时候变量 num 还没赋值的错误。
10、缩进问题
和其他语言的语法最大的不同就是,Python 不能用括号来表示语句块,也不能用开始或结束标志符来表示,而是靠缩进来区分代码块的。
常见的错误用法:
(1)第一种
![4e12f273626212e5cd83a2c350e1fe40.png](https://i-blog.csdnimg.cn/blog_migrate/5f7f5c597d3d4cae8e5d60e0afbdc8a1.png)
错误是第二行的缩进会导致两个print语句是包含和被包含的关系,但他们两者是属于同一个代码块的,所以应该写成:
![062d9725c339a1ff2f91e31fede73a0a.png](https://i-blog.csdnimg.cn/blog_migrate/2aa9011281b135f7f95c8e285d08ff3e.png)
(2)第二种
![d011e5f104bdfa05bbf640f642449c76.png](https://i-blog.csdnimg.cn/blog_migrate/c45c4693c0ce1d6af5ce7051cb88038c.png)
错误是第三行的缩进,改正的方法有两种。
一是如果两个 print 语句是属于同一代码块的,应该改正为:
![efa22b379995f17046a0e257ddcfb850.png](https://i-blog.csdnimg.cn/blog_migrate/83f007576fbf8f8e891f67b0b222265a.png)
二是如果第三行的 print 语句是和 if 语句是同一级的,则改正为:
![e1fc522b758c59f1b138d2715f517068.png](https://i-blog.csdnimg.cn/blog_migrate/1ae3cbbdb72a49f1fa82679da075fe63.png)
(3)第三种
在Python 3 中,缩进的时候,不能 Tab 和空格混用,每个缩进层次应该选择只使用 Tab 或者只使用空格。
![bb3ff3a44ab784de7cb1a73d536ecc9c.gif](https://i-blog.csdnimg.cn/blog_migrate/32ba8a0a63a6a904a5d95ffb4c43395d.gif)
来源:数据分析与统计学之美
往期精选
在知乎上学Python-入门篇在知乎上学爬虫大家都用什么背英语单词Python库分享![b6ae1261ee2d89b4e0e74dd5ec947616.gif](https://i-blog.csdnimg.cn/blog_migrate/78cc1f89f887958daaaa54b597d92d41.gif)
![256dbfb59c152f4633c93e17481a2e59.gif](https://i-blog.csdnimg.cn/blog_migrate/3ed6a0f37fd9e48ec54431f6958c0df0.gif)