1
resposta

Fazer um for aninhado

binario = input("Digite o numero binario: ")
decimais = []
expoentee = []


for numero in binario:
    decimais.append(numero)
#print(decimais)
decimais.reverse()
#print(decimais)

expoente = int(len(decimais))
x = list(range(0, expoente+1))
#print(x)

a = []
b = []

for numero in decimais:
    a.append(int(numero))
#print(a)

for numero2 in x:
    b.append(int(numero2))
#print(b)

m = []

for c, d in zip(a, b):
    m.append(int(c*(2**d)))

resultado = sum(m)
print("o resultado é" , resultado)

fiz esse codigo para converter numeros binarios em decimais, mas como como simplificar com for aninhado ?

eu tentei fazer com :

for numero in decimais:
    for numero2 in x:
        m = (numero*(2**numero2))
1 resposta

Oi MrLexotan, como você está? Espero que esteja bem ^-^

Particularmente eu não vejo necessidade de fazermos um for aninhado. Podemos simplificar o código fazendo as operações através dos índices da lista. Imagine a seguinte lista:

lista_invertida = [0,1,1]

Veja que os expoentes da nossa operações serão os próprios índices da lista. Pois, a ideia é que façamos:

  • 2 elevado a 0(índice 0) vezes 0 (lista_invertida no índice 0)
  • 2 elevado a 1(índice 1) vezes 1 (lista_invertida no índice 1)
  • 2 elevado a 2(índice 2) vezes 1 (lista_invertida no índice 2)

Veja como fica um código mais enxuto:

binario = input("Digite o numero binario: ")
decimais = []
bin = []

for numero in binario:
    decimais.append(int(numero))

decimais.reverse()

for indice in range(len(decimais)):
    operacao = (2 ** indice) * decimais[indice]
    bin.append(operacao)

print(f"Resultado: {sum(bin)}")

E poderíamos simplificar mais ainda fazendo o uso de list comprehension, mas nem sempre o mais simples em termos de poucas linhas de código quer dizer que é o mais legível. Tudo bem?

binario = input("Digite o numero binario: ")
decimais = []
bin = []

decimais = [int(numero) for numero in binario]
decimais.reverse()

bin = [(2 ** indice) * decimais[indice] for indice in range(len(decimais))]

print(f"Resultado: {sum(bin)}")

Qualquer dúvida é só falar, estou por aqui.

Abraços e bons estudos!