+ Responder ao Tópico



  1. #1

    Padrão Erro com uma função

    Boa Noite a todos!

    Seguinte to tentando criar um sistema para conversão de bases, e to meio que apanhando com uma funcao que dever converter uma parte fracionária decimal para binário.

    O código!!

    Código :
     
    def fra(vlr):
        resultado = []
        cont = 10
        while cont != 0:
            if vlr < 1.0:
                print '%f * 2 = %f\t > %i' %(vlr, vlr * 2,int(vlr * 2))
                resultado.append(int(vlr*2))
                vlr = vlr * 2
                cont -= 1
            else:
                vlr -= 1.0
                print '%f * 2  =  %f\t > %i' %(vlr, vlr * 2, int(vlr * 2))
                resultado.append(int(vlr*2))
                cont -= 1
     
     
        print resultado
     
    >>> fra(0.71)
    0.710000 * 2 = 1.420000     > 1
    0.420000 * 2  =  0.840000     > 0
    0.420000 * 2 = 0.840000     > 0
    0.840000 * 2 = 1.680000     > 1
    0.680000 * 2  =  1.360000     > 1
    0.680000 * 2 = 1.360000     > 1
    0.360000 * 2  =  0.720000     > 0
    0.360000 * 2 = 0.720000     > 0
    0.720000 * 2 = 1.440000     > 1
    0.440000 * 2  =  0.880000     > 0
    [1, 0, 0, 1, 1, 1, 0, 0, 1, 0]
    Alguns itens estao se repetindo... mas depois eles sao multiplicados corretamente!!
    O que esta errado??

    Desde já agradeço!!

    []'s
    Jr.

  2. #2

    Padrão

    Bom achei o erro!!

    Faltava adicionar um vlr = vlr * 2 no else:

    Código :
    def fra(vlr):
        resultado = []
        cont = 10
        while cont != 0:
            if vlr < 1.0:
                print '%f * 2 = %f\t > %i' %(vlr, vlr * 2,int(vlr * 2))
                resultado.append(int(vlr*2))
                vlr = vlr * 2
                cont -= 1
            else:
                vlr -= 1.0
                print '%f * 2  =  %f\t > %i' %(vlr, vlr * 2, int(vlr * 2))
                resultado.append(int(vlr*2))
                [COLOR=Red]vlr = vlr * 2[/COLOR]
                cont -= 1
     
     
        print resultado

    Acho que agora vai!!