python identifier expected

初学python常见错误

忘记写冒号

误用=

错误 缩紧

变量没有定义

中英文输入法导致的错误

不同数据类型的拼接

索引位置问题

使用字典中不存在的键

忘了括号

漏传参数

缺失依赖库

使用了python中对关键词

编码问题

1. 忘记写冒号

在 if、elif、else、for、while、def语句后面忘记添加 :

age = 42

if age == 42

print('hello!')

file '', line 2

if age == 42

^

syntaxerror: invalid syntax

2. 误用 =

=` 是赋值操作,而判断两个值是否相等是 `==

gender = '男'

if gender = '男':

print('man')

file '', line 2

if gender = '男':

^

syntaxerror: invalid syntax

3. 错误的缩进

python用缩进区分代码块,常见的错误用法:

print('hello!')

print('howdy!')

file '', line 2

print('howdy!')

^

indentationerror: unexpected indent

num = 25

if num == 25:

print('hello!')

file '', 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)

in

----> 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 '', line 1

if 5>3:

^

syntaxerror: invalid character in identifier

if 5>3:

print('5比3大')

file '', line 2

print('5比3大')

^

syntaxerror: invalid character in identifier

spam = [1, 2,3]

file '', line 1

spam = [1, 2,3]

^

syntaxerror: invalid character in identifier

if 5>3:

print('5比3大')

file '', line 2

print('5比3大')

^

syntaxerror: eol while scanning string literal

6. 不同数据类型的拼接

字符串/列表/元组 支持拼接

字典/集合不支持拼接

'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

----> 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']

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

in

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

in

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 '', line 1

try = 5

^

syntaxerror: invalid syntax

def = 6

print(6)

file '', 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': ''

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

(0)

相关推荐