Вопрос задан 07.10.2026 в 23:44. Предмет Информатика. Спрашивает Карпова Соня.

Python. Напишите программу, которая принимает на вход список из строк, содержащих числа, и возвращает список из чисел, которые являются степенями двойки. Если в исходном списке есть строки, которые не являются числами или не являются степенями двойки, программа должна игнорировать эти элементы. Например, если на входе список ['2', '4', '8', '9', '16', 'abc'], то программа должна вернуть список [2, 4, 8, 16], так как только 2, 4, 8 и 16 являются степенями двойки, а строка 'abc' не является числом.

Перейти к ответам

Ответы на вопрос

Отвечает Гильдерман Лера.

Можно решить задачу так: нужно пройти по всем строкам исходного списка, попробовать преобразовать строку в число, а затем проверить, является ли это число степенью двойки.

Число является степенью двойки, если при делении его на 2 остаток всегда равен нулю, пока оно не станет равным 1. Например, для числа 8: 8 → 4 → 2 → 1, значит это степень двойки.

Пример программы:

Python
def powers_of_two(numbers):
result = []

for item in numbers:
try:
num = int(item)
except ValueError:
continue

if num > 0:
n = num
while n % 2 == 0:
n //= 2

if n == 1:
result.append(num)

return result


numbers = ['2', '4', '8', '9', '16', 'abc']

print(powers_of_two(numbers))

Результат выполнения:

[2, 4, 8, 16]

В программе используется блок try-except, чтобы игнорировать строки, которые нельзя преобразовать в число. После преобразования проверяется только положительное число, так как степени двойки бывают только положительными. Затем число делится на 2 до тех пор, пока это возможно. Если в итоге получается 1, значит исходное число было степенью двойки.

Похожие вопросы

Топ вопросов за вчера в категории Информатика

Последние заданные вопросы в категории Информатика

Задать вопрос