常見類型報錯

小提醒(如何跳出whileTrue死循環的方法:)

1,鼠標點一下終端區,按ctrl+c(windows)command+c(mac)(記得多按幾次)

(1) 遇到無法修改代碼的情況:

  • 刷新網頁,然後修改代碼
  • 關閉頁面重新進入,再去改代碼

(2)可以修改代碼的情況:

  • 將代碼while True改成while False.
  • 將代碼whileTrue加#註釋跳過
  • 故意寫錯代碼(刪掉一個括號),點擊跳過

n+=的意思是n=n+1,!=的意思是不等於

一、TypeError:類型錯誤,對象用來表示值的類型非預期類型時發生的錯誤。

  • 錯誤例子:
age=18

print(‘我的年齡是’+age)
  • 報錯信息:TypeError: can only concatenate str (not "int") to str

(這是類型錯誤,提示必須是一個字符串,不能是數字。)

  • 解決方法1:在使用“+”做拼接的時候,必須使用字符串,把數字轉化成字符串,如str(age)
  • 解決方法2:把”+“改成”,“。這也是一種方法。
  • 方法還有很多,最重要的是我們要理解錯誤的本質到底是什麼?
  • 正確代碼:
age=18

print(‘我的年齡是’+str(age))

二、AttributeError:屬性錯誤,特性引用和賦值失敗時會引發屬性錯誤

  • 錯誤例子:
tuple=('1','3','5')

tuple.append('7')

print(tuple)
  • 報錯信息:AttributeError: 'tuple' object has no attribute 'append'

提示>>屬性錯誤:元組對象沒有“append”的屬性,簡單來說元組是不可變對象

  • 解決方法:把元組換成列表。

三、NameError:試圖訪問的變量名不存在。

  • 舉個簡單的例子,只運行一行print(a),會報錯:NameError: name 'a' is not defined。簡單來說,就是變量a沒有定義,解決方法是在前面給a賦值,比如加上一行 a=1 。
  • 還有一種需要小心處理的是:變量或者函數名拼寫錯誤。如:
name= '卡西'

print('My name is ' + nane)

報錯信息和上面一樣:NameError: name 'nane' is not defined。這類錯誤只要根據報錯信息,細心檢查下拼寫,就能很快解決~

四、SyntaxError:語法錯誤,代碼形式錯誤

 

if name == ‘小李’

print('hello')
  • 報錯信息爲:SyntaxError: invalid syntax

提示是:語法錯誤,非法的語法。

  • 解決方法:

當報錯的時候,要注意回到錯誤信息的那一行,然後從下往上,慢慢查找,此處這個程序就是因爲if語法忘了在判斷語句後面加“:”,所以導致的錯誤。

 

另外,初學者寫代碼時要注意使用英文符號,這是大家經常犯的錯誤。

 

五、KeyError:在讀取字典中的key和value時,如果key不存在,就會觸發KeyError錯誤。

  • 舉個小栗子:
dict={'a':1,'b':2,'c':3}

print(dict['d'])

報錯信息爲:KeyError: 'd'。

  • 第一種解決方法,首先測試key是否存在,然後才進行下一步操作,如:
if 'd' in t:
    print(t['d])
else:
    print('not exist')

六、IndexError:索引錯誤,使用的索引不存在,常索引超出序列範圍,序列中沒有此索引(index)

list1 = [2,3,4,5,6]

print(lsit1[7])
  • 報錯信息:IndexError: list index out of range

提示:索引錯誤,列表索引超出了範圍。

  • 解決辦法:

回頭看列表的長度,索引是要小於列表的長度的。上面的列表長度是5,而索引卻要打印第七個,所以是超出了列表的長度。

七、IndentationError:縮進錯誤

a = 1
b = 2
if a < b:
print(a)
  • 報錯:IndentationError: expected an indented block

原因:縮進有誤,Python的縮進非常嚴格,行首多個空格,少個空格都會報錯。

由於不熟悉python編碼規則,不易查找,所以會成爲新手常犯的一個錯誤。像def,class,if,for,while等代碼塊都需要縮進。

八、TabError: Tab 和空格混用

相鄰的兩句的縮進需要統一使用tab或統一使用空格,不能混用。否則就會出現以下報錯:TabError: inconsistent use of tabs and spaces in indentation。

  • tab鍵本質上是製表符,而不是縮進符,不同的文本編輯器中製表符代表的空格寬度不一,如果代碼需要跨平臺或跨編輯器讀寫,建議不要使用製表符(tab鍵)。
  • 解決方法>>>inconsistent use of tabs and spaces in indentation錯誤處理方法:

把報錯的行光標放到第一個字母前,backspace直接刪除到和上一行接起來,然後按回車就行了。

心得:以上就是一些常見的類型報錯啦,報錯並不可怕,可怕的是一直錯一直不知道怎麼改,所以建議同學你可以多看幾遍上面的題目,然後在實戰的時候,可以有意識的鍛鍊自己代碼增刪改查的能力。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章