天天看點

新手初學Python最常犯的十個錯誤,其中有你麼

"IT有得聊”是機械工業出版社旗下IT專業資訊和服務平台,緻力于幫助讀者在廣義的IT領域裡,掌握更專業、實用的知識與技能,快速提升職場競争力。 

1. 忘記寫冒号

在 if、elif、else、for、while、class、def 語句後面忘記添加“:”

if spam == 42
print('Hello!')      

2. 誤用 “=” 做等值比較

“=”是給變量指派,“==”才是判斷兩個值是否相等:

score = 60
if score = 60:
print ('passed')
改正:
score = 60
if score == 60:
print ('passed')      

3. 變量沒有定義:

if age >= 18:
print ('adult')
print ('END')
會導緻:NameError: name ‘age’ is not defined.
改正:
age = 20
if age >= 18:
print ('adult')
print ('END')      

4. 字元串與非字元串連接配接

錯誤:

num = 12
print('I have ' + num+ ' apples.')      

非字元串和字元串連接配接的時候,要将非字元串轉換為字元串類型之後才能連接配接,改正:

num = 12
print('I have ' + str(num)+ ' apples.')      

5. 清單的索引位置

習慣性地認為清單元素的位置是從1開始的:

spam = ['cat', 'dog', 'mouse']
print(spam[3])      

清單元素的位置是從0開始的,是以第3個元素“mouse”的索引位置是2,改正:

spam = ['cat', 'dog', 'mouse']
print(spam[2])      

6. 使用自增 “++” 自減 “—”

學過c語言或者Java的人會很習慣使用i++或者i—,但在Python中是沒有自增自減操作符的:

spam = 0

spam++

這時可以使用 “+=” 來代替 “++”,改正:

spam = 0

spam += 1

7. 使用關鍵字命名變量

Python 3中一共33個關鍵字:

False,None,True,and,as,assert,break,class,continue,def,del,elif,else,except,finally,for,from,
global,if,import,in,is,lambda,nonlocal,not,or,pass,raise,return,try,while,with,yield      

自定義變量時,變量名不能和這些關鍵字重複。

8. 索引元素位置時忘記調用 len 方法

通過索引位置來擷取清單元素時,忘記要先使用 len 函數來擷取清單的長度:

fam = ['dad', 'mom', 'son']
for i in range(fam):
print(fam[i])
改正:
fam = ['dad', 'mom', 'son']
for i in range(len(fam)):
print(fam[i])      

9. 函數中的局部變量指派前被使用

num = 42
def myFunction():
print(num)
num = 100
myFunction()      

第一行定義了一個全局變量num,同時函數myFunction( )也定義了一個同名的局部變量,但程式執行時是先查找局部變量的,是以在函數中找到num之後就不到外部查找了,此時就會出現print的時候變量num還沒指派的錯誤。

10. 縮進問題

和其他語言的文法最大的不同就是,Python不能用括号來表示語句塊,也不能用開始或結束标志符來表示,而是靠縮進來區分代碼塊的。

常見的錯誤用法:

(1)
print('Hello')
print('World!')      

錯誤是第二行的縮進會導緻兩個print語句是包含和被包含的關系,但他們兩者是屬于同一個代碼塊的,是以應該寫成;

print('Hello')
print('World!')

(2)
if spam == 42:
print('Hello')
print('World!')      

錯誤是第三行的縮進,改正的方法有兩種,一是如果兩個print語句是屬于同一代碼塊的,應該改正為

if spam == 42:
print('Hello')
print('World!')      

二是如果第三行的print語句是和if語句是同一級的,則改正為

if spam == 42:
print('Hello')
print('World!')      

(3)在Python 3中,縮進的時候,不能Tab和空格混用,每個縮進層次應該選擇隻使用Tab或者隻使用空格。

新手初學Python最常犯的十個錯誤,其中有你麼