Autor Tema: Clase de numeros con incertezas en Python.

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

26 Noviembre, 2012, 08:18 am
Leído 577 veces

lindtaylor

  • Héroe
  • Mensajes: 1,307
  • Karma: +0/-1
  • Sexo: Masculino
Buenas, tengo un ejercicio que dice asi:

Escriba un modulo en python (archivo .py) en el que defina una clase de cantidades con incertezas, es decir, un float \( \pm \) otro float. Debe imprementar documentacion para la clase que se despliegue en pantalla al llamar al modulo con la opcion -h desde la linea de comando. Por otra parte, debe implementar metodos especiales para: la suma, la resta, el producto, la division y la impresion.
Ademas debe implementar una funcion principal (main) para el modulo a travez de la construccion if __name__=='__main__', que le pida al usuario un par de numeros con incerteza, despues le ofrezca un menu para eleegir la operacion a ejecutar y finalmente imprima el resultado.

El codigo que he logrado hacer hasta ahora es el siguiente:

Código: [Seleccionar]
class Numeroincerteza:   #x=numero, y=su incerteza
'''Programa que opera numeros con su respectiva incerteza, el usuario ingresa dos numeros con su  respectiva incerteza en la foma (numero1,incerteza1) y (numero2,incerteza2) y el resultado de alguna operacion entre los dos numeros ingresados es entregado como (numero,incerteza)'''


def __init__(self,x,y):
self.x=x
self.y=y

def __repr__(self):
return "(%9.5f,%9.5f)" %(self.x,self.y)

def __add__(self,nuevonumero):
return Numeroincerteza(self.x+nuevonumero.x,self.y+nuevonumero.y)

def __sub__(self,nuevonumero):
return Numeroincerteza(self.x-nuevonumero.x,self.y+nuevonumero.y)

def __mul__(self,nuevonumero):
return Numeroincerteza(self.x*nuevonumero.x,(self.x*nuevonumero.x)*(self.y/self.x+nuevonumero.y/nuevonumero.x))

def __div__(self,nuevonumero):
return Numeroincerteza(self.x/nuevonumero.x,(self.x/nuevonumero.x)*(self.y/self.x+nuevonumero.y/nuevonumero.x))




if __name__=='__main__':

print Numeroincerteza.__doc__
x=input('Ingrese el primero numero: ')
y=input('Ingrese la incerteza del primero numero ingresado: ')
z=input('Ingrese el segundo numero: ')
w=input('Ingrese la incerteza del segundo numero ingresado: ')

a=Numeroincerteza(x,y)
b=Numeroincerteza(z,w)

print ''' ###Menu###
(1) Suma los numeros con su incerteza
(2) Resta los numeros con su incerteza
(3) Producto de los numeros con su incerteza
(4) Division de los numeros con su incerteza'''

respuesta=raw_input('Ingrese una seleccion: ')

if respuesta== '1' or respuesta=='2' or respuesta=='3' or respuesta=='4':
if '1' in respuesta: print 'La suma con su incerteza es: ',a+b
elif '2' in respuesta: print 'La resta con su incerteza es: ',a-b
elif '3' in respuesta: print 'El producto con su incerteza es: ',a*b
elif '4' in respuesta: print 'La division con su incerteza es: ',a/b
else:
print 'Ingrese una de las opciones validas'

El cual parece hasta ahora funcionar bien, pero cual es ese metodo especial de impresion del que se habla? Tambien no se como hacer lo de la opcion -h.
Desde ya gracias.
....