forked from mouredev/roadmap-retos-programacion
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathJesusAntonioEEscamilla.py
195 lines (157 loc) · 4.7 KB
/
JesusAntonioEEscamilla.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
# #07 - Python -> Jesus Antonio Escamilla
"""
EJERCIÓ
"""
class Stack_:
def __init__(self):
self.stack = []
def push(self, item):
self.stack.append(item)
def pop(self):
if not len(self.stack) == 0:
return self.stack.pop()
else:
raise IndexError("pop from an empty stack")
def peek(self):
if not len(self.stack) == 0:
return self.stack[-1]
else:
raise IndexError("peek from an empty stack")
def show(self):
return self.stack
print("STACKS - PILAS - LIFO")
stack = Stack_()
stack.push(10)
stack.push(20)
stack.push(30)
print(f"Mostrando las pilas: {stack.show()}")
print(f"Eliminando un elemento de la pila: {stack.pop()}")
print(f"Ultimo elemento de la pila: {stack.peek()}")
print(f"Mostrando las pilas: {stack.show()}")
class Queue_:
def __init__(self):
self.queue = []
def enqueue(self, item):
self.queue.append(item)
def dequeue(self):
if not len(self.queue) == 0:
return self.queue.pop(0)
else:
raise IndexError("dequeue from an empty queue")
def front(self):
if not len(self.queue) == 0:
return self.queue[0]
else:
raise IndexError("front from an empty queue")
def show(self):
return self.queue
print("QUEUE - COLAS - FIFO")
queue = Queue_()
queue.enqueue(40)
queue.enqueue(50)
queue.enqueue(60)
print(f"Mostrando las cola: {queue.show()}")
print(f"Eliminando un elemento de la cola: {queue.dequeue()}")
print(f"Primer elemento de la cola: {queue.front()}")
print(f"Mostrando las cola: {queue.show()}")
"""
EXTRA
"""
# PILAS
# Sitio Web
class Stack:
def __init__(self):
self.stack = []
def push(self, item):
self.stack.append(item)
def pop(self):
if not self.is_empty():
return self.stack.pop()
else:
raise IndexError("pop from an empty stack")
def is_empty(self):
return len(self.stack) == 0
class BrowserNavigation:
def __init__(self):
self.back_stack = Stack()
self.forward_stack = Stack()
self.current_page = None
def visit(self, page):
if self.current_page:
self.back_stack.push(self.current_page)
self.current_page = page
self.forward_stack = Stack()
self.show_current_page()
def back(self):
if not self.back_stack.is_empty():
self.forward_stack.push(self.current_page)
self.current_page = self.back_stack.pop()
else:
print("No pages in history to go forward to")
self.show_current_page()
def forward(self):
if not self.forward_stack.is_empty():
self.back_stack.push(self.current_page)
self.current_page = self.forward_stack.pop()
else:
print("No pages in history to go back to")
self.show_current_page()
def show_current_page(self):
if self.current_page:
print(f"Current page: {self.current_page}")
else:
print("No page currently loaded")
browser = BrowserNavigation()
while True:
command = input("Ingrese una pagina, 'adelante' o 'atrás' (o 'salir' para terminar):\n").strip()
if command == "salir":
break
elif command == "adelante":
browser.forward()
elif command == "atras":
browser.back()
else:
browser.visit(command)
# COLAS
# Impresora
class Queue:
def __init__(self):
self.queue = []
def enqueue(self, item):
self.queue.append(item)
def dequeue(self):
if not self.is_empty():
return self.queue.pop(0)
else:
raise IndexError("dequeue from an empty queue")
def is_empty(self):
return len(self.queue) == 0
def show(self):
return self.queue
class PrinterQueue:
def __init__(self):
self.queue = Queue()
def add_document(self, document):
self.queue.enqueue(document)
self.show_queue()
def print_document(self):
if not self.queue.is_empty():
printed_doc = self.queue.dequeue()
print(f"Printing document: {printed_doc}")
else:
print("No documents to print")
self.show_queue()
def show_queue(self):
if self.queue.is_empty():
print("The print queue is empty")
else:
print(f"Documents in queue: {self.queue.show()}")
printer = PrinterQueue()
while True:
command = input("Ingrese un documento o 'imprimir' (o 'salir' para terminar):\n").strip()
if command == "salir":
break
elif command == "imprimir":
printer.print_document()
else:
printer.add_document(command)