Skip to content

Commit 85c5be2

Browse files
#7 - Python
1 parent 04b9293 commit 85c5be2

File tree

1 file changed

+107
-0
lines changed

1 file changed

+107
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,107 @@
1+
'''EJERCICIO:
2+
Implementa los mecanismos de introducción y recuperación de elementos propios de las
3+
pilas (stacks - LIFO) y las colas (queue - FIFO) utilizando una estructura de array
4+
o lista (dependiendo de las posibilidades de tu lenguaje).
5+
6+
DIFICULTAD EXTRA (opcional):
7+
- Utilizando la implementación de pila y cadenas de texto, simula el mecanismo adelante/atrás
8+
de un navegador web. Crea un programa en el que puedas navegar a una página o indicarle
9+
que te quieres desplazar adelante o atrás, mostrando en cada caso el nombre de la web.
10+
Las palabras "adelante", "atrás" desencadenan esta acción, el resto se interpreta como
11+
el nombre de una nueva web.
12+
- Utilizando la implementación de cola y cadenas de texto, simula el mecanismo de una
13+
impresora compartida que recibe documentos y los imprime cuando así se le indica.
14+
La palabra "imprimir" imprime un elemento de la cola, el resto de palabras se
15+
interpretan como nombres de documentos.'''
16+
17+
# Implementación de pilas y colas en Python
18+
# Pilas/stack: LIFO (Last In, First Out)
19+
pila = []
20+
# push: añadir un elemento a la pila
21+
pila.append(1)
22+
pila.append(2)
23+
pila.append(3)
24+
pila.append(4)
25+
pila.append(5)
26+
print(pila)
27+
# pop: eliminar un elemento de la pila
28+
pila.pop()
29+
print(pila)
30+
print(pila.pop()) # este método devuelve el elemento eliminado
31+
print(pila)
32+
print(pila.pop())
33+
print(pila)
34+
35+
# Colas/queue: FIFO (First In, First Out)
36+
cola = []
37+
# enqueue: añadir un elemento a la cola
38+
cola.append(1)
39+
cola.append(2)
40+
cola.append(3)
41+
cola.append(4)
42+
cola.append(5)
43+
print(cola)
44+
# dequeue: eliminar un elemento de la cola
45+
cola.pop(0) # pop(0) elimina el primer elemento de la lista
46+
print(cola)
47+
print(cola.pop(0)) # este método devuelve el elemento eliminado
48+
print(cola)
49+
50+
# EXTRA
51+
'''- Utilizando la implementación de pila y cadenas de texto, simula el mecanismo adelante/atrás
52+
de un navegador web. Crea un programa en el que puedas navegar a una página o indicarle
53+
que te quieres desplazar adelante o atrás, mostrando en cada caso el nombre de la web.
54+
Las palabras "adelante", "atrás" desencadenan esta acción, el resto se interpreta como
55+
el nombre de una nueva web.
56+
- Utilizando la implementación de cola y cadenas de texto, simula el mecanismo de una
57+
impresora compartida que recibe documentos y los imprime cuando así se le indica.
58+
La palabra "imprimir" imprime un elemento de la cola, el resto de palabras se
59+
interpretan como nombres de documentos.'''
60+
61+
# Navegador web
62+
def web_browser():
63+
stack = []
64+
65+
while True:
66+
67+
action = input(
68+
"Añade una url o interactúa con palabras adelante/atrás/salir: "
69+
)
70+
71+
if action == "salir":
72+
print("Saliendo del navegador web.")
73+
break
74+
elif action == "adelante":
75+
pass
76+
elif action == "atrás" or action == "atras":
77+
if len(stack) > 0:
78+
stack.pop()
79+
else:
80+
stack.append(action)
81+
82+
if len(stack) > 0:
83+
print(f"Has navegado a la web: {stack[len(stack) - 1]}.")
84+
else:
85+
print("Estás en la página de inicio.")
86+
87+
#web_browser()
88+
89+
# Impresora compartida
90+
def printer():
91+
queue = []
92+
while True:
93+
action = input("Ingrese el nombre de un documento o 'imprimir'/'salir': ")
94+
if action == "salir":
95+
print("Saliendo de la impresora...")
96+
break
97+
elif action == "imprimir":
98+
if len(queue) > 0:
99+
print(f"Imprimiendo documento: {queue[0]}.")
100+
queue.pop(0)
101+
else:
102+
print("No hay documentos en la cola.")
103+
else:
104+
queue.append(action)
105+
print(f"Documentos en cola: {queue}")
106+
107+
printer()

0 commit comments

Comments
 (0)