很多小伙伴,在初学习 Python 的过程中,遇见 BUG 时便手忙脚乱,不知如何是好,今天小编在这给大家总结了一些常见的 BUG 类型及其应对措施,希望小伙伴们认真阅读做好笔记呢。
错误类型 1:语法错误
i = 1
while True :
i += 1
if i == 100 :
return
报错:
SyntaxError: 'return' outside function
从代码中不难看出这位小伙伴是想执行一个循环体,当 i 的值等于 100 时停止计算并返回,而 return 不能够再方法以外使用。
解决方法:
i = 1
while True :
i += 1
if i == 100 :
break
错误类型 2:类型错误
name = '老王'
age = 50
print('我是' + name + ',年龄' + age)
报错:
TypeError: must be str, not int
从代码中可以看出该为小伙伴是想将名字和年龄做一个组合输出,但在进行 + 拼接时,必须使用字符串,而年龄却是 int 类型。
解决办法:将 int 类型数据转成字符串。
name = '老王'
age = 50
print('我是' + name + ',年龄' + str(age))
错误类型 3:语法错误
name = '老王'
if name = '老王':
print('Hello')
报错:
SyntaxError: invalid syntax
此处看似是在判断 name 是否为'小王'如果是则输出 'Hello',但却忽略了 '=' 符号是赋值符,'==' 才是比较符。
解决方法:
name = '老王'
if name == '老王':
print('Hello')
错误类型 4:缩进错误
name = '老王'
for index in range(10):
if name == '老王':
print('Hello')
else:
print('No body')
报错:
IndentationError: unindent does not match any outer indentation level
该类型报错较为常见,也比较不应该,主要还是由于粗心大意而忽视了语法的缩进符。
解决方法:使用 4 个空格代表缩进,或摁 tab 实现自动缩进。
name = '老王'
for index in range(10):
if name == '老王':
print('Hello')
else:
print('No body')
错误类型 5:索引错误
text = 'hello world'
print(text[11])
报错:
IndexError: string index out of range
该类型的错误为所需提取的字符串超出了范围,记住字符串下标是从 0 开始计数的,而不是从 1 开始,另外字符串内的空格也是计数的。
错误类型 6:值错误
text = 'Hello World'
result = text.index('你好')
print(result)
报错:
ValueError: substring not found
该类型错误是用户想要在字符串中查找不存在的字符串,查找字符串时先确认原字符串是否有我们需要的子字符串。
错误类型 7:索引错误
list1 = ['迪迦','赛文','塞罗','艾斯']
print(list1[4])
报错:
IndexError: list index out of range
该用户是想取出列表中的最后一个位置的信息,但取值超出了列表范围或列表不存在,记住列表的下标也是从 0 开始计数的。
解决办法:
list1 = ['迪迦','赛文','塞罗','艾斯']
#方法一
print(list1[3])
#方法二
print(list1[-1])
错误类型 8:属性错误
tp1 = ('to', 'be', 'or', 'not', 'to', 'be')
tp1.remove('to')
报错:
AttributeError: 'tuple' object has no attribute 'remove'
可以看出用户是想将元组的 'to' 信息删除,然而却忽略了元组没有 remove 方法。
解决方法:将元组转换成列表后进行删除操作。
tp1 = ('to', 'be', 'or', 'not', 'to', 'be')
list1 = list(tp1)
list1.remove('to')
错误类型 9:键错误
dic1 = {
'name':'老王',
'age':50,
'friend':['孙子','孔子','老子','迪迦']
}
print(dic1['height'])
报错:
KeyError: 'height'
key 键错误:没有指定的键值 'height' ,从用户定义的字典不难看出里面并无 'height' 这个键,而用户却像从中取没有的值,不难免报错了。
错误类型 10:类型错误
dic1 = {
'name':'老王',
'age':50,
'friend':['孙子','孔子','老子','迪迦']
}
dic1.pop()
报错:
TypeError: pop expected at least 1 arguments, got 0
使用 pop() 方法时至少需要传入一个参数,但用户并没有进行传参操作。
以上便是小编为大家总结出来的几种常见 BUG 类型,特别对于初学者来说,应该好好琢磨下,如何根据报错的类型,分析修改完善自己所写的代码,孰能生巧,只要肯用心,这些 BUG 都不足挂齿!!!
好课推荐:Python3 入门、Python3 进阶