binarios en python

Iniciado por tincopasan, 5 Octubre 2018, 13:55 PM

0 Miembros y 1 Visitante están viendo este tema.

tincopasan

En otros foros ya empezaron a preguntar sobre otro ejercicio que les han dado sobre como pasar números decimales a binarios a la vieja escuela(python ya trae funciones para ello), pero además quieren que sea con decimales,aunque todavía no han dicho con cuantos, así que lo hice en base a dos decimales.Como me molesta que entren a pedir solo códigos también lo dejo acá, así evitamos preguntas sin intenciones de aprender.
Código (python) [Seleccionar]

#por tincopasan
#-*- coding: utf -8 -*-
import math
def binario(num):
    co=0
    resto = 0
    numero_binario = []
   
    if num <= 1:
        print("no se puede convertir")
    else:
        while num > 1:
            co = num //2
            resto=num%2
            numero_binario.append(resto)
            num=num//2
        numero_binario.append(1)
        numero_binario.reverse() 
        return numero_binario 

def binario_decimal(decimal):
   
    aux=decimal*2
    decimal_binario=[]
    lista=[]
    valor=0
    while aux not in lista :
            lista.append(aux)
            partes=math.modf(aux)
            valor= int(round(partes[1],2))
            decimal_binario.append(valor)
            if int(round(partes[1],2)) == 1 and round(partes[0],2)== 0.0:
                break
            aux=round(partes[0],2) * 2
           
    return decimal_binario
   
   
   

def entero_decimal():
    global entero
    global decimal
    global numero
    numero=float(input("Ingrese un número: "))
    partes=math.modf(numero)
    decimal=round(partes[0],2)
    entero=int(partes[1])
    if decimal == 0.0:
        print("El número decimal {} es en binario {}]" .format(int(numero) ,binario(entero)))
    else:
        parte_entera=binario(entero)
        parte_decimal=binario_decimal(decimal)
        print("El número decimal {} es en binario {}.{}" .format(int(numero) ,parte_entera,parte_decimal))
   
entero_decimal()   
   


es recontra básico y dividido en funciones para que si alguien quiere, lo pueda entender fácil.Sino copiar y pegar sobra.
Saludos.