Python入門容易掉進的10個坑

相比於其他語言,Python的語法比較簡單易學,但一旦不注意細節,剛入門的新手很容易就會掉進語法錯誤的坑裡。

1. 忘記寫冒號

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

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

2. 誤用 「=」 做等值比較

「=」是給變數賦值,「==」才是判斷兩個值是否相等:

score = 60nif score = 60:n print (passed)n

改正:

score = 60nif score == 60:n print (passed)n

3. 變數沒有定義:

if age >= 18:n print (adult)nprint (END)n

會導致:NameError: name age is not defined.

改正:

age = 20nif age >= 18:n print (adult)nprint (END)n

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

錯誤:

num = 12nprint(I have + num+ apples.)n

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

num = 12nprint(I have + str(num)+ apples.)n

5. 列表的索引位置

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

spam = [cat, dog, mouse]nprint(spam[3])n

列表元素的位置是從0開始的,所以第3個元素「mouse」的索引位置是2,改正:

spam = [cat, dog, mouse]nprint(spam[2])n

6. 使用自增 「++」 自減 「--」

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

spam = 0nspam++n

這時可以使用 「+=」 來代替 「++」,改正:

spam = 0nspam += 1n

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]nnfor i in range(fam):nnprint(fam[i])n

改正:

fam = [dad, mom, son]nnfor i in range(len(fam)):nnprint(fam[i]) n

9. 函數中的局部變數賦值前被使用

num = 42nndef myFunction():n print(num)n num = 100nnmyFunction()n

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

10. 縮進問題

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

常見的錯誤用法:

(1)

print(Hello)n print(World!)n

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

print(Hello)nprint(World!)n

(2)

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

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

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

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

if spam == 42:n print(Hello)nnprint(World!)n

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

以上內容轉載自編程少年青少年編程愛好者學習交流社區 - 編程少年

今日原創遊戲推薦:球球大作戰(單人版)

PS:編程少年社區中的原創遊戲是孩子們自己的作品,請點入鏈接並準備打分或評論的知友考慮到這一點,並多給予鼓勵,謝謝大家。


推薦閱讀:

編程中的庫(包)是具體怎麼實現的,庫對於一個語言而言是不是非常重要?
TIOBE:全球編程語言最新排名(Kotlin排名進入前50名
TIOBE 10月編程語言排行榜 : GO 問鼎本年度語言 ?
答讀者問:函數重載

TAG:Python | Python入门 | 编程语言 |