Как я могу сделать это, используя нарезку списка? - PullRequest
0 голосов
/ 19 сентября 2019

SUMMER OF '69: вернуть сумму чисел в массиве, за исключением игнорирования разделов чисел, начинающихся с 6 и продолжающихся до следующих 9 (за каждым 6 будет следовать по крайней мере один 9).Вернуть 0 без чисел.

    summer_69([1, 3, 5]) --> 9
    summer_69([4, 5, 6, 7, 8, 9]) --> 9 
    summer_69([2, 1, 6, 9, 11]) --> 14

Это проблема.Я пытался решить эту проблему с помощью нарезки списка, но не смог.Примечание: 9 может быть только после 6, а не до 6.

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

Вот код с моей стороны.Пожалуйста, извините за мои плохие навыки программирования.

def summer_69(arr):
    if 6 not in arr:
        return sum(arr)
    elif 6 and 9 in arr:
        i = arr.index(6)
        y = arr.index(9)
        sxy = sum(arr[i:y])
        return sum(arr) - sxy
    else:
        i = arr.index(6)
        return sum(arr[:i])

Для массива [4, 5, 6, 7, 8, 9] я получаю вывод 18.

1 Ответ

0 голосов
/ 19 сентября 2019

Готово без нарезки.

def summer_69(l):
    sign, count = False, 0
    for num in l:
        if num == 6:
            sign = True
        if not sign:
            count += num
        if num == 9:
            sign = False
    return count
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...