перенос определённого элемента в другой список из числа находящегося в списке
имеется список iteration_func в котором находится строка являющиеся числом в двоичной системе исчисления ( '00001000' ) как перенести все единицы из этого числа в другой список ?
num1, num2 = (int(x)for x in input().split())
iteration = input()
iteration_func = 0
if iteration == "+":
iteration_func = num1 + num2
elif iteration == "-":
iteration_func = num1 - num2
elif iteration == "*":
iteration_func = num1 * num2
elif iteration == "/":
iteration_func = num1 // num2
print(iteration_func)
iteration_func = bin(iteration_func)[2:].zfill(8)
iteration_func = [iteration_func]
print(*iteration_func)
Ответы (2 шт):
Автор решения: Дамир Набиуллин
→ Ссылка
num1, num2 = (int(x)for x in input().split())
iteration = input()
iteration_func = 0
if iteration == "+":
iteration_func = num1 + num2
elif iteration == "-":
iteration_func = num1 - num2
elif iteration == "*":
iteration_func = num1 * num2
elif iteration == "/":
iteration_func = num1 // num2
# if iteration_func < 0:
# iteration_func *= -1
iteration_func = bin(iteration_func)[2:].zfill(8)
iteration_func = list(str(iteration_func))
res_list = []
for x in iteration_func:
if x == "1":
res_list.append(x)
print(res_list)
# print(len(res_list))
всем спасибо за помощь и участие :)
Автор решения: Zhihar
→ Ссылка
Если не проверять корректно ли ввел пользователь строку (т.е. что она содержит только 0 или 1), то код можно сделать таким:
num1 = input("enter bits #1: ")
num2 = input("enter bits #2: ")
pos = 0
res = ""
while pos < len(num1) and pos < len(num2):
res += str(int(num1[len(num1) - pos - 1]) or int(num2[len(num2) - pos - 1]))
pos += 1
res = res[::-1]
print(res)
или так:
num1 = input("enter bits #1: ")
num2 = input("enter bits #2: ")
num1 = '0' * (max(len(num1), len(num2)) - len(num1)) + num1
num2 = '0' * (max(len(num1), len(num2)) - len(num2)) + num2
res = ''
for i, j in zip(num1, num2):
res += str(int(i) or int(j))
print(res)
или так:
num1 = input("enter bits #1: ")
num2 = input("enter bits #2: ")
num1 = '0' * (max(len(num1), len(num2)) - len(num1)) + num1
num2 = '0' * (max(len(num1), len(num2)) - len(num2)) + num2
res = ''.join(map(lambda obj: str(int(obj[0]) or int(obj[1])), zip(num1, num2)))
print(res)
или так:
import numpy
num1 = int(input("enter bits #1: "), 2)
num2 = int(input("enter bits #2: "), 2)
res = numpy.base_repr(num1 | num2, 2)
print(res)
или так:
num1 = int(input("enter bits #1: "), 2)
num2 = int(input("enter bits #2: "), 2)
res = str(bin(num1 | num2))[2::]
print(res)