• Domingo 6 de Octubre de 2024, 15:11

Autor Tema:  Problema Con Programa  (Leído 2581 veces)

fonk

  • Nuevo Miembro
  • *
  • Mensajes: 7
    • Ver Perfil
Problema Con Programa
« en: Sábado 7 de Octubre de 2006, 19:48 »
0
haber si alguien me puede ayudar, estoy haciendo un programilla y al ejecutarlo me da un error al final cuando escojo la opcion no hace absolutamen nada.
aqui les dejo el script
inventario = {"manzana": 250, "pera" : 200, "ciruela" : 100, "mango" : 500 }
#funciones
# se muestran las opciones del menu
def menu ():
 print "opcion 1 ", "compra de fruta"
 print "opcion 2 ", "se aumentan los suministros de frutas"
 print "opcion 3 ", "se añade una nueva fruta"
 print "opcion 4 ", "se elimina una fruta"
 print "opcion 5 ", "se muestra la cantidad de kilos de una fruta"
 print "opcion 6 ", "muestra todos los tipos de fruta que hay"
 print "opcion 7 ", "muestra el inventario"
 print "opcion 8 ", "sale del programa"
 opcion = raw_input("escoge una opcion: ")
 return opcion

# funcion da la opcion a comprar fruta
def compra_de_fruta ():
 z = 1
 while z == 1:
  fruta = raw_input("¿que fruta quieres?: ")
  if inventario.has_key(fruta): # si tenemos esa fruta rompemos el bucle
   break
  else:print " no tenemos de esa fruta vigila si la has puesto en plural"  
 while z == 1:
  cantidad = int(raw_input ("¿cuantos kilos quieres?: "))
  x = inventario[fruta]
  if cantidad > x: # si la cantidad es mayor a la que dispones se volvera a preguntar otra cantidad
   print " no tenemos tantos kilos nos tenemos que suministrar mas kilos"
  else: break
 inventario[fruta] -= cantidad # se resta lo dado al inventario para mantenerlo actualizado

# funcion que aumenta nuestros suministros de frutas
def aumenta_suministros():
 kilos = int(raw_input("¿cuantos kilos desea añadir?: "))
 fruta = raw_input("¿de que fruta se van a aumentar los suministros?: ")
 x = inventario[fruta] # se ven cuantos kilos se tenian antes en el inventario
 inventario[fruta] = kilos + x

# funcion que añade una fruta nueva
def anyade_fruta():
 fruta = raw_input ("¿que fruta vas a añadir?: ")
 kilos = int(raw_input("¿de cuantos kilos disponemos?: "))
 inventario[fruta] = kilos

# funcion que elimina una fruta
def elimina_fruta ():
 fruta = raw_input("¿que fruta desea eliminar?: ")
 del inventario [fruta]
 print inventario

# funcion que muestra la cantidad de kilos que tenemos de una determinada fruta
def kilos_fruta ():
 fruta = raw_inpu("¿de que fruta quiere saber sus kilos?: ")
 print inventario[fruta]

#funcion que muestra todas las frutas que tenemos
def frutas():
 print inventario.keys()
#funvion que muestra todo el inventario
def inventario ():
 print inventario


# cuerpo principal del programa

z == 1
while z == 1:
 menu()
 print opcion
 if opcion == 1:
  compra_de_fruta()
 elif opcion == 2:
  aumenta_suministros()
 elif opcion == 3:
  anyade_fruta
 elif opcion == 4:
  elimina_fruta()
 elif opcion == 5:
  kilos_fruta()
 elif opcion == 6:
  frutas()
 elif opcion == 7:
  inventario()
 elif opcion == 8:
  z == 0
  print "gracias por usar el programa"

muxas gracias de antemano y de paso si alguien me kiere decir otros errores o si esta mal estructurado y tal se agradece mucho

RadicalEd

  • Moderador
  • ******
  • Mensajes: 2430
  • Nacionalidad: co
    • Ver Perfil
