コード例 #1
0
ファイル: parser.py プロジェクト: foones/dharma
 def sumar_digitos(xs):
     longitud = 0
     suma = 0
     for x in xs:
         if x.inf() < 10:
             longitud += 1
             suma = suma * 10 + x.inf()
         elif x.inf() < 100:
             longitud += 2
             suma = suma * 100 + x.inf()
         else:
             longitud += 3
             suma = suma * 1000 + x.inf()
     return TNumero(suma / frac(10 ** longitud, 1))
コード例 #2
0
ファイル: parser.py プロジェクト: foones/dharma
        def accion_sumar_final(lista):
            millones = lista[0]
            miles, decimales, unidad_de_medida, resto_todo_vacio = lista[1]
            algo_mas = lista[2]

            if millones is None and resto_todo_vacio and algo_mas == ():
                return unidad_de_medida
            elif millones is None:
                millones = TNumero(0)

            numero = millones + miles + decimales
            if algo_mas == ('medio',):
                numero = numero + TNumero(frac(1, 2))
            return envolver(numero, unidad_de_medida)
コード例 #3
0
ファイル: terminos.py プロジェクト: foones/dharma
    def __init__(self, numero=None, pico=0, a=None, b=None, *args, **kwargs):
        "Representa un número inexacto con aritmética de intervalos."
        TerminoConstante.__init__(self, *args, **kwargs)

        if numero is not None:
            assert isinstance(numero, int) or \
                   isinstance(numero, long) or \
                   isinstance(numero, fractions.Fraction)
            assert a is None and b is None
            assert pico >= 0
            if not isinstance(numero, fractions.Fraction):
                numero = frac(numero, 1)
            if pico == 0:
                a, b = numero, numero
            elif numero >= 0:
                a, b = numero, numero + pico
            else:
                a, b = numero - pico, numero
        else:
            assert a is not None and b is not None
        self._a, self._b = a, b