Python - Problemas con clases Python. Dos ejercicios

 
Vista:
Imágen de perfil de María de los Reyes

Problemas con clases Python. Dos ejercicios

Publicado por María de los Reyes (3 intervenciones) el 22/12/2014 17:06:48
Buenas tarde tengo un par de problemas al elaborar el código en unos ejercicios, necesito ayuda urgente:

Primer ejercicio: Dado un conjunto de datos en la forma (x, y) con y = f(x), cree un conjunto de clases
que permita mostrar diferentes tipos de gráficas de dichos datos: Histograma, diagrama
de barras, líneas de puntos, puntos, etc.
Mi codigo:
class Graficos(object):

def __init__(self):
self.rango = X
self.funcion = Y
self.titulo = t
if m == 'f1':
X = np.linspace(-100,100,1000)
Y = (3*X)/(np.sqrt(X**2))
t = '(3*X)/(np.sqrt(X**2)'
if m == 'f2':
X = np.linspace(-100,100,1000)
Y = (X+5)
t = 'X+5'
if m == 'f3':
X = np.linspace(1,10,50)
Y = (np.log (X))/X
t = 'lnx/x'
if m == 'f4':
X = np.linspace(-100,100,1000)
Y = (X*2)*(np.exp(x**2))
t = '2x *e(x**2)'
def histograma (self):
plt.figure ('histograma')
plt.title (self.titulo)
plt.hist(self.funcion,10000, self.rango)
plt.show ()
if __name__=='__main__':
m=raw_input('Introduce la función que quieres mostrar: ')
g=Graficos()
g.histograma()

Duda: Aquí creo la clase que necesito e introduzco las siguientes funciones, todo eso lo entiendo, pero a continuación cuando realizo el método histograma me dan unos errores. Según he leído esto se puede hacer con dos paquetes numpy y matplotlib; pero me pone para poder realizarlo con vectores no con funciones, por lo que me quedo muy descolocada, no sé como solucionarlo, al igual que no se muy bien como elegir la función en clases a la hora de ejecutarlo.
Sé que a la hora de hacer los diagramas de barras se usa también vectores pero yo lo quiero hacer con funciones ¿cómo lo hago?

Segundo ejercicio: Aquí quiero hacer una jerarquía de clases, en mi caso coches y motos, y a partir de ahí introducir por teclado o tenerlos ya definidos varios ejemplos para que me diga detalladamente cual es el modelo, marca, color y motor. Pero no sé como introducirlos para realizarlo, se darle valores globales en los paréntesis pero no se introducir más de uno fuera de ellos ni siquiera uno, me da muchos errores cada vez que soluciono alguno...

class Coches (object):
def __init__(self,marca,modelo,color,motor): #Creo una clase que indentifice un coche en sus aspectos generales.
self.marca = marca
self.modelo = modelo
self.color = color
self.motor = motor


def marca (Coches): #Defino el método marca
print 'La marca de este coche 1 es: ', coche1.marca
print 'La marca de este coche 2 es: ', coche2.marca

def modelo (Coches): # Defino el método que muestra el modelo del coche
print 'El modelo de este coche 1 es: ', coche1.modelo
print 'El modelo de este coche 2 es: ', coche2.modelo

def color (Coches): # Defino el método que nos dice el color del coche
print 'El color de este coche 1 es: ', coche1.color
print 'El color de este coche 2 es: ', coche2.color

def motor (Coches): # Defino el método que nos muestra el motor del coche
print 'El motor de este coche 1 es: ', coche1.motor
print 'El motor de este coche 2 es: ', coche2.motor

if __name__=='__main__':
marca = 'pepe' #Aquí he probado ponerle valor 0 none y no me deja de dar error no se cómo ponerlo.
modelo = 'pepe'
color = 'pepe'
motor = 'pepe'
coche1= Coches('mercedes','clk','gris','2200cc')
coche2= Coches('fiat', '500','blanco','900cc')
c= Coches (marca,modelo,color,motor)
c.marca ()
c.modelo ()
c.color ()
c.motor ()

La segunda parte seria igual solo que con motos ( todo en el mismo ejercicio)
Class Motos (object):
def marca (Motos): #Defino el método marca
print 'La marca de esta moto es: ',self.marca

def modelo (Motos): # Defino el método que muestra el modelo de la moto
print 'El modelo de esta moto es: ',self.modelo

def color (Motos): # Defino el método que nos dice el color de la moto
print 'El color de esta moto es: ',self.color

def motor (Motos): # Defino el método que nos muestra el motor de la moto
print 'El motor de esta moto es: ',self.motor

Muchas gracias, espero una respuesta rápida.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder