Как сравнить ежедневную цену с последними 5 днями? - PullRequest
0 голосов
/ 01 апреля 2019

Я хочу выяснить, превышает ли дневная цена последние 5 последних дней.Я новичок в программировании.Но даже я знаю, что это много кода.

DAILY_PRICE = [ 1,2,3,6,5,6,7,8,5,6,7,6,7,5] 
COMMENT =  IN REALITY DAILY_PRICE LIST IS FULL OF STOCK PRICES

PRICE = DAILY_PRICE[-1]
PRICE1 = DAILY_PRICE[-2]
PRICE2 = DAILY_PRICE[-3]
PRICE3 = DAILY_PRICE[-4]
PRICE4 = DAILY_PRICE[-5]
PRICE5 = DAILY_PRICE[-6]

if PRICE > PRICE1:
    print("YES")
else:
    print("NO")

if PRICE > PRICE1 and PRICE > PRICE2:
    print("YES")
else:
    print("NO")
if PRICE > PRICE1 and PRICE > PRICE2 and PRICE > PRICE3:
    print("YES")
else:
    print("NO")
if PRICE > PRICE1 and PRICE > PRICE2 and PRICE > PRICE3 and  PRICE >  PRICE4:
    print("YES")
else:
    print("NO")


if PRICE > PRICE1 and PRICE > PRICE2 and PRICE > PRICE3 and PRICE >   PRICE4 and PRICE > PRICE5:
    print("YES")
else:
    print("NO")

COMMENT = THE PRINTS IS ONLY THERE FOR CONFIRMATION, LATER I WILL STORE THE TRUE OR FALSE VALUES IN OTHER VARIABLES

Ответы [ 2 ]

1 голос
/ 01 апреля 2019

Использование все :

DAILY_PRICE = [ 1,2,3,6,5,6,7,8,5,6,7,6,7,5] 

greater_than_last_5 = all(DAILY_PRICE[-1] > price for price in DAILY_PRICE[-6:-1])

print(greater_than_last_5)
# False
0 голосов
/ 01 апреля 2019

Используйте нарезку списка с enumerate() и all() проверкой на срез ваших данных, который включает 5 индексов перед вашим текущим индексом:

Этот код предоставит вывод для скользящего 5-дневного окна по всему вашему списку данных:

DAILY_PRICE =  [ 1,2,3,6,5,6,7,8,5,6,7,6,7,5]  
#                          ^ window starts here, before it is less then 5 days of data


for index,price in enumerate(DAILY_PRICE):
    if index < 5 :
        continue # no comparison for first 5 prices

    if all(p <= price for p in DAILY_PRICE[index-5:index]):
        print(f"All prices {DAILY_PRICE[index-5:index]} lower/equal then {price}")
    else:
        print(f"Not all prices {DAILY_PRICE[index-5:index]} lower/equal then {price}")

Выход:

All prices [1, 2, 3, 6, 5] lower/equal then 6
All prices [2, 3, 6, 5, 6] lower/equal then 7
All prices [3, 6, 5, 6, 7] lower/equal then 8
Not all prices [6, 5, 6, 7, 8] lower/equal then 5
Not all prices [5, 6, 7, 8, 5] lower/equal then 6
Not all prices [6, 7, 8, 5, 6] lower/equal then 7
Not all prices [7, 8, 5, 6, 7] lower/equal then 6
Not all prices [8, 5, 6, 7, 6] lower/equal then 7
Not all prices [5, 6, 7, 6, 7] lower/equal then 5   # this is the one your code tries to do
                                                    # all(p <= DAILY_PRICE[-1] for p 
                                                    #                in DAILY_PRICE[-6:-1])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...