Skip to content

Commit 07aca8c

Browse files
authored
Merge pull request mouredev#7398 from jorgeadamowicz/main
#7 - python
2 parents 1bf4f66 + 47de8ad commit 07aca8c

File tree

1 file changed

+110
-0
lines changed

1 file changed

+110
-0
lines changed
Lines changed: 110 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,110 @@
1+
## Pilas Y Colas
2+
3+
# pilas (stacks - LIFO)
4+
5+
my_stack = [] #creo una lista
6+
7+
#push
8+
my_stack.append(1) #apilo, el primer elemento
9+
my_stack.append(2) #apilo, el segundo elemento
10+
my_stack.append(3) #apilo, el tercer elemento
11+
12+
print(my_stack)
13+
14+
#pop
15+
my_stack_item = my_stack[len(my_stack)-1] #recupero el ultimo elemento en mi lista(my_stack)
16+
#del my_stack[len(my_stack)-1] # borra el último elemento de mi lista
17+
del my_stack[-1] #tambien se puede eliminar el elemento a travez de su indice
18+
19+
print(my_stack_item)
20+
print(my_stack)
21+
22+
#desapilando un elemento a travez del método ".pop()"
23+
my_pop_item = my_stack.pop()
24+
25+
print(my_pop_item)
26+
print(my_stack)
27+
28+
29+
# Colas (Queues - FIFO)
30+
my_queue = []
31+
32+
#enqueue
33+
my_queue.append(1)
34+
my_queue.append(2)
35+
my_queue.append(3)
36+
37+
print(my_queue)
38+
39+
#dequeue
40+
41+
print(my_queue.pop(0)) # indicar el indice "0", que es el mas viejo de la lista.
42+
del my_queue[0] #tambien lo podemos hacer como en el caso de pila pero esta vez asignanos el indice "0"
43+
44+
"""
45+
Extra
46+
"""
47+
48+
def web_navigator():
49+
50+
stack_web = []
51+
stack_foward = []
52+
53+
while True:
54+
action = input("Añade una ruta, o selecciona atras, adelante o salir: \n")
55+
56+
if action == "salir":
57+
print("Saliendo de la aplicación")
58+
break
59+
elif action == "adelante":
60+
if stack_foward: # equiva a -> len(stack_foward)>0
61+
siguiente_pagina = stack_foward.pop()# recupera la pagina hacia adelante
62+
stack_web.append(siguiente_pagina) # la añade al historial
63+
64+
else:
65+
print("No hay paginas para avanzar.")
66+
67+
elif action == "atras":
68+
if stack_web: # equivale a -> len(stack_web)> 0:
69+
ultima_pagina = stack_web.pop() #retira la pagina actual y la asigna a stack_foward
70+
stack_foward.append(ultima_pagina)
71+
if stack_web:
72+
print(f"te envuentras en el sitio: {stack_web[-1]}\n")
73+
else:
74+
print("Te encuentras en la pagina principal. el historial de navegacion se encuentra vacio.")
75+
76+
else:
77+
print("Te encuentras en la pagina principal. el historial de navegacion se encuentra vacio.")
78+
79+
else:
80+
stack_web.append(action)
81+
stack_foward.clear()
82+
83+
print(f"Historial de navegación: {stack_web}")
84+
print(f"pagina hacia adelante: {stack_foward}\n")
85+
86+
web_navigator()
87+
88+
89+
"""
90+
Nota: se implementó un pila temporal, para recuperar el valor alojado en ".pop" y tener la opción de hacer
91+
un paso "adelante". cuando el usuario ingresa una nueva url la pila temporal se reinicia.
92+
"""
93+
94+
def shared_printer():
95+
96+
cola_impresion = []
97+
while True:
98+
action = input("Añade un documento a la cola, selecciona imprimir o salir: \n")
99+
100+
if action == "salir":
101+
break
102+
elif action == "imprimir":
103+
if len(cola_impresion) > 0:
104+
print(f" Imprimiendo el documento: {cola_impresion.pop(0)}\n")
105+
else:
106+
print("la cola de impresión esta vacia. no hay documentos por imprimir.")
107+
else:
108+
cola_impresion.append(action)
109+
print(f"documentos en cola de impresion:\n {cola_impresion}")
110+
shared_printer()

0 commit comments

Comments
 (0)