Вывод отступа Python различен для одного и того же формата кода - PullRequest
1 голос
/ 24 октября 2019

У меня есть 2 кода с одинаковым форматом, но «возвращаемое значение» нужно по-разному сдвигать, чтобы получить правильный ответ, но я не уверен, почему это происходит. Объяснения будут оценены, спасибо!

Код: 1

def get_recession_start():
    '''Returns the year and quarter of the recession start time as a 
    string value in a format such as 2005q3
    A recession is defined as starting with two consecutive quarters of GDP decline, 
    and ending with two consecutive quarters of GDP growth.'''

    gdp = pd.read_excel('gdplev.xls', skiprows=220, header=None)
    gdp = gdp[[4,6]]
    gdp.columns = ['Quarter', 'GDP in billions' ]
    for i in range(len(gdp)):
        if (gdp.iloc[i-2][1] > gdp.iloc[i-1][1]) and (gdp.iloc[i-1][1] > gdp.iloc[i][1]):
            start = gdp.iloc[i-3][0]  
    return start

Я получаю правильный ответ для кода 1, но когда я пытаюсь сделать это для кода 2, я получаю неправильный ответ:

def get_recession_end():
    '''Returns the year and quarter of the recession end time as a 
    string value in a format such as 2005q3'''

    gdp = pd.read_excel('gdplev.xls', skiprows=220, header=None)
    gdp = gdp[[4,6]]
    gdp.columns = ['Quarter', 'GDP in billions' ]
    start = get_recession_start()
    start_index = gdp[gdp['Quarter'] == start].index.tolist()[0]
    gdp = gdp.iloc[start_index: ]
    for i in range(len(gdp)):
        if (gdp.iloc[i-2][1] < gdp.iloc[i-1][1]) and (gdp.iloc[i-1][1] < gdp.iloc[i][1]):
            end = gdp.iloc[i][0]                
    return end

Я должен отступить возвращаемое значение, чтобы получить правильный ответ, но я не уверен, почему, поскольку оператор if в основном совпадает с кодом 1, и я пытаюсь вернуть конечную переменную так же, какЯ сделал с начальной переменной:

def get_recession_end():
    '''Returns the year and quarter of the recession end time as a 
    string value in a format such as 2005q3'''

    gdp = pd.read_excel('gdplev.xls', skiprows=220, header=None)
    gdp = gdp[[4,6]]
    gdp.columns = ['Quarter', 'GDP in billions' ]
    start = get_recession_start()
    start_index = gdp[gdp['Quarter'] == start].index.tolist()[0]
    gdp = gdp.iloc[start_index: ]
    for i in range(len(gdp)):
        if (gdp.iloc[i-2][1] < gdp.iloc[i-1][1]) and (gdp.iloc[i-1][1] < gdp.iloc[i][1]):
            end = gdp.iloc[i][0]
            return end
...