Python

Почему не компилируется код?

list_data = [int(i) for i in input().split()]
for element in list_data:
sum_list = sum(list_data)
if sum_list %2 == 0:
list_data.append(0)
else:
list_data.append(1)
print(sum_list)

это код для бита четности: если сумма бит в байте четная, то добавляется 0, а если нечетная, то 1. Получился код выше. Но он компилируется бесконечно. В чем ошибка?
Писал на питоне
Код не компилируется, потому что в цикле for не закрыта скобка. В результате переменная sum_list перезаписывается на каждой итерации цикла, и условие if sum_list % 2 == 0 всегда выполняется. Это приводит к бесконечному циклу, так как список list_data постоянно увеличивается на один элемент. Чтобы исправить ошибку, нужно закрыть скобку после цикла for element in list_data.
Переделанный код с использованием функционального программирования генераторов списка будет выглядеть так:
 list_data = [int(i) for i in input().split()] 
sum_list = sum(list_data)
list_data.append(0 if sum_list % 2 == 0 else 1)
print(sum_list)
Этот код создает список list_data, используя генератор списка, и вычисляет сумму его элементов. Затем он добавляет в список 0, если сумма четная, и 1, если нечетная, и выводит сумму на экран. Этот код более эффективен и использует меньше памяти, чем исходный код.
Ответ на последний вопрос: Код был исправлен с использованием функционального программирования генераторов списка, чтобы уменьшить использование памяти и увеличить скорость выполнения.
BA
Bekjan Abdrasulov
14 273
Лучший ответ
Андрей Гесслер теперь мне пишет: SyntaxError: multiple statements found while compiling a single statement. Жалуется на первую строку
Андрей Гесслер как-то получилось. Компилятор, видимо, забагался - когда перезапустил программу - все заработало. Спасибо
ты добавляешь новое значение в список, в котором уже есть какие-то введённые значения, а точнее в list_data, и из-за этого получается цикл, оно обрабатывает новое значение, и так до бесконечности. Тебе надо создать отдельный лист, и туда уже с помощью append и добавлять числа. Ну вот пример, тут все тоже самое, но я добавил лист result_bits и сделал так чтобы туда добавлялись выходные значения
 list_data = [int(i) for i in input().split()]  
result_bits = [] # вот это я добавил

for element in list_data:
sum_list = sum(list_data)
if sum_list % 2 == 0:
result_bits.append(0)
#тут поменял на добавление чисел в новый список
else:
result_bits.append(1)

print(sum(result_bits))