Ejercicio 7 "Crear metodos de clase"


#1

Pues en este curso me piden que muestre el modelo, color, y los kpl (kilometros por litro) de la instancia "miAuto()" de esta manera:

"Este es un Clio color gris que alcanza 16 kpl"

lo hago con el siguiente código:

class Auto(object):
condicion = "nuevo"
def init(self, modelo, color, kpl):
self.modelo = modelo
self.color = color
self.kpl = kpl
def verAuto(self):
return "Este es un " + self.modelo + " color " + self.color + " que alcanza " + str(self.kpl) + " kpl."

miAuto = Auto("Clio", "gris", 16)
print miAuto.verAuto()

en la pantalla se muestra "Este es un Clio color gris que alcanza 16 kpl"
Pero me lanza el error:
"¡Uy! Probá otra vez. No hiciste que se mostrara la descripcion correcta, deberia ser: "Este es un Clio color gris que alcanza 16 kpl." Utiliza + para concatenar strings y str para kpl"

Alguien sabe si es un error de Codecademy o si hice algo mal?. Estaría muy agradecido si me responden.
Gracias por su tiempo


#2

@stewe07: Ha olvidado el punto al final de la frase.


#3

Ya lo hice, pero me sigue saliendo el mismo error, he investigado en el foro y parece ser un problema de codecademy, ya que otras personas han tenido el mismo problema, si pudiera ayudarme estaría muy agradecido


#4

Oh , por lo que usted ha fijado pero todavía hay algo mal ?
¿Le importaría decirnos el mensaje de error ?


#5

Me volvio a salir el mismo error, pero buscando en el foro lo solucione, es un error de Codecademy


#6

Yo tengo el mismo problema, alguien ha conseguido solucionarlo?


#7

Hola amigo, yo logre solucionarlo concatenando de la siguiente manera:
return "Este es un " + self.modelo + " " + self.color + " que alcanza " + str(self.kpl) + " kpl."
Ve si te funciona


#8

Solucionado, gracias!


#9

Esta es la Respuesta para los próximos Internautas

class Auto(object):
	condicion = "nuevo"
	def __init__(self, modelo, color, kpl):
		self.modelo = modelo
		self.color = color
		self.kpl = kpl
	
	def verAuto(self):
	    frase= "Este es un " + self.modelo + " " + self.color + " que alcanza " + str(self.kpl) + " kpl."
	    return frase

miAuto = Auto("Clio", "gris", 16)
print miAuto.condicion
print miAuto.modelo
print miAuto.color
print miAuto.kpl
print miAuto.verAuto()

Al parecer NO ADMITE lo ya aprendido que es:
return "Este es un %s %s que alcanza %s kpl." % ( self.modelo, self.color, self.kpl)
Algo mas sencillo, practico y legible de apreciar... (que es lo que yo intentaba)


#10

Hola chicos!

Según leo en sus comentarios, el problema que tuvieron fue con el tema de formateo de strings y concatenación con las variables.

A mi me funciona de ambas formas y no tengo problema con ninguno de los dos métodos, eso significa que el problema de formateo de strings fue solucionado.

El inconveniente que yo tengo es con el metodo verCarro, al ejecutar el programa me arroja un error de identación, sin embargo el metodo se encuentra a nivel de identación correcta.

class Carro(object):
	condicion = "nuevo"
	def __init__(self, modelo, color, mpg):
		self.modelo = modelo
		self.color = color
		self.mpg = mpg
		
        def verCarro(self):
            return "Este es un %s color %s que alcanza %s MPG." % (self.modelo, self.color, self.mpg)

miCarro = Carro("DeLorean", "plata", 88)
print miCarro.verCarro()

y refleja el error:

File "python", line 8
    def verCarro(self):
                      ^
IndentationError: unindent does not match any outer indentation level

Para eliminar el error tuve que correr el metodo verCarro a nivel de identacion dentro del metodo init y solo así fue que el sistema me lo califico como correcto.

	condicion = "nuevo"
	def __init__(self, modelo, color, mpg):
		self.modelo = modelo
		self.color = color
		self.mpg = mpg
		
                def verCarro(self):
                return "Este es un %s color %s que alcanza %s MPG." % (self.modelo, self.color, self.mpg)

miCarro = Carro("DeLorean", "plata", 88)
print miCarro.verCarro()

Espero resuelvan este error. Saludos! :smiley: