forked from mouredev/roadmap-retos-programacion
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathFedeAirala.py
204 lines (149 loc) · 6 KB
/
FedeAirala.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
# 07 Pilas y Colas con Python
"""
Breve resumen: las pilas y las colas son estructuras de datos en el orden en que ingresan y en el que salen de
la misma tiene un orden. Los datos entran a la estructura de manera ordena y el orden en el que salen en una pila
es de forma descendente, esto quiere decir que el último en ingresar es el primero en salir en cambio en las colas
es de forma ascendente, el primero en entrar es el primero en salir, todo esto hasta que no queden datos por
recorrer en la estructura.
"""
# Ejemplo de Cola deque
from collections import deque # Librería en Python para tratar las pilas y colas
cola = deque() # Estructura de tipo cola
cola.append(0) # Con append se insertan datos a la cola
cola.append(1)
cola.append(2)
cola.append(3)
cola.append(4)
print (f" Cola completa: {cola}") # Impresión de cola completa
for i in range (len(cola)):
sacar_datos = cola.popleft() # popleft va retirando los datos de la cola de manera ascendente
print (f"Dato extraído: {sacar_datos}")
print (f"Datos que quedan en la cola: {cola}")
# Ejemplo de cola con listas
cola=[]
cola.append(0)
cola.append(1)
cola.append(2)
cola.append(3)
cola.append(4)
for i in range (len(cola)):
print (cola[i])
# Ejemplo de Pilas deque
pila = deque() # Estructura de tipo pila
pila.append(0) # Con append se insertan datos a la pila
pila.append(1)
pila.append(2)
pila.append(3)
pila.append(4)
print (f" Pila completa: {pila}") # Impresión de pila completa
for i in range (len(pila)):
sacar_datos = pila.pop() # pop va retirando los datos de la pila de manera descendente
print (f"Dato extraído: {sacar_datos}")
print (f"Datos que quedan en la cola: {pila}")
"""Otras formas de trabajar con pilas y colas es con la estructiura de listas, ya que estas se pueden tratar
con el concepto de las mismas variando en cuestios """
# Ejemplo de pilas con listas
#Pilas
pila = []
pila.append (0)
pila.append (1)
pila.append (2)
pila.append (3)
pila.append (4)
n = len(pila)
for i in range (n):
print (pila[n-i-1])
""" * DIFICULTAD EXTRA (opcional):
* - Utilizando la implementación de pila y cadenas de texto, simula el mecanismo adelante/atrás
* de un navegador web. Crea un programa en el que puedas navegar a una página o indicarle
* que te quieres desplazar adelante o atrás, mostrando en cada caso el nombre de la web.
* Las palabras "adelante", "atras" desencadenan esta acción, el resto se interpreta como
* el nombre de una nueva web.
* - Utilizando la implementación de cola y cadenas de texto, simula el mecanismo de una
* impresora compartida que recibe documentos y los imprime cuando así se le indica.
* La palabra "imprimir" imprime un elemento de la cola, el resto de palabras se
* interpretan como nombres de documentos.
"""
# Primer ejercicio de dificulta extra: Pila
list_web = []
index=0
def list_empty(list_web):
if len(list_web)==0:
print ("Lista vacía")
return True
else:
return False
def navegador_web():
while True:
accion = input (" 1 Buscar web ! 2 Atrás ! 3 Adelante ! 4 Listar Web's ! 5 Sacar web de lista ! 6 Salir")
global index
match accion:
case "1":
web = input("Ingrese nombre de la web:")
list_web.append(web)
index+=1
print(list_web)
case "2":
if not list_empty(list_web):
if index==1:
print (f"Estás en la primer página: {list_web[index-1]}")
else:
index-=1
print (list_web[index-1])
case "3":
if not list_empty(list_web):
if index == (len(list_web)):
print (f"Estás en la última página: {list_web[index-1]}")
else:
index+=1
print (list_web[index-1])
case "4":
print (f"Listado de web ingresadas: {list_web}")
case "5":
if not list_empty(list_web):
list_web.pop()
print (list_web)
index -= 1
case "6":
print("Saliendo de la aplicación.")
break
case _:
print("Opción no válida. Elige una opción del 1 al 5.")
navegador_web()
# Segundo ejercicio dificultad extra: Cola
doc_print = deque()
index_2 = 0
doc = 0
doc_impresos = []
def doc_empty(doc_print):
if len(doc_print)==0:
print ("No hay documentos en la cola de impresión")
return True
else:
return False
def print_doc():
while True:
accion = input (" 1 Imprimir ! 2 Ingresar Documento ! 3 Listar Documentos ! 4 Documentos impresos ! 5 Salir")
global index_2,doc
match accion:
case "1":
index_2 -= 1
if not doc_empty(doc_print):
print(doc_print[index])
doc_impresos.append(doc_print[index])
doc_print.popleft()
case "2":
print ("Ingreso de documento a la cola de impresión")
doc+=1
doc_print.append(doc)
print (doc_print)
case "3":
print (f"En cola de impresión: {doc_print}")
case "4":
print (doc_impresos)
case "5":
print ("Saliendo de impresión")
break
case _:
print("Opción no válida. Elige una opción del 1 al 4.")
print_doc()