1+ # PILAS Y COLAS
2+
3+ # PILAS / STACK (LIFO -> Last Input First Output)
4+
5+ stack = ["pelota roja" , "pelota azul" ]
6+ print (stack )
7+
8+
9+ # Añadir un nuevo elemento a la pila
10+ stack .append ("pelota verde" )
11+ print (stack )
12+
13+ # Acceder al último elemento, que es el primero en salir y eliminarlo
14+ print (stack [- 1 ])
15+ del stack [- 1 ]
16+ print (stack )
17+
18+ # Hacemos lo mismo con el método pop de python
19+ stack .append ("pelota verde" )
20+ print (stack )
21+ stack .pop ()
22+ print (stack )
23+
24+ # COLAS /QUEUE (FIFO -> First Input First Output)
25+
26+ queue = ["pelota roja" , "pelota azul" , "pelota verde" ]
27+
28+ # Acceder al primer elemento, que es el primero en salir y eliminarlo
29+ print (queue [0 ])
30+ del queue [0 ]
31+ print (queue )
32+ queue .insert (0 ,"pelota roja" )
33+
34+ # Hacemos lo mismo con el método pop de python
35+ print (queue )
36+ print (queue .pop (0 ))
37+ print (queue )
38+
39+
40+ # EJERCICIO EXTRA
41+ """
42+ - Utilizando la implementación de pila y cadenas de texto, simula el mecanismo adelante/atrás
43+ * de un navegador web. Crea un programa en el que puedas navegar a una página o indicarle
44+ * que te quieres desplazar adelante o atrás, mostrando en cada caso el nombre de la web.
45+ * Las palabras "adelante", "atrás" desencadenan esta acción, el resto se interpreta como
46+ * el nombre de una nueva web.
47+ """
48+ page_history = ["www.elmundo.es" , "elpais.es" , "www.abc.es" ]
49+
50+ def menu ():
51+
52+ position = 0
53+ while True :
54+ user_option = input ("Introduzca una opción: 'atras', 'adelante' o diga salir. Cualquier otra opción se añadirá como sitio web " )
55+ if user_option == "adelante" :
56+ print ("Ha elegido adelante" )
57+ position += 1
58+ if position > len (page_history ) - 1 :
59+ "No hay más páginas que mostrar"
60+ print (f"Estás en la página: { page_history [- 1 ]} " )
61+ else :
62+ print (page_history [position ])
63+ elif user_option == "atras" :
64+ print ("Ha elegido atrás" )
65+ position -= 1
66+ if position < 0 :
67+ print ("Estás en la página de inicio" )
68+ print (f"Estás en la página: { page_history [0 ]} " )
69+ else :
70+ print (page_history [position ])
71+ elif user_option == "salir" :
72+ print ("Ha salido exitosamente del programa" )
73+ break
74+ else :
75+ print (f"se añadirá la siguiente web: { user_option } " )
76+ page_history .append (user_option )
77+
78+ #menu()
79+
80+ # SEGUNDO EJERCICIO
81+
82+ """- Utilizando la implementación de cola y cadenas de texto, simula el mecanismo de una
83+ * impresora compartida que recibe documentos y los imprime cuando así se le indica.
84+ * La palabra "imprimir" imprime un elemento de la cola, el resto de palabras se
85+ * interpretan como nombres de documentos."""
86+
87+
88+ def printer ():
89+ print_queue = []
90+ while True :
91+ option = input ("Introduce una opción: imprimir o salir " )
92+ if option == "imprimir" :
93+ if len (print_queue ) == 0 :
94+ print ("No hay documentos en la cola de impresión" )
95+ else :
96+ print (f"Imprimiendo... { print_queue .pop (0 )} " )
97+ print (f"Documentos en la impresora: { print_queue } " )
98+ elif option == "salir" :
99+ print ("Has salido exitosamente del programa" )
100+ break
101+ else :
102+ print ("Documento añadido a la cola de impresión" )
103+ print_queue .append (option )
104+ print (f"Documentos en la impresora: { print_queue } " )
105+
106+ printer ()
0 commit comments