入门python常见报错

23 篇文章 0 订阅
7 篇文章 0 订阅

1.NameError变量名错误

报错:

print(a)
# Traceback (most recent call last):
# File "<stdin>", line 1, in <module>
# NameError: name 'a' is not defined

解决方案:

先要给a赋值。才能使用它。在实际编写代码过程中,报NameError错误时,查看该变量是否赋值,或者是否有大小写不一致错误,或者说不小心将变量名写错了。

注:在Python中,无需显示变量声明语句,变量在第一次被赋值时自动声明。

a=1
print(a)

2.IndentationError代码缩进错误

代码:

a=1
b=2
if a<b:
print a

报错:

IndentationError: expected an indented block 期待一个缩进的空格

原因:

python的缩进非常严格,行首多个空格,少个空格都会报错。像def,class,if,for,while等代码块都需要缩进。

解决方案:使用pycharm , 临时用其他软件打开脚本时候尽量不要修改代码.

3.AttributeError对象属性错误

报错:

import sys
sys.Path()
# Traceback (most recent call last):
# File "<stdin>", line 1, in <module>
# AttributeError: 'module' object has no attribute 'Path'

原因:

sys模块没有Path属性(attribute)。

解决方案:

python对大小写敏感,Path和path代表不同的变量。将Path改为path即可。

凡是内置的python包,都是有提示的, 只要写出"模块名." 就会有提示. 如果是自定义的包/类, 一般是也有代码提示的, 如果点出了一个不存在的属性,pycharm会有提示红色波浪线或者黄色区域 (前提是要 正确地导包 ).

我们这边的项目的路径设置地有些不合理, 很多导包不规范, 导致很多代码没有提示, 导包的代码下有红色的波浪线 , 同时有的也没法go to Declaration(快捷键: Ctrl + B, 或者 Ctrl +单击 ). 因此需要自己单独去找.

若想看某模块有哪些属性, 可使用dir() eg:查看sys模块有哪些属性: dir(sys)

4.TypeError类型错误

4.1入参类型错误

代码:

t=('a','b','c')
for i in range(t):
    print(a[i])

报错:

TypeError: range() integer end argument expected, got tuple.

原因:

range()函数期望的入参是整型(integer),但却给的入参为元组(tuple)

解决方案:

将入参元组t改为元组个数整型len(t)

将range(t)改为range(len(t))

4.2入参个数错误

def para_amount(a,b,c):
    print(a,b,c)
# 少传参数:
para_amount(1,2)
# TypeError: para_amount() missing 1 required positional argument: 'c'
# 多传参数
para_amount(1,2,3,4)
# TypeError: para_amount() takes 3 positional arguments but 4 were given

import os
os.listdir()
# Traceback (most recent call last):
# File "<stdin>", line 1, in <module>
# TypeError: listdir() takes exactly 1 argument (0 given)

注意: 类的方法在定义时含有self, 但是我们在实例化这个类的对象后,传参时候不需要再给self传参数,而是直接传self后的参数(如果有的话)

4.3非函数却以函数来调用

报错:

testList = [1,2,3]
testList()
# TypeError: 'list' object is not callable 

5.IOError输入输出错误

5.1文件不存在报错

报错:

f=open("Hello.py")
# Traceback (most recent call last):
# File "<stdin>", line 1, in <module>
# IOError: [Errno 2] No such file or directory: 'Hello.py'

原因:

open()函数没有指明mode,默认为只读方式,如果该目录下没有Hello.py的文件,则会报错,可查看是否拼写有错误,或者是否大小写错误,或者根本不存在这个文件。

5.2因文件权限问题报错

报错:

f=open("hello.py")
f.write("test")
# IOError: File not open for writing

原因:

open(“hello.py”)如果入参没有加读写模式参数mode,说明默认打开文件的方式为只读方式,而此时又要写入字符,所以权限受限,才会报错。

解决方案:

更改模式

f=open("hello.py",'w+')
f.write("test")
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值