Re: Problema Con Programa
« Respuesta #1 en: Lunes 9 de Octubre de 2006, 15:46 »
0
Una opción es que desde la misma función menu() llames a las otras funciones, no necesitas utilizar la función inventario.
El pasado son solo recuerdos, el futuro son solo sueños

RadicalEd

  • Moderador
  • ******
  • Mensajes: 2430
  • Nacionalidad: co
    • Ver Perfil
Re: Problema Con Programa
« Respuesta #2 en: Lunes 9 de Octubre de 2006, 19:21 »
0
No entiendo que hace el z == 1, eso es una comparación, no una asignación.
Aquí lo he modificado un poco y ya entra a los menús.

Código: Text
  1. inventario = {"manzana": 250, "pera" : 200, "ciruela" : 100, "mango" : 500 }
  2. # funcion da la opcion a comprar fruta
  3. def compra_de_fruta ():
  4.  z = 1
  5.  while z == 1:
  6.   fruta = raw_input("que fruta quieres?: ")
  7.   if inventario.has_key(fruta): # si tenemos esa fruta rompemos el bucle
  8.     break
  9.   else:print " no tenemos de esa fruta vigila si la has puesto en plural"
  10.   while z == 1:
  11.     cantidad = int(raw_input ("cuantos kilos quieres?: "))
  12.     x = inventario[fruta]
  13.     if cantidad > x: # si la cantidad es mayor a la que dispones se volvera a preguntar otra cantidad
  14.      print " no tenemos tantos kilos nos tenemos que suministrar mas kilos"
  15.     else: break
  16.     inventario[fruta] -= cantidad # se resta lo dado al inventario para mantenerlo actualizado
  17.  
  18. # funcion que aumenta nuestros suministros de frutas
  19. def aumenta_suministros():
  20.  kilos = int(raw_input("cuantos kilos desea anadir?: "))
  21.  fruta = raw_input("de que fruta se van a aumentar los suministros?: ")
  22.  x = inventario[fruta] # se ven cuantos kilos se tenian antes en el inventario
  23.  inventario[fruta] = kilos + x
  24.  
  25. # funcion que anade una fruta nueva
  26. def anyade_fruta():
  27.  fruta = raw_input ("que fruta vas a anadir?: ")
  28.  kilos = int(raw_input("de cuantos kilos disponemos?: "))
  29.  inventario[fruta] = kilos
  30.  
  31. # funcion que elimina una fruta
  32. def elimina_fruta ():
  33.  fruta = raw_input("que fruta desea eliminar?: ")
  34.  del inventario [fruta]
  35.  print inventario
  36.  
  37. # funcion que muestra la cantidad de kilos que tenemos de una determinada fruta
  38. def kilos_fruta ():
  39.  fruta = raw_inpu("de que fruta quiere saber sus kilos?: ")
  40.  print inventario[fruta]
  41.  
  42. #funcion que muestra todas las frutas que tenemos
  43. def frutas():
  44.  print inventario.keys()
  45.  #funvion que muestra todo el inventario
  46. #funciones
  47. # se muestran las opciones del menu
  48. print "opcion 1 ", "compra de fruta"
  49. print "opcion 2 ", "se aumentan los suministros de frutas"
  50. print "opcion 3 ", "se anade una nueva fruta"
  51. print "opcion 4 ", "se elimina una fruta"
  52. print "opcion 5 ", "se muestra la cantidad de kilos de una fruta"
  53. print "opcion 6 ", "muestra todos los tipos de fruta que hay"
  54. print "opcion 7 ", "muestra el inventario"
  55. print "opcion 8 ", "sale del programa"
  56. opcion = int(raw_input("escoge una opcion: "))
  57. #return opcion
  58. #print inventario
  59. # cuerpo principal del programa
  60. print opcion
  61. if opcion == 1:
  62.  compra_de_fruta()
  63. elif opcion == 2:
  64.  aumenta_suministros()
  65. elif opcion == 3:
  66.  anyade_fruta
  67. elif opcion == 4:
  68.  elimina_fruta()
  69. elif opcion == 5:
  70.  kilos_fruta()
  71. elif opcion == 6:
  72.  frutas()
  73. elif opcion == 7:
  74.  inventario()
  75. elif opcion == 8:
  76.  print "gracias por usar el programa"
  77.  
