#python
#python
Вопрос:
Я пытаюсь выполнить итерацию по моему списку и вычислить разницу между каждым элементом и следующим за ним элементом. Если разница больше 0 (или положительная), то увеличьте up
и уменьшите down
на 1 (если она больше 0). Аналогично , если разница меньше 0 , то увеличивайте down
и уменьшайте up
на 1 ( если больше 0 ) . Я хочу выйти из цикла, если либо значение up
or down
превышает limit
значение 3.
Мой код:
my_list = [13.04, 12.46, 13.1, 13.43, 13.76, 13.23, 12.15, 12.0, 11.55, 14.63]
up = 0
down = 0
limit = 3
while (up < limit) or (down < limit) :
for i in range(len(my_list)-1):
diff = my_list[i] - my_list[i 1]
print (diff)
if diff > 0:
up =1
if down > 0:
down -=1
elif diff < 0:
down =1
if up > 0:
up -=1
Очевидно, что это не работает, так как я продолжаю увязать в бесконечном цикле и не могу понять, что я делаю не так.
Ответ №1:
Условие while неверно. Цикл продолжает выполняться , пока либо up
или down
находится ниже limit
, поэтому он не остановится даже тогда , когда up=1000
, пока down<3
. Вместо этого вы хотите while (up < limit) and (down < limit)
.
Ответ №2:
не используйте while , вы можете использовать условие if в последнем цикле for для его разрыва :
for i in range(len(my_list)-1):
diff = my_list[i] - my_list[i 1]
#print (diff)
if diff > 0:
up =1
if down > 0:
down -=1
elif diff < 0:
down =1
if up > 0:
up -=1
if (up > limit)or (down > limit) :print(up);print(down);break
Комментарии:
1. В то время как основной вопрос был изменен
and
наor
, этот тоже имеет смысл
Ответ №3:
Проблема в вашем состоянии. Вы сказали, что хотите выйти из программы, если либо up
или down
превышает значение limit
, равное 3. Таким образом, условие в цикле while должно быть установлено как while up is less than limit AND down is also less than limit
, только после этого выполнить тело цикла. Что-то вроде этого.
while up < limit and down < limit:
или вы также можете использовать скобки (в данном случае это не имеет значения)
while (up < limit) and (down < limit):
Таким образом, полная программа будет
my_list = [13.04, 12.46, 13.1, 13.43, 13.76, 13.23, 12.15, 12.0, 11.55, 14.63]
up = 0
down = 0
limit = 3
while up < limit and down < limit:
for i in range(len(my_list)-1):
diff = my_list[i] - my_list[i 1]
print (diff)
if diff > 0:
up =1
if down > 0:
down -=1
elif diff < 0:
down =1
if up > 0:
up -=1