Hola, tengo este código de prueba y me sale el error de abajo: <code>class Perro(): def __init__(self, nombre, color, raza): ...

Pregunta de la clase:
Decomposición
Jeyson David Vargas Crespo

Jeyson David Vargas Crespo

Pregunta
studenthace 4 años

Hola, tengo este código de prueba y me sale el error de abajo:

class Perro(): def __init__(self, nombre, color, raza): self.nombre = nombre self.color = color self.raza = raza comida = 10 def ladrar(self): return 'El perro dice wuao wuao' def comer(self, cantidad): self.comida = self.comida - cantidad return self.comida perro1 = Perro('lucas', 'negro', 'bulldog') print(perro1.comer(3))
File "poo.py", line 132, in <module> print(perro1.comer(3)) File "poo.py", line 124, in comer self.comida = comida - cantidad NameError: name 'comida' is not defined

Muchas gracias por su ayuda…

5 respuestas
para escribir tu comentario
    Franco Martel

    Franco Martel

    studenthace un año

    import random

    class Personaje: def init(self, nombre, raza, habilidades=[], armas=[], vestimenta=[]): self.nombre = nombre self.raza = raza self.habilidades = habilidades self.armas = armas self.vestimenta = vestimenta

    def mostrar_info(self): print(f"Nombre: {self.nombre}") print(f"Raza: {self.raza}") print("Habilidades:", ", ".join(self.habilidades)) print("Armas:", ", ".join(self.armas)) print("Vestimenta:", ", ".join(self.vestimenta))

    class Juego: def init(self): self.personaje = None self.jefes_quincy = ["El Rey Quincy", "Uryu"] self.jefes_senadores = ["Capitán del Escuadrón 1", "Ichigo", "Kenpachi"] self.personajes_secundarios = [ Personaje("Rukia", "Shinigami", habilidades=["Kido"]), Personaje("Renji", "Shinigami", habilidades=["Zanjutsu"]), Personaje("Orihime", "Humano", habilidades=["Santen Kesshun"]) ] self.clima = ["soleado", "lluvioso", "nublado"]

    def crear_personaje(self, nombre, raza): self.personaje = Personaje(nombre, raza) def generar_habilidades(self): habilidades_posibles = ["Zanjutsu", "Hoho", "Kido", "Hakuda"] cantidad_habilidades = random.randint(1, len(habilidades_posibles)) habilidades = random.sample(habilidades_posibles, cantidad_habilidades) self.personaje.habilidades = habilidades def generar_armas(self): armas_posibles = ["Zanpakuto", "Bakudo", "Hadou", "Quincy Bow"] cantidad_armas = random.randint(1, len(armas_posibles)) armas = random.sample(armas_posibles, cantidad_armas) self.personaje.armas = armas def generar_vestimenta(self): vestimenta_posible = ["Shihakusho", "Bankai Robe", "Quincy Uniform"] cantidad_vestimenta = random.randint(1, len(vestimenta_posible)) vestimenta = random.sample(vestimenta_posible, cantidad_vestimenta) self.personaje.vestimenta = vestimenta def luchar_con_jefe(self, jefe): print(f"Luchando contra el jefe: {jefe}") # Aquí puedes agregar la lógica de la batalla contra el jefe def interactuar_con_personaje_secundario(self): personaje_secundario = random.choice(self.personajes_secundarios) print(f"\nInteractuando con el personaje secundario: {personaje_secundario.nombre}") personaje_secundario.mostrar_info() def simular_clima(self): clima_actual = random.choice(self.clima) print(f"\nEl clima actual es: {clima_actual}") def iniciar_juego(self): print("Bienvenido al mundo de Bleach") print("Crea tu propio personaje") nombre = input("Ingresa el nombre de tu personaje: ") raza = input("Elige la raza de tu personaje (Shinigami, Quincy, Hollow): ") self.crear_personaje(nombre, raza) print("\nTu personaje ha sido creado:") self.personaje.mostrar_info() print("\nGenerando habilidades...") self.generar_habilidades() print("\nGenerando armas...") self.generar_armas() print("\nGenerando vestimenta...") self.generar_vestimenta() print("\n¡Listo! Tu personaje está completo:") self.personaje.mostrar_info() print("\n¡Ahora prepárate para enfrentarte a los jefes!") print("\nJefes del lado Quincy:") for jefe in self.jefes_quincy: print(jefe) self.luchar_con_jefe(jefe) print("\nJefes del lado de los Shinigamis:") for jefe in self.jefes_senadores: print(jefe) self.luchar_con_jefe(jefe) print("\nExplora el mundo abierto:") self.interactuar_con_personaje_secundario() self.simular_clima()

    Crear e iniciar el juego

    juego = Juego() juego.iniciar_juego()

    Franco Martel

    Franco Martel

    studenthace un año
    <code> ```import random

    class Personaje: def init(self, nombre, raza, habilidades=[], armas=[], vestimenta=[]): self.nombre = nombre self.raza = raza self.habilidades = habilidades self.armas = armas self.vestimenta = vestimenta

    def mostrar_info(self): print(f"Nombre: {self.nombre}") print(f"Raza: {self.raza}") print("Habilidades:", ", ".join(self.habilidades)) print("Armas:", ", ".join(self.armas)) print("Vestimenta:", ", ".join(self.vestimenta))

    class Juego: def init(self): self.personaje = None self.jefes_quincy = ["El Rey Quincy", "Uryu"] self.jefes_senadores = ["Capitán del Escuadrón 1", "Ichigo", "Kenpachi"] self.personajes_secundarios = [ Personaje("Rukia", "Shinigami", habilidades=["Kido"]), Personaje("Renji", "Shinigami", habilidades=["Zanjutsu"]), Personaje("Orihime", "Humano", habilidades=["Santen Kesshun"]) ] self.clima = ["soleado", "lluvioso", "nublado"]

    def crear_personaje(self, nombre, raza): self.personaje = Personaje(nombre, raza) def generar_habilidades(self): habilidades_posibles = ["Zanjutsu", "Hoho", "Kido", "Hakuda"] cantidad_habilidades = random.randint(1, len(habilidades_posibles)) habilidades = random.sample(habilidades_posibles, cantidad_habilidades) self.personaje.habilidades = habilidades def generar_armas(self): armas_posibles = ["Zanpakuto", "Bakudo", "Hadou", "Quincy Bow"] cantidad_armas = random.randint(1, len(armas_posibles)) armas = random.sample(armas_posibles, cantidad_armas) self.personaje.armas = armas def generar_vestimenta(self): vestimenta_posible = ["Shihakusho", "Bankai Robe", "Quincy Uniform"] cantidad_vestimenta = random.randint(1, len(vestimenta_posible)) vestimenta = random.sample(vestimenta_posible, cantidad_vestimenta) self.personaje.vestimenta = vestimenta def luchar_con_jefe(self, jefe): print(f"Luchando contra el jefe: {jefe}") # Aquí puedes agregar la lógica de la batalla contra el jefe def interactuar_con_personaje_secundario(self): personaje_secundario = random.choice(self.personajes_secundarios) print(f"\nInteractuando con el personaje secundario: {personaje_secundario.nombre}") personaje_secundario.mostrar_info() def simular_clima(self): clima_actual = random.choice(self.clima) print(f"\nEl clima actual es: {clima_actual}") def iniciar_juego(self): print("Bienvenido al mundo de Bleach") print("Crea tu propio personaje") nombre = input("Ingresa el nombre de tu personaje: ") raza = input("Elige la raza de tu personaje (Shinigami, Quincy, Hollow): ") self.crear_personaje(nombre, raza) print("\nTu personaje ha sido creado:") self.personaje.mostrar_info() print("\nGenerando habilidades...") self.generar_habilidades() print("\nGenerando armas...") self.generar_armas() print("\nGenerando vestimenta...") self.generar_vestimenta() print("\n¡Listo! Tu personaje está completo:") self.personaje.mostrar_info() print("\n¡Ahora prepárate para enfrentarte a los jefes!") print("\nJefes del lado Quincy:") for jefe in self.jefes_quincy: print(jefe) self.luchar_con_jefe(jefe) print("\nJefes del lado de los Shinigamis:") for jefe in self.jefes_senadores: print(jefe) self.luchar_con_jefe(jefe) print("\nExplora el mundo abierto:") self.interactuar_con_personaje_secundario() self.simular_clima()

    Crear e iniciar el juego

    juego = Juego() juego.iniciar_juego()

    Jeyson David Vargas Crespo

    Jeyson David Vargas Crespo

    studenthace 4 años

    Muchas gracias a todos...

    @daniordonez, si, me faltaba el self...gracias.

    Eliaz Bobadilla

    Eliaz Bobadilla

    studenthace 4 años

    Hola @jeydvc! Te dejo como solucione el Codigo:

    class Perro(): def __init__(self, nombre, color,raza): self.nombre = nombre self.color = color self.raza = raza self.comida = 10 def ladrar(self): return'El perro dice wuao wuao' def comer(self, cantidad): self.comida = self.comida - cantidad return self.comida perro = Perro('Lucas', 'Negro', 'Bulldog') print('Al Perro le quedan '+str(perro.comer(3))+' croquetas')

    El resultado es: Output

    Daniel Adolfo Ordoñez Rubio

    Daniel Adolfo Ordoñez Rubio

    studenthace 4 años

    Hola :) No incluiste self en la declaración

    comida = 10
    , entonces "comida" no es una propiedad de la clase Perro. Intenta con
    self.comida = 10

Curso de POO y Algoritmos con Python

Curso de POO y Algoritmos con Python

Comprende la eficiencia algorítmica con Python. Analiza complejidad temporal y espacial, visualiza resultados y resuelve problemas de optimización. Ideal para desarrollar habilidades esenciales en el análisis de algoritmos.

Curso de POO y Algoritmos con Python
Curso de POO y Algoritmos con Python

Curso de POO y Algoritmos con Python

Comprende la eficiencia algorítmica con Python. Analiza complejidad temporal y espacial, visualiza resultados y resuelve problemas de optimización. Ideal para desarrollar habilidades esenciales en el análisis de algoritmos.