Я должен решить этот вопрос, но я застрял.Python: напишите программу, чтобы найти период (ы) наибольшего падения цены
Напишите программу, чтобы найти период (ы) наибольшего падения цены, когда указан список цен (ы). Например, если список [300.301.303.299.300.298.301.305], то есть один период наибольшего падения цен: время 2 от с ценой 303 по времени 5 с ценой 298.
Ниже мое решение, но есть недостаток
def maxdrop(p):
high = low = drop = newhigh = 0
for i in range(len(p)):
if p[i] >= p[high]:
newhigh = i # invariant: p[high] <= p[newhigh]
else: # so: p[i] < p[high] <= p[newhigh]
newdrop = p[newhigh] - p[i]
if newdrop >= drop:
high, low, drop = newhigh, i, newdrop
return ((high, p[high]), (low, p[low]), drop)
def test():
p = [20,22,19,20,24,18,21,24,27]
print p, maxdrop(p)
p = list(reversed(p))
print p, maxdrop(p)
if __name__ == "__main__":
test()
Если вы попытаетесь с списком ниже [2,1,2,3,4,3,2]
острейшего падения должны происходит в течение 4,3,2 - 3 последних элементов. Но с моим кодом, выход 2,1 - первые 2 элемента.
Пожалуйста, помогите, спасибо!
вы получите гораздо лучшие результаты с правильно отформатированным кодом. Также, если это домашняя работа, имейте в виду, что некоторые люди захотят, чтобы вы использовали тег [домашняя работа]. Вы должны использовать кнопку редактирования, чтобы исправить форматирование и обработать тегирование. – aaronasterling
@user: добавьте правильный отступ. –
Не могли бы вы объяснить более подробное описание «наибольшего падения»? это временной интервал? является ли наклон проблемой? – vonPetrushev