#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)