Skip to content

Commit 4997c56

Browse files
committed
Solución #8 - Python
1 parent def7f6e commit 4997c56

File tree

2 files changed

+184
-2
lines changed

2 files changed

+184
-2
lines changed

Roadmap/07 - PILAS Y COLAS/python/oriaj3.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
"""
2-
06 - PILAS Y COLAS
2+
07 - PILAS Y COLAS
33
Autor de la solución: Oriaj3
44
Teoría:
55
Las pilas y las colas son estructuras de datos que permiten almacenar y recuperar elementos.
@@ -102,7 +102,7 @@ def mostrar_cola():
102102
"""
103103

104104
#Al ser una pila, cuando se añade un elemento se añade al final, y cuando se saca se saca del final
105-
def w_new(elemento: str)-> str:
105+
def w_new(elemento: str)-> str:
106106
global lista_web
107107
lista_web.append(elemento)
108108
return str(elemento)
Lines changed: 182 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,182 @@
1+
"""
2+
08 - CLASES
3+
Autor de la solución: Oriaj3
4+
Teoría:
5+
Las clases son una forma de organizar y estructurar el código.
6+
En la mayoría de los lenguajes de programación, las clases son la base de la
7+
programación orientada a objetos.
8+
9+
Una clase es una plantilla para crear objetos. Un objeto es una instancia de una
10+
clase. Cuando se crea un objeto, se le asigna un espacio en memoria y se le
11+
asignan los atributos y métodos de la clase.
12+
13+
Las clases pueden tener atributos y métodos:
14+
*Los atributos son variables que pertenecen a la clase.
15+
*Los métodos son funciones que pertenecen a la clase.
16+
17+
También pueden tener un inicializador, que es un método especial que se ejecuta
18+
cuando se crea un objeto.
19+
20+
En Python, las clases se definen con la palabra clave class, seguida del nombre
21+
de la clase y dos puntos. Los atributos y métodos de la clase se definen dentro
22+
de la clase, con sangría.
23+
24+
Ejemplo:
25+
class Persona:
26+
def __init__(self, nombre, edad):
27+
self.nombre = nombre
28+
self.edad = edad
29+
30+
def saludar(self):
31+
print(f'Hola, me llamo {self.nombre} y tengo {self.edad} años')
32+
33+
También existen los destructores y los métodos estáticos, pero no son tan
34+
comunes. En python se definen con las palabras clave __del__ y @staticmethod
35+
respectivamente.
36+
37+
Para crear un objeto de una clase, se llama al nombre de la clase como si fuera
38+
una función, pasando los argumentos que requiera el inicializador.
39+
40+
Ejemplo:
41+
persona1 = Persona('Juan', 25)
42+
persona1.saludar()
43+
44+
En este ejemplo, se crea un objeto de la clase Persona, con el nombre 'Juan' y
45+
la edad 25. Luego se llama al método saludar del objeto persona1.
46+
47+
Para acceder a los atributos y métodos de un objeto, se utiliza la notación de
48+
punto.
49+
50+
Ejemplo:
51+
print(persona1.nombre)
52+
53+
También es importante mencionar que en Python, todos los atributos y métodos de
54+
una clase son públicos, a menos que se especifique lo contrario. Esto significa
55+
que se pueden acceder y modificar desde cualquier parte del código.
56+
57+
Ejemplo:
58+
persona1.nombre = 'Pedro'
59+
60+
En este ejemplo, se cambia el nombre del objeto persona1 a 'Pedro'.
61+
62+
Ejemplo private:
63+
class Persona:
64+
def __init__(self, nombre, edad):
65+
self.__nombre = nombre
66+
self.__edad = edad
67+
68+
def saludar(self):
69+
print(f'Hola, me llamo {self.__nombre} y tengo {self.__edad} años')
70+
71+
En este ejemplo, se utiliza dos guiones bajos antes del nombre de los atributos
72+
"""
73+
74+
# EJERCICIO BÁSICO:
75+
"""
76+
EJERCICIO:
77+
Explora el concepto de clase y crea un ejemplo que implemente un inicializador,
78+
atributos y una función que los imprima (teniendo en cuenta las posibilidades
79+
de tu lenguaje).
80+
Una vez implementada, créala, establece sus parámetros, modifícalos e imprímelos
81+
utilizando su función.
82+
"""
83+
84+
class persona1:
85+
def __init__(self, nombre, edad) -> None:
86+
self.__nombre = nombre
87+
self.__edad = edad
88+
89+
def setNombre(self, nombre) -> None:
90+
self.__nombre = nombre
91+
92+
def getNombre(self) -> str:
93+
return self.__nombre
94+
95+
def setEdad(self, edad) -> None:
96+
self.__edad = edad
97+
98+
def getEdad(self) -> str:
99+
return self.__edad
100+
101+
def print(self) -> None:
102+
print(f"La persona se llama {self.__nombre} y tiene {self.__edad} años.")
103+
104+
pepe = persona1("Pepe", 23)
105+
106+
pepe.print()
107+
108+
pepe.setNombre("Juan")
109+
pepe.setEdad(25)
110+
111+
pepe.print()
112+
113+
print(pepe.getNombre())
114+
print(pepe.getEdad())
115+
116+
"""
117+
DIFICULTAD EXTRA (opcional):
118+
Implementa dos clases que representen las estructuras de Pila y Cola (estudiadas
119+
en el ejercicio número 7 de la ruta de estudio)
120+
- Deben poder inicializarse y disponer de operaciones para añadir, eliminar,
121+
retornar el número de elementos e imprimir todo su contenido.
122+
"""
123+
124+
class pila:
125+
lista = []
126+
127+
def anadir(self, elemento) -> None:
128+
self.lista.append(elemento)
129+
130+
def sacar(self) -> any:
131+
return self.lista.pop()
132+
133+
def tamano(self) -> int:
134+
return len(self.lista)
135+
136+
def imprimir(self) -> None:
137+
print(self.lista)
138+
139+
# Ejemplo de uso
140+
p = pila()
141+
p.anadir(1)
142+
p.anadir(2)
143+
p.anadir(3)
144+
145+
print("LISTAS.....")
146+
p.imprimir()
147+
print(f"El tamaño es: {p.tamano()}")
148+
print(p.sacar())
149+
p.imprimir()
150+
print(f"El tamaño es: {p.tamano()}")
151+
152+
153+
class cola:
154+
cola = []
155+
156+
def anadir(self, elemento) -> None:
157+
self.cola.append(elemento)
158+
159+
def sacar(self) -> any: # Add return type annotation
160+
return self.cola.pop(0)
161+
162+
def tamano(self) -> int:
163+
return len(self.cola)
164+
165+
def imprimir(self) -> None:
166+
print(self.cola)
167+
168+
# Ejemplo de uso
169+
c = cola()
170+
c.anadir(1)
171+
c.anadir(2)
172+
c.anadir(3)
173+
174+
print("COLAS.....")
175+
c.imprimir()
176+
print(f"El tamaño es: {c.tamano()}")
177+
print(c.sacar())
178+
c.imprimir()
179+
print(f"El tamaño es: {c.tamano()}")
180+
181+
182+

0 commit comments

Comments
 (0)