Вернуть сумму чисел в массиве, кроме игнорирования разделов чисел - PullRequest
0 голосов
/ 03 июля 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

def summer_69(arr):
    if 6 in arr and 9 in arr:
        return sum(arr[:arr.index(6)])+sum(arr[arr.index(9):])
    else:
        total=0
        for x in arr:
            total+=x
    return total

Я ожидаю выхода summer_69 ([4, 5, 6, 7, 8, 9]) -> 9, но фактический выход составляет 18.
Я ожидаю выхода summer_69 ([2, 1, 6, 9,11]) -> 14, но фактический результат составляет 23

Ответы [ 2 ]

0 голосов
/ 03 июля 2019

Вы можете сделать это, удалив все элементы от 6 до 9 (для всех интервалов) и просто суммируя элементы в списке, которые остались.

, чтобы удалить части от 6 до 9, которые вы можете использовать slice() Function

slice() function возвращает объект среза.

Объект среза используется для указания способа среза последовательности.Вы можете указать, где начать нарезку, а где закончить.

def summer_69(arr):
    while 6 in arr: # while 6 in array
        idx6 = arr.index(6)
        idx9 = arr.index(9)
        del arr[idx6:idx9+1] # delete part of array between index of 6 and index of 9
        print (arr) # [4, 5, 1, 1, 4, 3]
    return sum(arr)


print (summer_69([4, 5, 6, 7, 8, 9,1,1,6,2,3,9,4,3]))

вывод:

18

ex.

print (summer_69([1, 3, 5])) # 9
print (summer_69([4, 5, 6, 7, 8, 9])) # 9
print (summer_69([2, 1, 6, 9, 11])) # 14
0 голосов
/ 03 июля 2019

Не уверен, что это хороший подход из-за преобразования строк.

import re

def summer_69(arr):
    if 6 in arr and 9 in arr:
        #Using Regex to remove everything between 6 & 9 and convert object back to list of ints
        arr = [int(i) for i in re.sub(r"(6.*?9)", "", "_".join(map(str, arr))).split("_") if i]  
        return sum(arr)
    else:
        return sum(arr)    

print(summer_69([1, 3, 5])) #--> 9 
print(summer_69([4, 5, 6, 7, 8, 9])) #--> 9 
print(summer_69([2, 1, 6, 9, 11])) #--> 14
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...