Documentos de Académico
Documentos de Profesional
Documentos de Cultura
def suma(x,y):
assert esFraccion(x)
assert esFraccion(y)
num = x.numerador * y.denominador + \
x.denominador * y.numerador
den = x.denominador * y.denominador
return fraccion(num,den)
assert suma(fraccion(1,2),fraccion(3,4))==fraccion(10,8)
Comprobar que fracción está correcta
#esFraccion: fraccion->bool
#True si es una fraccion valida
#ej: esFraccion(fraccion(1,2))->True
#ej: esFraccion(fraccion(1,0))->False
def esFraccion(x):
return type(x)==fraccion \
and type(x.numerador)==int \
and type(x.denominador)==int \
and x.denominador!=0
assert esFraccion(fraccion(1,2))
assert not esFraccion(fraccion(1,0))
>>> pruebaSuma()
suma de fracciones a/b y c/d
a?1
b?2
c?3
d?4
suma=10/8
def pruebaSuma():
print "suma de fracciones a/b y c/d"
a=input("a?")
b=input("b?")
f1=fraccion(a,b)
f2=fraccion(input("c?"),input("d?"))
f3=suma(f1,f2)
print "suma=" + \
str(f3.numerador) + "/" + \
str(f3.denominador)
Resta de fracciones
#resta: fraccion fraccion -> fraccion
#resta de fracciones x e y
#ej: resta(fraccion(1,2),fraccion(3,4))->fraccion(-2,8)
def resta(x,y):
assert esFraccion(x)
assert esFraccion(y)
num=x.numerador*y.denominador - \
x.denominador*y.numerador
den=x.denominador*y.denominador
return fraccion(num,den)
assert resta(fraccion(1,2),fraccion(3,4))==fraccion(-2,8)
Producto de fracciones
#producto: fraccion fraccion -> fraccion
#producto de fracciones x e y
#ej: producto(fraccion(1,2),fraccion(3,4))
# ->fraccion(3,8)
def producto(x,y):
assert esFraccion(x)
assert esFraccion(y)
num=x.numerador*y.numerador
den=x.denominador*y.denominador
return fraccion(num,den)
assert producto(fraccion(1,2),fraccion(3,4)) \
== fraccion(3,8)
División de fracciones
#division: fraccion fraccion -> fraccion
#division fraccion x por fraccion y
#ej: division(fraccion(1,2),fraccion(3,4))
# ->fraccion(4,6)
def division(x,y):
assert esFraccion(x)
assert esFraccion(y)
num=x.numerador*y.denominador
den=x.denominador*y.numerador
f=fraccion(num,den)
assert esFraccion(f)
return f
assert division(fraccion(1,2),fraccion(3,4)) \
==fraccion(4,6)
Simplificar fracción
#simplificar: fraccion -> fraccion
#simplifica una fracción
#ej: simplificar(fraccion(2,4))->fraccion(1,2)
def simplificar(x):
assert esFraccion(x)
m=mcd(x.numerador,x.denominador)
return fraccion(x.numerador/m, x.denominador/m)
assert simplificar(fraccion(2,4))==fraccion(1,2)
>>> simplificar(fraccion(18,24))
fraccion(numerador=3, denominador=4)
Convertir fracción a string
#aString: fraccion -> str
#convierte fraccion a string
#ej: aString(fraccion(1,2))->"1/2“
def aString(x):
assert esFraccion(x)
return str(x.numerador)+"/"+str(x.denominador)
>>> aString(simplificar(fraccion(10,8)))
'5/4'
Prueba de operaciones entre fracciones
#prueba: None -> None
#lee 2 fracciones y escribe resultado
#simplificado de 4 operaciones
#ej: 1/2, 3/4 -> 5/4, -1/4, 3/8, 2/3
def prueba():
print "operaciones con fracciones a/b y c/d"
f1=fraccion(input("a?"),input("b?"))
f2=fraccion(input("c?"),input("d?"))
mostrar(“suma=",suma(f1,f2))
mostrar("resta=",resta(f1,f2))
mostrar("producto=",producto(f1,f2))
mostrar("division=",division(f1,f2))
def mostrar(x,f):
print x+aString(simplificar(f))
Ejercicio clase 8
Usar el módulo fraccion en un función que lea una cantidad
indeterminada de fracciones (que terminan con una fraccion de valor 0)
y entregue su promedio.
Diálogo:
numerador?n°
denominador?n°
cuenta=1 suma=n°/n°
…
numerador?n°
denominador?n°
cuenta=n° suma=n°/n°
numerador?0
n°/n° (promedio, resultado de la función)