python缩进格式错误的是_19个常见的python错误和异常
19個常見的python錯誤和異常
錯誤總是不可避免,尤其是在初學階段,本文收集整理了1個常見的python錯誤
1. 忘記添加:
在if, elif, else, for, while, class,或者使用def定義函數的名稱后面忘記添加:,就會引發 SyntaxError
if 3 > 4
print('ok')
這是一種非常明顯的錯誤,大多數編輯器在你寫代碼的時候就會用紅色的波浪線提示你
2. 誤將 = 當做 ==
a = 4
if a = 4:
print('ok')
即便是多年編程經驗的老手也會偶爾犯這種錯誤,寫的太著急了,就少打了一個=,得到的自然也是SyntaxError
3. 錯誤的縮進空格數量
if 1==1:
print('1')
print('2')
這段代碼將引發錯誤“IndentationError: unindent does not match any outer indentation level” ,一次縮進是4個空格,這一點務必要牢記
4. 錯誤使用range函數
lst = [1, 2, 3]
for i in range(lst):
print(lst[i])
這段代碼的本意是通過索引來遍歷列表,但錯誤的使用了range函數,引發了錯誤“TypeError: 'list' object cannot be interpreted as an integer”, 正確的做法如下
lst = [1, 2, 3]
for i in range(len(lst)):
print(lst[i])
5. 嘗試修改字符串的內容
字符串是不可變對象,無法修改字符串里的內容,下面的代碼將會引發錯誤“TypeError: 'str' object does not support item assignment”
s = "i like python"
s[0] = 'I'
print(s[0])
6. 嘗試將非字符串數據與字符串連接
print('I have ' + 3 + " books")
上面的代碼嘗試將字符串與int類型數據連接在一起,由于他們類型不同,會導致錯誤“TypeError: must be str, not int”
7. 字符串缺少引號
print('hello world)
創建字符串可以是用一對單引號,或者一對雙引號,或者一對""", 上面的代碼會引發錯誤“SyntaxError: EOL while scanning string literal”
8. 使用未定義的變量
sname = "lilei"
print('my name is ' + name)
print語句中需要用到的變量name事先并沒有被定義,就會引發錯誤“NameError: name 'name' is not defined”
9. 調用對象沒有的方法
string = 'PYTHON'
# 經過一些操作后,string變成了None
string = None
print(string.lower())
string原本是字符串,但進過一些操作后,變成了其他對象,可能是int,或者None,不論變成什么,總是它都不再是字符串,沒有了lower方法,這時你再去調用lower方法就會報錯“AttributeError: 'NoneType' object has no attribute 'lower'”
10. 訪問不存在的索引
lst = [1, 2, 3]
print(lst[6])
列表最大的索引是2,代碼里嘗試訪問索引6就會引發索引錯誤“IndexError: list index out of range”
11. 使用一個不存在的key
需要通過key來操作字典,如果key不存在,就會引發錯誤“KeyError”
dic = {
'name': 'lili',
'age': 14
}
print(dic['sex'])
12. 使用保留字做變量
class = 'python'
print(class)
python的保留字不能作為變量,上面的代碼會引發錯誤“SyntaxError”
13. 使用不存在的內置函數
lst = [1, 2, 3]
print(avg(lst))
這個錯誤與第8個錯誤相似,都是使用了一個不存在的對象
14. 在函數內修改全局不可變對象
這是一個比較復雜的錯誤,先來看下面的代碼
a = 10
def func():
print(a)
func()
程序正常執行,可以輸出10,對代碼稍作修改
a = 10
def func():
print(a)
a = 20
func()
多了一行a = 20后,再次運行代碼就會報錯“UnboundLocalError: local variable 'a' referenced before assignment”,為什么會這樣呢?a原本是一個全局變量,在第一段代碼里可以正常訪問,但是第二段代碼里嘗試對變量a進行修改,一旦有了修改這個動作,解釋器就認為變量a是一個局部變量,而不在是全局變量。那么在a = 20這條語句之前嘗試輸出a的內容就會報錯因為在執行print(a)時,局部變量a還不存在。
15. 修改range的返回值
lst = range(10)
lst[0] = 20
print(lst)
range函數創建一個整數序列,但這個序列并不是列表,而是一個迭代器,無法使用索引來進行任何操作,否則就會引發錯誤"TypeError: 'range' object does not support item assignment"
16. 使用 ++ 或 --操作
a = 0
a++
print(a)
很多語言都支持 ++ 操作,但很遺憾python并不支持,上面的代碼會報錯“SyntaxError: invalid syntax”,上面的代碼可以修改成這樣
a = 0
a += 1
print(a)
17. 函數調用時參數數量錯誤
錯誤1
def func(a, b):
return a + b
print(func(4))
錯誤2
def func(a, b):
return a + b
print(func(4, 4, 5))
函數需要兩個參數,錯誤1里在調用函數時只提供了1個參數,錯誤2里提供了3個錯誤,都會引發TypeError,錯誤內容分別是“TypeError: func() missing 1 required positional argument: 'b'” 和 “TypeError: func() takes 2 positional arguments but 3 were given”
18. 缺少安裝包
import requests
如果你并沒有安裝requests庫,程序在執行時就會報錯“ImportError: No module named requests”,不要慌,使用pip安裝就好了
19. 文件路徑錯誤
f = open('a.txt')
print(f.read())
如果根本不存在a.txt這個文件,那么就會報錯“FileNotFoundError: [Errno 2] No such file or directory: 'a.txt'”, 打開一個不存在的文件,就會引發FileNotFoundError。這個錯誤,對于初學者來說來煩惱了,尤其是windows用戶,他們有時候會信誓旦旦的說,這個文件存在啊!
程序是不會騙人的,它說不存在,就一定是不存在,你的文件地址一定是錯了,檢查一下路徑里究竟用的是/ 還是 \\, 另外檢查一下是不是隱藏了文件的后綴。
總結
以上是生活随笔為你收集整理的python缩进格式错误的是_19个常见的python错误和异常的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 天大校花,博士发Nature,30岁不到
- 下一篇: 【生活科普】这7个影视剧的经典桥段,骗了