1. 程式人生 > >【Python】python對齊問題的總結

【Python】python對齊問題的總結

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對於多行註釋的註釋符來說也是需要對齊的!(之前吃了不少這方面的虧)。如下面的程式碼,我曾百思不得其解

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
總是在加上使用'''多行註釋符之後總是在"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:
終於這次沒有報錯了!