All pastes #721134 Raw Edit

PILAS by EKZ

public python v1 · immutable
#721134 ·published 2007-09-30 23:42 UTC
rendered paste body
#!/usr/env/python# −*− coding: UTF−8 −*−import osdef ingresa_pila():	print "Bienvenido\n"	print "A continuación ingrese los elementos de la pila (máx 20)"	print "Para detener, ingrese el valor -1 \n"	contador=1	while contador < 21 :		var = input("Elemento en la posición %s : " % (contador,) )		if var == -1: break		pila.append(var) 		contador = contador+1	#print "\nUsted ingresó la pila: \n\t" , piladef pausa():	raw_input("\nPulse la tecla 'enter' para continuar ")	os.system('clear')def mostrar():	print "La pila es: \n\t" , pila 	def tope():	if len(pila) > 0:		print "El elemento tope de la pila es: " , pila[-1]	else:		print "No hay un elemento tope para mostrar"	def push():	if len(pila) < 20 :		agregar=input("Ingrese el elemento que desea añadir: ")		pila.append(agregar)		print "El elemento ha sido añadido correctamente"	else:		print "No se pueden añadir más elementos a la pila"def pop():	if len(pila) > 0:		del pila[-1]		print "Se ha eliminado el elemento tope de la pila"	else:		print "No hay un elemento tope para quitar"def anula():	globals()["pila"] = []	print "La pila se ha vaciado completamente"	def vacia():	if len(pila) == 0 :		print "La pila está vacía"	else:		print "La pila contiene elementos"		def ordenar():	if len(pila) > 0:		pila_aux1 = pila		pila_aux2 = []		pila_aux3 = []								var_aux = pila_aux1[-1]		del pila_aux1[-1]				while True:								for i in range(0,len(pila_aux1)):				if pila_aux1[-1] <= var_aux :					pila_aux2.append(pila_aux1[-1])					del pila_aux1[-1]				else:					pila_aux2.append(var_aux)					var_aux = pila_aux1[-1]					del pila_aux1[-1]									pila_aux3.append(var_aux)			var_aux = pila_aux2[-1]			del pila_aux2[-1]												for i in range(0,len(pila_aux2)):				if pila_aux2[-1] <= var_aux :					pila_aux1.append(pila_aux2[-1])					del pila_aux2[-1]				else:					pila_aux1.append(var_aux)					var_aux = pila_aux2[-1]					del pila_aux2[-1]									if len(pila_aux1)>0:				pila_aux3.append(var_aux)				var_aux = pila_aux1[-1]				del pila_aux1[-1]															if len(pila_aux2) == 0:				if len(pila_aux1) == 0: break				## una vez fuera del while, hacer la asignacion final				pila_aux3.append(var_aux)				globals()["pila"] = pila_aux3		print "\nLa pila fue correctamente ordenada"					else:		print "La pila no tiene elementos para ordenar"def defecto():	print "\nOpción no válida"	""" No hay switch ni case en Python ... ya que puede hacerse mejor usando sus OO capacidadesy un diccionario """def menu():		while True:		pausa()		print "\n\n\t\t\t *Menú de acciones* \n"		print "Opciones disponibles: \n"		print "1. Mostrar la pila"		print "2. Mostrar el elemento tope"		print "3. Agregar un elemento a la pila"		print "4. Borrar el elemento tope"		print "5. Anular la pila completamente"		print "6. La pila se encuentra vacía?"		print "7. Ordenar la pila de de mayor a menor"		print "9. Salir \n"				disponibles = {		"1": mostrar,		"2": tope,		"3": push,		"4": pop, 		"5": anula,		"6": vacia,		"7": ordenar}						opcion = raw_input("Qué desea hacer? ")		print ""		if opcion == "9": break		disponibles.get(opcion,defecto) ()					## Éste es el programaos.system('clear')print "\t\t\t************************"print "\t\t\t*                      *"print "\t\t\t* Tratamiento de Pilas *"print "\t\t\t*                      *"print "\t\t\t************************"pila=[]ingresa_pila()	menu()print "\nAdios!\n"