3.x版本python常见报错

时间:2022-11-30 20:12:49
使用3.6版本python学习《python基础教程》报错整理

1、>>> print "Hello,world!"
SyntaxError: Missing parentheses in call to 'print'

问题原因:3.x版本中print是一个函数,需要加上括号
>>> print ("Hello,world!")
Hello,world!

2、>>> x=input("x: ")
x: 2
>>> y=input("y: ")
y: 3
>>> print (x*y)
Traceback (most recent call last):
  File "", line 1, in
    print(x*y)
TypeError: can't multiply sequence by non-int of type 'str'

问题原因:3.x版本的input函数默认返回字符串类型
>>> print(int(x)*int(y))

3、将脚本
name = raw_input("What is your name?")
print ("Hello,"+ name + "!")
保存后运行,报错如下

============== RESTART: D:/Python/Python36-32/scripts/hello.py==============
Traceback (most recent call last):
  File "D:/Python/Python36-32/scripts/hello.py",line 1, in
    name =raw_input("What is your name?")
NameError: name 'raw_input' is not defined

问题原因:3.x版本之后使用input函数

name = input("What is your name?")


4、使用字典方法has_key报错

>>> d={}
>>> d.has_key('name')
Traceback (most recent call last):
  File "<pyshell#1>", line 1, in <module>
    d.has_key('name')
AttributeError: 'dict' object has no attribute 'has_key'

问题原因:3.x版本之后不包括此函数。

可用成员资格运算符 in 代替

>>> 'name' in d
True

5、SyntaxError: unexpected indent

缩进错误

6、使用shelve.open('E:\python\database.dat')出现dbm.error: db type could not be determined

问题原因:数据处理模块shelve会自动为文件添加扩展名

解决办法:去掉.bat即可