El pasado son solo recuerdos, el futuro son solo sueños

fonk

  • Nuevo Miembro
  • *
  • Mensajes: 7
    • Ver Perfil
Re: Problema Con Programa
« Respuesta #3 en: Viernes 13 de Octubre de 2006, 13:23 »
0
muxas gracias x contestar todavia no he podido testear tu modificacion pero lo del z == 1 me e equivocado es solo 1 = weno cuando lo testee te comento

NRM

  • Miembro MUY activo
  • ***
  • Mensajes: 279
  • Nacionalidad: ar
    • Ver Perfil
    • http://www.narrowmind.com.ar
Re: Problema Con Programa
« Respuesta #4 en: Sábado 14 de Octubre de 2006, 05:12 »
0
tal vez podrias usar el modulo cmd que viene con python para el manejo de las opciones.
aca te pongo un ejempo[1]
con respecto al tema del error, la verdad no probe tu codigo. para la proxima cuando ingreses codigo utiliza el tag CODE.

[1]
Código: Text
  1. #!/usr/bin/env python
  2.  
  3. import cmd
  4.  
  5. class PyFruit(cmd.Cmd):
  6.  
  7.   inventario = {"manzana": 250, "pera" : 200, "ciruela" : 100, "mango" : 500 }
  8.  
  9.   def __init__(self):
  10.     cmd.Cmd.__init__(self)
  11.     self.prompt = "> "
  12.     self.intro  = ("Frutas\n"
  13.                    "\n"
  14.                    "opciones:\n"
  15.                    " comprar     compra de frutas\n"
  16.                    " ...         ...\n"
  17.                    " inventario  muestra el inventario\n"
  18.                    " salir       salir del programa\n\n")
  19.  
  20.   def default(self, s):
  21.     print "Error: \'%s\' no es una opcion valida." % s
  22.  
  23.   def do_comprar(self, args):
  24.     fruta = raw_input("ingrese la fruta: ")
  25.     if self.inventario.has_key(fruta):
  26.       cantidad = int(raw_input("ingrese la cantidad: "))
  27.       if cantidad > self.inventario[fruta]:
  28.         print "Error: no tenemos esa cantidad."
  29.       else:
  30.         self.inventario[fruta] -= cantidad
  31.     else:
  32.       print "Error: \'%s\' no es una fruta valida." % fruta
  33.  
  34.   def help_comprar(self):
  35.     print " comprar     compra de frutas"
  36.  
  37.   def do_inventario(self, args):
  38.     print "Inventario:\n"
  39.     print "%s|%s" % ("fruta".center(20), "cantidad".center(20))
  40.     print "=" * 41
  41.     for key in self.inventario:
  42.       print "%s|%s" % (key.center(20), str(self.inventario[key]).center(20))
  43.  
  44.   def help_inventario(self):
  45.     print " inventario  muestra el inventario"
  46.  
  47.   def do_salir(self, args):
  48.     return 1
  49.  
  50.   def help_salir(self):
  51.     print " salir       salir del programa"
  52.  
  53. if __name__ == '__main__':
  54.   obj = PyFruit()
  55.   obj.cmdloop()
  56.  

fonk

  • Nuevo Miembro
  • *
  • Mensajes: 7
    • Ver Perfil
Re: Problema Con Programa
« Respuesta #5 en: Domingo 15 de Octubre de 2006, 16:31 »
0
ok muxas gracias asi esta muxo mejor