800819103
在線客服,實時響應qq群
在線客服,實時響應客服電話
13318873961
互聯網的高速發展,吸引了許多人進入互聯網工作,自學的也不少,遇到的問題也多,那么在學習Python的過程中掉過哪些坑?新手學Python容易犯的錯有哪些?本文就學習Python,提醒新手們要注意避免的一些事情。
雖然Python的語法比較簡單易學,但一旦不注意細節,剛入門的新手很容易就會掉進語法錯誤的坑里。比如:
在 if、elif、else、for、while、class、def 語句后面忘記添加“:”
if spam == 42
print('Hello!')
“=”是給變量賦值,“==”才是判斷兩個值是否相等:
score = 60
if score = 60:
print ('passed')
改正:
score = 60
if score == 60:
print ('passed')
if age >= 18:
print ('adult')
print ('END')
會導致:NameError: name ‘age’ is not defined.
改正:
age = 20
if age >= 18:
print ('adult')
print ('END')
錯誤:
num = 12
print('I have ' + num+ ' apples.')
非字符串和字符串連接的時候,要將非字符串轉換為字符串類型之后才能連接,改正:
num = 12
print('I have ' + str(num)+ ' apples.')
習慣性地認為列表元素的位置是從1開始的:
spam = ['cat', 'dog', 'mouse']
print(spam[3])
列表元素的位置是從0開始的,所以第3個元素“mouse”的索引位置是2,改正:
spam = ['cat', 'dog', 'mouse']
print(spam[2])
學過c語言或者Java的人會很習慣使用i++或者i—,但在Python中是沒有自增自減操作符的:
spam = 0
spam++
這時可以使用 “+=” 來代替 “++”,改正:
spam = 0
spam += 1
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
自定義變量時,變量名不能和這些關鍵字重復。
通過索引位置來獲取列表元素時,忘記要先使用 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])
num = 42
def myFunction():
print(num)
num = 100
myFunction()
第一行定義了一個全局變量num,同時函數myFunction( )也定義了一個同名的局部變量,但程序執行時是先查找局部變量的,所以在函數中找到num之后就不到外部查找了,此時就會出現print的時候變量num還沒賦值的錯誤。
和其他語言的語法最大的不同就是,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的過程中掉過哪些坑,歡迎留言參與討論。