前言
Python 以其簡單易懂的語法格式與其它語言形成鮮明對比,初學者遇到最多的問題就是不按照 Python 的規則來寫,即便是有編程經驗的程序員,也容易按照固有的思維和語法格式來寫 Python 代碼,之前小編給大家分享過了一篇《Python新手們容易犯的幾個錯誤總結》,但總結的不夠全面,最近看到有一個外國小伙總結了一些大家常犯的錯誤,16 Common Python Runtime Errors Beginners Find,索性我把他翻譯過來并在原來的基礎補充了我的一些理解,希望可以讓你避開這些坑。
0、忘記寫冒號
在 if、elif、else、for、while、class、def 語句后面忘記添加 “:”
if spam == 42 print('Hello!')
導致:SyntaxError: invalid syntax
1、誤用 “=” 做等值比較
“=” 是賦值操作,而判斷兩個值是否相等是 “==”
if spam = 42: print('Hello!')
導致:SyntaxError: invalid syntax
2、使用錯誤的縮進
Python用縮進區分代碼塊,常見的錯誤用法:
print('Hello!') print('Howdy!')
導致:IndentationError: unexpected indent
。同一個代碼塊中的每行代碼都必須保持一致的縮進量
if spam == 42: print('Hello!') print('Howdy!')
導致:IndentationError: unindent does not match any outer indentation level
。代碼塊結束之后縮進恢復到原來的位置
if spam == 42:print('Hello!')
導致:IndentationError: expected an indented block
,“:” 后面要使用縮進
3、變量沒有定義
if spam == 42: print('Hello!')
導致:NameError: name 'spam' is not defined
4、獲取列表元素索引位置忘記調用 len 方法
通過索引位置獲取元素的時候,忘記使用 len 函數獲取列表的長度。
spam = ['cat', 'dog', 'mouse']for i in range(spam): print(spam[i])
導致:TypeError: range() integer end argument expected, got list
. 正確的做法是:
spam = ['cat', 'dog', 'mouse']for i in range(len(spam)): print(spam[i])
當然,更 Pythonic 的寫法是用 enumerate
spam = ['cat', 'dog', 'mouse']for i, item in enumerate(spam): print(i, item)
5、修改字符串
字符串一個序列對象,支持用索引獲取元素,但它和列表對象不同,字符串是不可變對象,不支持修改。
spam = 'I have a pet cat.'spam[13] = 'r'print(spam)
導致:TypeError: 'str' object does not support item assignment
正確地做法應該是:
spam = 'I have a pet cat.'spam = spam[:13] + 'r' + spam[14:]print(spam)
6、字符串與非字符串連接
新聞熱點
疑難解答