найдите сумму чисел в списке, которые возведены в квадрат

#python #python-3.x #list

Вопрос:

Я пытаюсь найти сумму чисел из списка, которая возведена в квадрат.

 x_sequence = [1, 2, 3, 4, 5] total = 0 for i in x_sequence:  total = total   (i * i)  if i % 5 == 0:  continue  print(total)  output: 30  

сначала это просто, и это работает правильно, и выводит 30, что является квадратом(1 2 3 4) но если я попытаюсь вывести только последнее число из цикла for, оно выведет 55 вместо 30 , как это:

 x_sequence = [1, 2, 3, 4, 5] total = 0 for i in x_sequence:  total = total   (i * i)  if i % 5 == 0:  continue print(total)   output: 55  

Интересно, почему это так происходит? Я попытался заменить total на только мне это нравится: i = i (i * i) но это дает мне 30, если я тоже удалю 3 или 4 из списка, чего я не хочу.

Я хотел бы добиться этого: возведите в квадрат все числа из списка, найдите сумму чисел списка в квадрате, и если есть квадратное число, которое дает 0 напоминаний после деления на 5, пропустите его

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

1. Поскольку первый фрагмент кода печатается внутри цикла, вы должны получать довольно много выходных данных, но только тот 30 , который вы утверждаете.

Ответ №1:

Общее значение в конце обоих блоков кода равно 55. Единственное отличие состоит в том, что на последней итерации i % 5 равно 0 (продолжить), пропуская вывод последнего добавления (25).

Если вы не хотите суммировать квадрат при достижении 5, переместите условие пропуска, прежде чем суммировать его в общую переменную:

 x_sequence = [1, 2, 3, 4, 5] total = 0 for i in x_sequence:  if i % 5 == 0:  continue  total = total   (i * i) print(total)  gt; 30  

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

1. Поскольку это правильный ответ, я хочу добавить метод понимания списка здесь: sum([i * i for i in x_sequence if i % 5])

Ответ №2:

В первом фрагменте кода вы печатаете внутри цикла, но если значение кратно 5 , вы не напечатаете общее количество. Вместо этого, если значение i кратно 5 , вы продолжаете цикл. Поскольку 5 это последний элемент в списке, цикл заканчивается, и вы вообще ничего не напечатаете.

Во втором коде вы печатаете общий результат после завершения цикла.

Однако в обоих случаях общая сумма будет включать добавленное 25 (от 5 * 5 ). Разница в том, что в первом коде вы не печатаете это значение.

Если вы не хотите, чтобы кратные числа 5 включались в общую сумму, вам нужно выполнить проверку, прежде чем выполнять умножение и добавление к total :

 if i % 5 == 0:  continue total = total   (i * i)  

Ответ №3:

Вы добавляете квадратное значение к общей сумме перед условием if, поэтому все числа, включая квадрат 5, также будут добавлены к общей сумме. Попробуй это:

 x_sequence = [1, 2, 3, 4, 5] total = 0 for i in x_sequence:  if i % 5 == 0:  continue  total  = i * i print(total)