【Python】python對齊問題的總結
阿新 • • 發佈:2019-01-24
Python的對齊方式很重要,對齊方式決定了函式或者判斷條件的作用域。
def print_circle(matrix,up_hang,up_lie,down_hang,down_lie):
result=[]
if up_lie==down_hang and down_hang==down_lie:
result.append(matrix[up_hang][up_lie])
elif up_lie==down_hang or up_lie==down_lie:
if up_lie==down_hang:
while up_lie <= down_lie:
result.append(matrix[up_hang][up_lie])
up_lie+=1
elif up_lie==down_lie:
while up_hang <=down_hang:
result.append(matrix[up_hang][up_lie])
up_hang+=1
# return result #注意對齊方式,其決定了作用的區間範圍,很關鍵 #<1>
return result #<2>
如上面程式碼所示,開始的時候在<1>處新增的程式碼,所有結果總是出錯。因為<1>沒有縮排,其作用域已經不在if判斷的作用域之內,其作用域是print_circle,所以這將導致函式直接返回result 而使該函式下面的程式碼無法其作用。後來改成<2>處的樣子才編譯成功。
還有一個比較坑爹的地方就是Python對於多行註釋的註釋符來說也是需要對齊的!(之前吃了不少這方面的虧)。如下面的程式碼,我曾百思不得其解
總是在加上使用'''多行註釋符之後總是在"i=up_hang"行報錯"unexpected indent"(非法縮排), 而只有把註釋符去掉程式就沒錯了,很是鬱悶。後來通過問過大神才知道原來Python還有註釋符也需要縮排這一說!所以程式碼改為:def print_circle(matrix,up_hang,up_lie,down_hang,down_lie): result=[] ''' if up_lie==down_hang or up_lie==down_lie: if up_lie==down_hang: while up_lie <= down_lie: result.append(matrix[up_hang][up_lie]) up_lie+=1 elif up_lie==down_lie: while up_hang <=down_hang: result.append(matrix[up_hang][up_lie]) up_hang+=1 return result ''' i=up_hang j=up_lie while j<down_lie: result.append(matrix[i][j]) j+=1 while i<down_hang: result.append(matrix[i][j]) i+=1 return result
終於這次沒有報錯了!def print_circle(matrix,up_hang,up_lie,down_hang,down_lie): result=[] ''' if up_lie==down_hang or up_lie==down_lie: if up_lie==down_hang: while up_lie <= down_lie: result.append(matrix[up_hang][up_lie]) up_lie+=1 elif up_lie==down_lie: while up_hang <=down_hang: result.append(matrix[up_hang][up_lie]) up_hang+=1 return result ''' i=up_hang j=up_lie while j<down_lie: