python关于缩进_python缩进符号(Python.org)
在寫作文的時(shí)候,老師會(huì)告訴我們每段要空兩格,這兩個(gè)空格標(biāo)志著一個(gè)新的段落開始了。在編寫程序的時(shí)候,我們也要采用類似的方式,通過縮進(jìn)來表示代碼塊的開始和結(jié)束。
認(rèn)識(shí)縮進(jìn)
在之前學(xué)過的的例子中,我們所編寫的都是簡單的表達(dá)式語句,沒有縮進(jìn)。但是,要?jiǎng)?chuàng)建復(fù)合語句,就需要用到縮進(jìn)這個(gè)重要的概念。
我們可以把許多代碼行組織到一個(gè)代碼塊中,其中的每一行代碼的開始,都保持相同的空格數(shù),通過查看代碼行前面的空格數(shù),就可以判斷代碼塊的起始和結(jié)束,而這個(gè)空格數(shù)就是縮進(jìn)。
Python 根據(jù)縮進(jìn)來判斷當(dāng)前代碼行和前面代碼行的關(guān)系。縮進(jìn)的好處是讓代碼看上去更加清晰易讀,如果代碼段比較長,通過縮進(jìn),我們可以快速了解程序的組織結(jié)構(gòu),而且也不容易出錯(cuò)。
下面,我們來看一個(gè)有很多行代碼的例子。因?yàn)槌绦虻拇a段比較長,如果沒有縮進(jìn),我們會(huì)很難分清代碼的組織結(jié)構(gòu)。這段代碼只是想說明縮進(jìn)的重要性,具體含義大家可以不必關(guān)心,代碼如下。
letter = input(“please input:”)
if letter == ‘S’:
print (‘please input second letter:’)
letter = input(“please input:”)
if letter == ‘a’:
print (‘Saturday’)
elif letter == ‘u’:
print (‘Sunday’)
else:
print (‘data error’)
elif letter == ‘F’:
print (‘Friday’)
elif letter == ‘M’:
print (‘Monday’)
elif letter == ‘T’:
print (‘please input second letter’)
letter = input(“please input:”)
if letter == ‘u’:
print (‘Tuesday’)
elif letter == ‘h’:
print (‘Thursday’)
else:
print (‘data error’)
elif letter == ‘W’:
print (‘Wednesday’)
else:
print (‘data error’)
提示:很少有哪種語言能像 Python 這樣重視縮進(jìn)。對(duì)于其他語言而言,縮進(jìn)對(duì)于代碼的編寫來說是“有了更好”,而并不是“沒有不行”,因?yàn)榭s進(jìn)只是代碼書寫風(fēng)格的問題。
但是,對(duì)于 Python 語言而言,縮進(jìn)則是一種語法,它可以告訴我們 Python 代碼從哪里開始,到哪里結(jié)束。Python 中的復(fù)合語句是通過縮進(jìn)來表示的。這樣做的好處就是減少了程序員的自由度,有利于統(tǒng)一風(fēng)格,使得人們?cè)陂喿x代碼時(shí)會(huì)更加輕松。
但是,在編寫 Python 程序的時(shí)候,我們也要記住,如果縮進(jìn)不正確,程序可能無法運(yùn)行或者會(huì)出錯(cuò)。
Python 縮進(jìn)的長度
將代碼塊縮進(jìn)多長并不重要,只要保證整個(gè)代碼塊的縮進(jìn)程度是一樣的就可以了。為此,IDLE 提供了自動(dòng)縮進(jìn)功能,它能將光標(biāo)定位到下一行的指定位置。
當(dāng)我們鍵入類似于 if 這樣與控制結(jié)構(gòu)對(duì)應(yīng)的關(guān)鍵字之后,按下回車鍵,IDLE 就會(huì)啟動(dòng)自動(dòng)縮進(jìn)功能,代碼如下。
if 3>2 :
print(“Three is greater than two”)
一般情況下,IDLE 將代碼縮進(jìn)一級(jí)是 4 個(gè)空格。如果想改變這個(gè)默認(rèn)的縮進(jìn)量的話,可以從“Format”菜單選擇“New Indent Width”命令,如圖 1 所示。
圖 1
在彈出的窗口中,默認(rèn)是 4 個(gè)空格,我們也可以按照自己的需要,修改這個(gè)值,如圖 2 所示。
圖 2
對(duì)初學(xué)者來說,需要注意的是:盡管自動(dòng)縮進(jìn)功能非常方便,但是我們不能完全依賴它,因?yàn)橛袝r(shí)候自動(dòng)縮進(jìn)未必完全符合我們的要求,所以,寫完程序,還需要仔細(xì)檢查一下。
Python 常見的縮進(jìn)問題
遺漏縮進(jìn)
我們前面介紹過,在 if 句后面且屬于條件組成部分的代碼行,是需要縮進(jìn)的。如果像下面的代碼一樣(代碼如下),忘記了縮進(jìn):
if 3>2 :
print(“Three is greater than two”)
那么,編譯的時(shí)候,Python 會(huì)告訴我們這里有語法錯(cuò)誤,需要一個(gè)縮進(jìn),錯(cuò)誤信息如圖 3 所示。
圖 3
通常,對(duì)緊跟在 if 語句之后的代碼行增加縮進(jìn)后,就個(gè)錯(cuò)誤就會(huì)消失。
增加沒有必要的縮進(jìn)
如果在不需要縮進(jìn)的地方,不小心增加了縮進(jìn),會(huì)出現(xiàn)什么樣的情況呢?我們來看一段代碼,它在不需要縮進(jìn)的地方增加了縮進(jìn),代碼如下。
print (“This is an apple”)
print(“This is a banana”)
編譯的時(shí)候,Python 會(huì)給出錯(cuò)誤提示,告知這里有不該出現(xiàn)的縮進(jìn),如圖 4 所示。
圖 4
縮進(jìn)導(dǎo)致程序的邏輯錯(cuò)誤
前面介紹的遺漏縮進(jìn)和增加冗余的縮進(jìn)這兩種情況,都是語法錯(cuò)誤,由我們自己根據(jù)運(yùn)行程序所得到的結(jié)果是否和預(yù)期的結(jié)果相同來做出判斷。
我們來看一個(gè)示例。假設(shè)有這樣一個(gè)程序,它讓用戶輸入一個(gè)數(shù)字,然后根據(jù)這個(gè)數(shù)字給出用戶提示。當(dāng)輸入的數(shù)字大于 10 時(shí),會(huì)提示數(shù)字大于 10 并且將其重新設(shè)置為 0,如果用戶輸入的數(shù)字不大于 10,那么直接顯示該數(shù)字,代碼如下。
number=input(“Please input a number: “)
if (int(number)>10):
print(“Your number is greater than ten and reset it zero”)
number=”0″
print(“Your number is: “+number)
當(dāng)我們輸入 1 的時(shí)候,因?yàn)?1 不大于 10,所以會(huì)直接顯示 “Your number is:1″。如果輸入 18的時(shí)候,因?yàn)?18 大于 10,所以 number 會(huì)被重置為 0,顯示內(nèi)容就成為 “Your number is:0″,如圖 5 所示。
圖 5
接下來,我們修改一下代碼的縮進(jìn),代碼如下。
number=input(“Please input a number: “)
if (int(number)>10):
print(“Your number is greater than ten and reset it zero”)
number=”0″
print(“Your number is: “+number)
可以看到,number=”0″ 這條語句現(xiàn)在沒有了縮進(jìn),這意味著無論輸入的數(shù)字是否大于 0,都會(huì)將 number 重新設(shè)置為“0”,如圖 6 所示。
圖 6
盡管我們輸入的數(shù)字還是 1 和 18,但是得到的結(jié)果卻都是 “Your number is 0″。可以看到,縮進(jìn)有時(shí)會(huì)影響到整個(gè)程序的邏輯。
總結(jié)
以上是生活随笔為你收集整理的python关于缩进_python缩进符号(Python.org)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SAP Pricing的access s
- 下一篇: S4 KNUMH的设计原理