Перебор списка, пока не будут выполнены 2 условия - PullRequest
0 голосов
/ 03 октября 2018

У меня есть список, и я хочу суммировать все числа в этом списке ... за исключением , что, если выпадает 6 - это не считается и любое число из этих 6, до следующего7 подходит (также не считая 7).7 всегда будет появляться где-то после 6.

Например:

my_list = [1,2,3,6,1,1,1,7,2,2,2]
           1,2,3,.........,2,2,2    # Omit numbers from the first 6 to the next 7.

должно вывести 12.

Я знаю, как определить 6, я простоне уверен, как не посчитать числа, пока не появится продолжение 7.

Спасибо.

Ответы [ 2 ]

0 голосов
/ 03 октября 2018

Давайте сделаем это, как на бумаге:

  • Найдите первое 6;отметьте список до этой точки.
  • В остальной части списка найдите первые 7;отметьте список после этой точки.
  • Объедините две отмеченные части списка;суммируйте эти элементы.

Код с строкой трассировки:

seq = [1, 2, 3, 6, 1, 1, 1, 7, 2, 2, 2]
first6 = seq.index(6)
rest = seq[first6:]
next7 = rest.index(7)
sum_list = seq[:first6] + rest[next7+1:]
print("Add these:", sum_list)
print("Sum:", sum(sum_list))

Вывод:

Add these: [1, 2, 3, 2, 2, 2]
Sum: 12

Вы можете сократить код, комбинируя выражения, но я думаю, что это более читабельно для вас на этом этапе вашей карьеры программиста.

0 голосов
/ 03 октября 2018

Вы можете использовать логическое значение в качестве флага.Это должно сделать это:

list= [1,2,3,6,1,1,1,7,2,2,2] 
do_sum = True
total_sum = 0

for item in list:
   if item == 6:
       do_sum = False

   if do_sum:
      total_sum += item

   if not do_sum and item == 7:
       do_sum = True

Последнее if проверит, пошли ли 6 перед 7из шести и семи пар в списке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...