Programación Web y Scripting > Python
Problema Con Programa
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
[#] Página Siguiente
Ir a la versión completa