初学Python常见异常错误

初学Python常见错误
忘记写冒号
误用=
错误 缩紧
变量没有定义
中英文输入法导致的错误
不同数据类型的拼接
索引位置问题
使用字典中不存在的键
忘了括号
漏传参数
缺失依赖库
使用了python中对关键词
编码问题

  1. 忘记写冒号
    在 if、elif、else、for、while、def语句后面忘记添加 :

age = 42

if age == 42

print('Hello!')

  
  
  • 1

File “”, line 2

if age == 42
        ^
  • 1
  • 2
  • 3

SyntaxError: invalid syntax
2. 误用 =
=是赋值操作,而判断两个值是否相等是==
gender = ‘男’

if gender = ‘男’:

print('Man')

 
 
  • 1

File “”, line 2

if gender = '男':
      ^
  • 1
  • 2
  • 3

SyntaxError: invalid syntax
3. 错误的缩进
Python用缩进区分代码块,常见的错误用法:

print(‘Hello!’)

print(‘Howdy!’)
File “”, line 2

print('Howdy!')

^

  • 1
  • 2
  • 3

IndentationError: unexpected indent
num = 25

if num == 25:

print(‘Hello!’)
File “”, line 3

print('Hello!')
^
  • 1
  • 2
  • 3

IndentationError: expected an indented block
4. 变量没有定义

if city in [‘New York’, ‘Bei Jing’, ‘Tokyo’]:

print('This is a mega city')

 
 
  • 1

NameError Traceback (most recent call last)

in

----> 1 if city in [‘New York’, ‘Bei Jing’, ‘Tokyo’]:

  2     print('This is a mega city')

 
 
  • 1

NameError: name ‘city’ is not defined
5. 中英文输入法导致的错误
英文冒号
英文括号
英文逗号
英文单双引号
if 5>3:

print('5比3大')

 
 
  • 1

File “”, line 1

if 5>3:
  ^
  • 1
  • 2
  • 3

SyntaxError: invalid character in identifier
if 5>3:

print('5比3大')

 
 
  • 1

File “”, line 2

print('5比3大')
        ^
  • 1
  • 2
  • 3

SyntaxError: invalid character in identifier
spam = [1, 2,3]
File “”, line 1

spam = [1, 2,3]
         ^
  • 1
  • 2
  • 3

SyntaxError: invalid character in identifier
if 5>3:

print('5比3大‘)

 
 
  • 1

File “”, line 2

print('5比3大‘)
         ^
  • 1
  • 2
  • 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)

in

----> 1 ‘I have ’ + 12 + ’ eggs.’
TypeError: can only concatenate str (not “int”) to str
[‘a’, ‘b’, ‘c’]+‘def’

TypeError Traceback (most recent call last)

in

----> 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)

in

----> 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)

in

----> 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)

in

  2 grades2 = {'David':88, 'Unique':89}

3

  • 1
  • 2
  • 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)

in

  1 spam = ['cat', 'dog', 'mouse']

 
 
  • 1

----> 2 print(spam[5])
IndexError: list index out of range
8. 使用字典中不存在的键
在字典对象中访问 key 可以使用 [],

但是如果该 key 不存在,就会导致:KeyError: ‘zebra’

spam = {‘cat’: ‘Zophie’,

    'dog': 'Basil',
'mouse': 'Whiskers'}
  • 1
  • 2
  • 3

print(spam[‘zebra’])

KeyError Traceback (most recent call last)

in

  3         'mouse': 'Whiskers'}

4

  • 1
  • 2
  • 3

----> 5 print(spam[‘zebra’])
KeyError: ‘zebra’
为了避免这种情况,可以使用 get 方法

spam = {‘cat’: ‘Zophie’,

    'dog': 'Basil',
'mouse': 'Whiskers'}
  • 1
  • 2
  • 3

print(spam.get(‘zebra’))
None
key 不存在时,get 默认返回 None

  1. 忘了括号
    当函数中传入的是函数或者方法时,容易漏写括号

spam = {‘cat’: ‘Zophie’,

    'dog': 'Basil',
'mouse': 'Whiskers'}
  • 1
  • 2
  • 3

print(spam.get(‘zebra’)
File “”, line 5

print(spam.get('zebra')
                   ^
  • 1
  • 2
  • 3

SyntaxError: unexpected EOF while parsing
10. 漏传参数
def diyadd(x, y, z):

return x+y+z

 
 
  • 1

diyadd(1, 2)

TypeError Traceback (most recent call last)

in

  2     return x+y+z

3

  • 1
  • 2
  • 3

----> 4 diyadd(1, 2)
TypeError: diyadd() missing 1 required positional argument: ‘z’
11. 缺失依赖库
电脑中没有相关的库

  1. 使用了python中的关键词
    如try、except、def、class、object、None、True、False等

try = 5

print(try)
File “”, line 1

try = 5
^
  • 1
  • 2
  • 3

SyntaxError: invalid syntax
def = 6

print(6)
File “”, line 1

def = 6
^
  • 1
  • 2
  • 3

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’: ‘’

面对国内众多的云平台,个人和企业该如何选择呢?可以参考这篇文档:【云服务器推荐】2021年腾讯云、阿里云、华为云服务器价格和配置评测

上一篇:Linux:dd命令


下一篇:python学习笔记3