App下載

Python常見BUG類型

猿友 2020-12-23 15:29:09 瀏覽數 (4090)
反饋

很多小伙伴,在初學習 Python 的過程中,遇見 BUG 時便手忙腳亂,不知如何是好,今天小編在這給大家總結了一些常見的 BUG 類型及其應對措施,希望小伙伴們認真閱讀做好筆記呢。


錯誤類型 1:語法錯誤

i = 1 

while True :

    i += 1

    if i == 100 :

        return

報錯:

SyntaxError: 'return' outside function

從代碼中不難看出這位小伙伴是想執(zhí)行一個循環(huán)體,當 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 進階


0 人點贊