Programación Web y Scripting > Python

 Problema Con Programa

(1/2) > >>

fonk:
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:
Una opción es que desde la misma función menu() llames a las otras funciones, no necesitas utilizar la función inventario.

RadicalEd:
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 ---inventario = {"manzana": 250, "pera" : 200, "ciruela" : 100, "mango" : 500 }# funcion da la opcion a comprar frutadef 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 frutasdef aumenta_suministros(): kilos = int(raw_input("cuantos kilos desea anadir?: ")) 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 anade una fruta nuevadef anyade_fruta(): fruta = raw_input ("que fruta vas a anadir?: ") kilos = int(raw_input("de cuantos kilos disponemos?: ")) inventario[fruta] = kilos # funcion que elimina una frutadef 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 frutadef kilos_fruta (): fruta = raw_inpu("de que fruta quiere saber sus kilos?: ") print inventario[fruta] #funcion que muestra todas las frutas que tenemosdef frutas(): print inventario.keys() #funvion que muestra todo el inventario#funciones# se muestran las opciones del menuprint "opcion 1 ", "compra de fruta"print "opcion 2 ", "se aumentan los suministros de frutas"print "opcion 3 ", "se anade 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 = int(raw_input("escoge una opcion: "))#return opcion#print inventario# cuerpo principal del programaprint opcionif opcion == 1: compra_de_fruta()elif opcion == 2: aumenta_suministros()elif opcion == 3: anyade_frutaelif opcion == 4: elimina_fruta()elif opcion == 5: kilos_fruta()elif opcion == 6: frutas()elif opcion == 7: inventario()elif opcion == 8: print "gracias por usar el programa" 

fonk:
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:
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 ---#!/usr/bin/env python import cmd class PyFruit(cmd.Cmd):   inventario = {"manzana": 250, "pera" : 200, "ciruela" : 100, "mango" : 500 }   def __init__(self):    cmd.Cmd.__init__(self)    self.prompt = "> "    self.intro  = ("Frutas\n"                   "\n"                   "opciones:\n"                   " comprar     compra de frutas\n"                   " ...         ...\n"                   " inventario  muestra el inventario\n"                   " salir       salir del programa\n\n")   def default(self, s):    print "Error: \'%s\' no es una opcion valida." % s   def do_comprar(self, args):    fruta = raw_input("ingrese la fruta: ")    if self.inventario.has_key(fruta):      cantidad = int(raw_input("ingrese la cantidad: "))      if cantidad > self.inventario[fruta]:        print "Error: no tenemos esa cantidad."      else:        self.inventario[fruta] -= cantidad    else:      print "Error: \'%s\' no es una fruta valida." % fruta   def help_comprar(self):    print " comprar     compra de frutas"   def do_inventario(self, args):    print "Inventario:\n"    print "%s|%s" % ("fruta".center(20), "cantidad".center(20))    print "=" * 41    for key in self.inventario:      print "%s|%s" % (key.center(20), str(self.inventario[key]).center(20))   def help_inventario(self):    print " inventario  muestra el inventario"   def do_salir(self, args):    return 1   def help_salir(self):    print " salir       salir del programa" if __name__ == '__main__':  obj = PyFruit()  obj.cmdloop() 

Navegación

[0] Índice de Mensajes

[#] Página Siguiente

Ir a la versión completa