У меня есть 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