初学Python常见异常错误,总有一处你会遇到!
初学Python常见错误
- 忘记写冒号
- 误用=
- 错误 缩紧
- 变量没有定义
- 中英文输入法导致的错误
- 不同数据类型的拼接
- 索引位置问题
- 使用字典中不存在的键
- 忘了括号
- 漏传参数
- 缺失依赖库
- 使用了python中对关键词
- 编码问题
1. 忘记写冒号
在 if、elif、else、for、while、def语句后面忘记添加 :
age = 42 if age == 42 print('Hello!') File "<ipython-input-19-4303141d6f97>", line 2 if age == 42 ^ SyntaxError: invalid syntax
2. 误用 =
=` 是赋值操作,而判断两个值是否相等是 `== gender = '男' if gender = '男': print('Man') File "<ipython-input-20-191d01f95984>", line 2 if gender = '男': ^ SyntaxError: invalid syntax
3. 错误的缩进
Python用缩进区分代码块,常见的错误用法:
print('Hello!') print('Howdy!') File "<ipython-input-9-784bdb6e1df5>", line 2 print('Howdy!') ^ IndentationError: unexpected indent num = 25 if num == 25: print('Hello!') File "<ipython-input-21-8e4debcdf119>", line 3 print('Hello!') ^ IndentationError: expected an indented block
4. 变量没有定义
if city in ['New York', 'Bei Jing', 'Tokyo']: print('This is a mega city') --------------------------------------------------------------------------- NameError Traceback (most recent call last) <ipython-input-22-a81fd2e7a0fd> in <module> ----> 1 if city in ['New York', 'Bei Jing', 'Tokyo']: 2 print('This is a mega city') NameError: name 'city' is not defined
5. 中英文输入法导致的错误
- 英文冒号
- 英文括号
- 英文逗号
- 英文单双引号
if 5>3: print('5比3大') File "<ipython-input-46-47f8b985b82d>", line 1 if 5>3: ^ SyntaxError: invalid character in identifier if 5>3: print('5比3大') File "<ipython-input-47-4b1df4694a8d>", line 2 print('5比3大') ^ SyntaxError: invalid character in identifier spam = [1, 2,3] File "<ipython-input-45-47a5de07f212>", line 1 spam = [1, 2,3] ^ SyntaxError: invalid character in identifier if 5>3: print('5比3大‘) File "<ipython-input-48-ae599f12badb>", line 2 print('5比3大‘) ^ SyntaxError: EOL while scanning string literal
6. 不同数据类型的拼接
字符串/列表/元组 支持拼接
字典/集合不支持拼接
#小编创建了一个Python学习交流QQ群:857662006 'I have ' + 12 + ' eggs.' #'I have {} eggs.'.format(12) --------------------------------------------------------------------------- TypeError Traceback (most recent call last) <ipython-input-29-20c7c89a2ec6> in <module> ----> 1 'I have ' + 12 + ' eggs.' TypeError: can only concatenate str (not "int") to str ['a', 'b', 'c']+'def' --------------------------------------------------------------------------- TypeError Traceback (most recent call last) <ipython-input-31-0e8919333d6b> in <module> ----> 1 ['a', 'b', 'c']+'def' TypeError: can only concatenate list (not "str") to list ('a', 'b', 'c')+['a', 'b', 'c'] --------------------------------------------------------------------------- TypeError Traceback (most recent call last) <ipython-input-33-90742621216d> in <module> ----> 1 ('a', 'b', 'c')+['a', 'b', 'c'] TypeError: can only concatenate tuple (not "list") to tuple set(['a', 'b', 'c'])+set(['d', 'e']) --------------------------------------------------------------------------- TypeError Traceback (most recent call last) <ipython-input-35-ddf5fb1e6c8c> in <module> ----> 1 set(['a', 'b', 'c'])+set(['d', 'e']) TypeError: unsupported operand type(s) for +: 'set' and 'set' grades1 = {'Mary':99, 'Henry':77} grades2 = {'David':88, 'Unique':89} grades1+grades2 --------------------------------------------------------------------------- TypeError Traceback (most recent call last) <ipython-input-36-1b1456844331> in <module> 2 grades2 = {'David':88, 'Unique':89} 3 ----> 4 grades1+grades2 TypeError: unsupported operand type(s) for +: 'dict' and 'dict'
7. 索引位置问题
spam = ['cat', 'dog', 'mouse'] print(spam[5]) --------------------------------------------------------------------------- IndexError Traceback (most recent call last) <ipython-input-38-e0a79346266d> in <module> 1 spam = ['cat', 'dog', 'mouse'] ----> 2 print(spam[5]) IndexError: list index out of range
8. 使用字典中不存在的键
在字典对象中访问 key 可以使用 []
,
但是如果该 key 不存在,就会导致:KeyError: 'zebra'
spam = {'cat': 'Zophie', 'dog': 'Basil', 'mouse': 'Whiskers'} print(spam['zebra']) --------------------------------------------------------------------------- KeyError Traceback (most recent call last) <ipython-input-39-92c9b44ff034> in <module> 3 'mouse': 'Whiskers'} 4 ----> 5 print(spam['zebra']) KeyError: 'zebra'
为了避免这种情况,可以使用 get 方法
spam = {'cat': 'Zophie', 'dog': 'Basil', 'mouse': 'Whiskers'} print(spam.get('zebra')) None
key 不存在时,get 默认返回 None
9. 忘了括号
当函数中传入的是函数或者方法时,容易漏写括号
spam = {'cat': 'Zophie', 'dog': 'Basil', 'mouse': 'Whiskers'} print(spam.get('zebra') File "<ipython-input-43-100a51a7b630>", line 5 print(spam.get('zebra') ^ SyntaxError: unexpected EOF while parsing
10. 漏传参数
def diyadd(x, y, z): return x+y+z diyadd(1, 2) --------------------------------------------------------------------------- TypeError Traceback (most recent call last) <ipython-input-44-7184f3f906ca> in <module> 2 return x+y+z 3 ----> 4 diyadd(1, 2) TypeError: diyadd() missing 1 required positional argument: 'z'
11. 缺失依赖库
电脑中没有相关的库
12. 使用了python中的关键词
如try、except、def、class、object、None、True、False等
try = 5 print(try) File "<ipython-input-1-508e87fe2ff3>", line 1 try = 5 ^ SyntaxError: invalid syntax def = 6 print(6) File "<ipython-input-2-d04205303265>", line 1 def = 6 ^ SyntaxError: invalid syntax
13. 文件编码问题
import pandas as pd df = pd.read_csv('data/twitter情感分析数据集.csv') df.head()
尝试encoding编码参数传入utf-8、gbk
df = pd.read_csv('data/twitter情感分析数据集.csv', encoding='utf-8') df.head()
都报错说明编码不是utf-8和gbk,而是不常见都编码,这里我们需要传入正确都encoding,才能让程序运行。
python有个chardet库,专门用来侦测编码。
import chardet binary_data = open('data/twitter情感分析数据集.csv', 'rb').read() chardet.detect(binary_data) {'encoding': 'Windows-1252', 'confidence': 0.7291192008535122, 'language': ''
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Java垃圾回收机制你还不明白?一线大厂面试必问的!
什么是自动垃圾回收? 自动垃圾回收是一种在堆内存中找出哪些对象在被使用,还有哪些对象没被使用,并且将后者删掉的机制。所谓使用中的对象(已引用对象),指的是程序中有指针指向的对象;而未使用中的对象(未引用对象),则没有被任何指针给指向,因此占用的内存也可以被回收掉。在用 C 之类的编程语言时,程序员需要自己手动分配和释放内存。而 Java 不一样,它有垃圾回收器,释放内存由回收器负责。本文接下来将介绍垃圾回收机制的基本过程。 标记 垃圾回收的第一步是标记。垃圾回收器此时会找出哪些内存在使用中,还有哪些不是。 上图中,蓝色表示已引用对象,橙色表示未引用对象。垃圾回收器要检查完所有的对象,才能知道哪些有被引用,哪些没。如果系统里所有的对象都要检查,那这一步可能会相当耗时间。 清除 这一步会删掉标记出的未引用对象。 内存分配器会保留指向可用内存的引用,以供分配新对象。 压缩 为了提升性能,删除了未引用对象后,还可以将剩下的已引用对象放在一起(压缩),这样就能更简单快捷地分配新对象了。 为什么需要分代垃圾收集? 之前说过,逐一标记和压缩 Java 虚拟机里的所有对象非常低效:分配的对象越多,垃圾...
- 下一篇
阿里云+WordPress搭建个人博客
搭建过程: 第一步:首先你需要一台阿里云服务器ECS,如果你是学生,可以享受学生价9.5元/月 (阿里云翼计划:https://promotion.aliyun.com/ntms/act/campus2018.html?source=5176.11533457&userCode=8giwrppt&type=copy) 如果不是学生可以先领取优惠卷后再购买(优惠卷链接:https://promotion.aliyun.com/ntms/yunparter/invite.html?userCode=8giwrppt ) 第二步:搭建云服务器,设置系统和登录密码。这里我选择的ubuntu系统 如下步骤需要用到两个工具分别是:xshell(步骤3-步骤6会用到,可以直接利用阿里云的远程连接实现):https://xshell.en.softonic.com/和winScp(第7会用到):https://winscp.net/eng/download.php 第三步:安装php,我这里安装的是php7.3 2 add-apt-repository ppa:ondrej/php &...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- MySQL8.0.19开启GTID主从同步CentOS8
- CentOS7,CentOS8安装Elasticsearch6.8.6
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- Linux系统CentOS6、CentOS7手动修改IP地址
- CentOS7安装Docker,走上虚拟化容器引擎之路
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- SpringBoot2全家桶,快速入门学习开发网站教程
- CentOS7设置SWAP分区,小内存服务器的救世主