Как мне вернуть сумму массива с исключениями, используя цикл while в функции?

#while-loop

#цикл while

Вопрос:

Здесь новичок в Python. У меня уже есть решение вопроса, но я не понимаю, почему переменная «добавить» в решении играет роль создания исключений для удаления чисел от 6 до 9. Я уже пробовал Python Tutor, но все еще не понимаю. Заранее большое спасибо!

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

Пример кода решения

 def summer_69(arr):
    total = 0
    add = True
    
    for num in arr:
        while add:
            if num != 6:
                total  = num
                break
            else:
                add = False
        while not add:
            if num != 9:
                break
            else:
                add = True
                break
    return total
  

Примеры ответов:

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

Комментарии:

1. Все ваши примеры выполняются успешно. О каких исключениях и о каких входных данных вы говорите? Не могли бы вы привести пример?

Ответ №1:

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

Он используется только для определения, столкнулись ли вы с 6 в последовательности чисел в массиве, затем, как только он был установлен, он проходит через произвольное количество чисел в массиве, пока не получит 9, а затем сбрасывает флаг.

Может помочь переименовать переменную «добавить» в «флаг». Установите для вашей новой переменной «flag» значение по умолчанию False, а затем, если вы столкнетесь с 6, установите для «flag» значение true. Как только флаг включен, не добавляйте никаких конечных чисел в последовательности, пока не столкнетесь с числом 9, а затем сбросьте значение false.

Возможно, это улучшит читаемость. Присвоение имен переменным — самая сложная часть программирования.

Комментарии:

1. @keab28 Нет проблем!