SoloCodigo

Programación Web y Scripting => Python => Mensaje iniciado por: sergio2 en Sábado 5 de Enero de 2008, 10:34

Título: Unir Dos Funciones En Una
Publicado por: sergio2 en Sábado 5 de Enero de 2008, 10:34
supongamos q tengo una receta de cocina,  cada plato contiene una lita de ingredientes

una llamada ingredientes solidos (turron, manteca, cacao)

y otra con llamada ingredientes liquidos (agua, leche)

ahora quiero crear una funcion para q al poner un ingrediente me salga el nombre del plato q lo contiene



 def buscar_receta_con_ingredientes_liquidos (propio, ingrediente):
        for elemento in propio.ingredientes_liquidos:
            if elemento == ingrediente:
               print propio.nombre_plato
               break


    def buscar_receta_con_ingredientes_solidos (propio, ingrediente):
        for elemento in propio.ingredientes_solidos:
            if elemento == ingrediente:
               print propio.nombre_plato
               break


        bueno, hay alguna forma de unir las dos funciones? meter un ingrediente y q me busca a la vez en los ingredientes solidos y liquidos (por mucho or/and q le meto no me da resultado)


y otra cosa, si yo quiero imprimir una frase del tipo

a =input("introduce un nombre:")
print "hola:" ,a


como es para darle un color a "a"
Título: Re: Unir Dos Funciones En Una
Publicado por: NRM en Sábado 5 de Enero de 2008, 15:55
hola,

para ayudarte mejor necesitaria saber de que tipo es "propio".
y si el codigo no es muy largo y  podes ponerlo  todo, mejor.

saludos

nrm
Título: Re: Unir Dos Funciones En Una
Publicado por: RadicalEd en Sábado 5 de Enero de 2008, 16:35
El moacho declara propio, como la variable self, que vienen en las funciones o en los métodos y constructores de las clases, eso es lo que entiendo.
Título: Re: Unir Dos Funciones En Una
Publicado por: sergio2 en Domingo 6 de Enero de 2008, 19:13
Cita de: "RadicalEd"
El moacho declara propio, como la variable self, que vienen en las funciones o en los métodos y constructores de las clases, eso es lo que entiendo.



 

si, propio es "eso" q siempre se pone
Título: Re: Unir Dos Funciones En Una
Publicado por: NRM en Martes 8 de Enero de 2008, 03:10
Cita de: "sergio2"
Cita de: "RadicalEd"
El moacho declara propio, como la variable self, que vienen en las funciones o en los métodos y constructores de las clases, eso es lo que entiendo.



 

si, propio es "eso" q siempre se pone
self se utiliza en el caso de los metodos y no de las funciones.
si el codigo que pusiste es parte de una clase deberias poner el codigo completo.

nrm
Título: Re: Unir Dos Funciones En Una
Publicado por: sergio2 en Miércoles 9 de Enero de 2008, 18:04
bueno, ahi va el codigo
es mas largo, pero lo q busco esta ahi




class Recetas:

    def __init__(propio, nombre):
        propio.nombre_plato = nombre
        propio.ingredientes_solidos = []
        propio.ingredientes_liquidos = []


    def proporcionar_ingredientes_solidos (propio, solidos):
        propio.ingredientes_solidos.append(solidos)

    def proporcionar_ingredientes_liquidos (propio, liquidos):
        propio.ingredientes_liquidos.append(liquidos)


    def buscar_receta_con_ingredientes_liquidos (propio, ingrediente):
        for elemento in propio.ingredientes_liquidos:
            if elemento == ingrediente:
               print propio.nombre_plato
               break


    def buscar_receta_con_ingredientes_solidos (propio, ingrediente):
        for elemento in propio.ingredientes_solidos:
            if elemento == ingrediente:
               print propio.nombre_plato
               break

    def __str__ (propio):
          representación = "NOMBRE DEL PLATO: " +  propio.nombre_plato  + '\n'
          representación += "INGREDIENTES: -Sólidos-: "
          for solidos in propio.ingredientes_solidos: representación += solidos + ', '  
          representación += "-Líquidos-: "
          for liquidos in propio.ingredientes_liquidos: representación += liquidos + ', '
          return representación



si por ejemplo pongo

           
a=Recetas("Tarta_de_Manzana")
a.proporcionar_ingredientes_solidos("manteca")
a.proporcionar_ingredientes_solidos("turron")
a.proporcionar_ingredientes_liquidos("leche")


y ahora quiero buscar una receta q tenga el ingrediente turron, pues

a.buscar_receta_con_ingredientes_solidos("turron")


lo q quiero es q busque en ingredientes solidos y en liquidos a la vez
y el resultado salga en un color diferente del q siempre sale (q es azul)


por cierto, algun buen manual del programa gazpacho en español? (para hacer interfaz grafico)
Título: Re: Unir Dos Funciones En Una
Publicado por: NRM en Jueves 10 de Enero de 2008, 04:37
aca esta el codigo con algunas modificaciones, tu consulta esta resuelta dentro del metodo "buscar_receta_con_ingrediente".

Código: Text
  1. class Recetas:
  2.   def __init__(self, nombre):
  3.     self.nombre_plato = nombre
  4.     self.ingredientes_solidos = []
  5.     self.ingredientes_liquidos = []
  6.  
  7.   def proporcionar_ingredientes_solidos(self, solidos):
  8.     self.ingredientes_solidos.append(solidos)
  9.  
  10.   def proporcionar_ingredientes_liquidos(self, liquidos):
  11.     self.ingredientes_liquidos.append(liquidos)
  12.  
  13.   def buscar_receta_con_ingredientes(self, ingrediente):
  14.     for elemento in self.ingredientes_liquidos:
  15.       if elemento == ingrediente:
  16.         print self.nombre_plato
  17.         break
  18.     for elemento in self.ingredientes_solidos:
  19.       if elemento == ingrediente:
  20.         print self.nombre_plato
  21.         break
  22.  
  23.   def __str__(self):
  24.     representacion = "NOMBRE DEL PLATO: " + self.nombre_plato + '\n'
  25.     representacion += "INGREDIENTES: -Solidos-: "
  26.     for solidos in self.ingredientes_solidos:
  27.       representacion += solidos + ', '
  28.     representacion += "-Liquidos-: "
  29.     for liquidos in self.ingredientes_liquidos:
  30.       representacion += liquidos + ', '
  31.     return representacion
  32.  
  33. if __name__ == "__main__":
  34.   a = Recetas("Tarta_de_Manzana")
  35.   a.proporcionar_ingredientes_solidos("manteca")
  36.   a.proporcionar_ingredientes_solidos("turron")
  37.   a.proporcionar_ingredientes_liquidos("leche")
  38.   a.buscar_receta_con_ingredientes("leche")
  39.  

me parece que hay mejores formas de resolver este problema y no usar 2 for, pero esta es la mas simple de hacer sin modificar mucho el codigo de la clase.

con respecto a lo del color depende de la terminal que utilices, en linux se puede hacer, en windows no sabria decirte.

te recomiendo que utilices variables que no contengan caracteres con tildes, tambien te recomendaria que utilices "self" en vez de propio. esto te va a ayudar a que otros programadores puedan leer el codigo mas facilmente y cuando pongas codigo en el foro intenta utilizar el tag CODE para una mejor lectura.

saludos

nrm
Título: Re: Unir Dos Funciones En Una
Publicado por: sergio2 en Viernes 11 de Enero de 2008, 09:16
ok, muchas gracias

el tag code no se lo q es  <_<


por cierto, alguien sabe de alguna pagina donde mirar ejemplos de interfaz hechos con  gazpacho ( *.glade)?