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. Получился код выше. Но он компилируется бесконечно. В чем ошибка?
Писал на питоне
Python
Почему не компилируется код?
Код не компилируется, потому что в цикле 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, если нечетная, и выводит сумму на экран. Этот код более эффективен и использует меньше памяти, чем исходный код. Ответ на последний вопрос: Код был исправлен с использованием функционального программирования генераторов списка, чтобы уменьшить использование памяти и увеличить скорость выполнения.
Андрей Гесслер
теперь мне пишет: 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))
Похожие вопросы
- почему не работает код ???(Python3)
- Можете помочь! Нужен код для Python, что бы он заменял определенный текст в файле
- Можете подсказать, почему код не работает?
- Помогите чайнику в Питоне. Как правильно перейти на другую строку в коде, чтоб он не запустился раньше времени?
- Проблема с кодом в Python
- С++ написать код для техникума.
- Почему код выглядит именно так?
- Как научится хорошо писать код?
- Кто поможет сократить код на tkinter
- НАПИШИТЕ СРОЧНО КОД НА PYTHON!