├── ejercicios
├── adivina_el_numero.py
├── break_continue.py
├── bucles.py
├── condicionales.py
├── conversor.py
├── diccionarios.py
├── for.py
├── funciones.py
├── generator_contrasena.py
├── palindromo.py
├── prueba_primalidad.py
└── recorrer.py
└── readme.md
/ejercicios/adivina_el_numero.py:
--------------------------------------------------------------------------------
1 | import random
2 |
3 |
4 | def run():
5 | numero_aleatorio = random.randint(1, 100)
6 | numero_elegido = int(input('Elige un número entre 1 y 100: '))
7 |
8 | while numero_elegido != numero_aleatorio:
9 | if numero_elegido < numero_aleatorio:
10 | print('Busca un número más grande')
11 | else:
12 | print('Busca un número más pequeño')
13 | numero_elegido = int(input('Elige otro número: '))
14 | print('¡Ganaste!')
15 |
16 |
17 | if __name__ == "__main__":
18 | run()
19 |
--------------------------------------------------------------------------------
/ejercicios/break_continue.py:
--------------------------------------------------------------------------------
1 | def run():
2 | # for contador in range(1000):
3 | # if contador % 2 != 0:
4 | # continue
5 | # print(contador)
6 | # for i in range(10000):
7 | # print(i)
8 | # if i == 5678:
9 | # break
10 | # texto = input('Escribe un texto: ')
11 | # for letra in texto:
12 | # if letra == 'o':
13 | # break
14 | # print(letra)
15 | LIMITE = 10
16 | contador = 0
17 | while contador < LIMITE:
18 | print(contador)
19 | contador += 1
20 | if contador == 5:
21 | break
22 |
23 |
24 | if __name__ == '__main__':
25 | run()
26 |
--------------------------------------------------------------------------------
/ejercicios/bucles.py:
--------------------------------------------------------------------------------
1 | def run():
2 | LIMITE = 100000
3 | contador = 0
4 | potencia_2 = 2**contador
5 | while potencia_2 < LIMITE:
6 | print('2 elevado a ' + str(contador) +
7 | ' es igual a: ' + str(potencia_2))
8 | contador += 1
9 | potencia_2 = 2**contador
10 |
11 |
12 | if __name__ == "__main__":
13 | run()
14 |
--------------------------------------------------------------------------------
/ejercicios/condicionales.py:
--------------------------------------------------------------------------------
1 | # edad = int(input('Escribe tu edad: '))
2 |
3 | # if edad > 17:
4 | # print('Eres mayor de edad')
5 | # else:
6 | # print('Eres menor de edad')
7 |
8 | numero = int(input('Escribe un número: '))
9 |
10 | if numero > 5:
11 | print('Es mayor a 5')
12 | elif numero == 5:
13 | print('Es igual a 5')
14 | else:
15 | print('Es menor a 5')
16 |
--------------------------------------------------------------------------------
/ejercicios/conversor.py:
--------------------------------------------------------------------------------
1 | def conversor(tipo_pesos, valor_dolar):
2 | pesos = input('¿Cuántos pesos ' + tipo_pesos + ' tienes?: ')
3 | pesos = float(pesos)
4 | dolares = pesos / valor_dolar
5 | dolares = round(dolares, 2)
6 | dolares = str(dolares)
7 | print('Tienes $' + dolares + ' dólares')
8 |
9 |
10 | menu = """
11 | Bienvenido al conversor de monedas 💰
12 |
13 | 1 - Pesos Colombianos 🇴
14 | 2 - Pesos Argentinos 🇷
15 | 3 - Pesos mexicanos 🇽
16 |
17 | Elige una opción: """
18 |
19 | opcion = int(input(menu))
20 |
21 | if opcion == 1:
22 | conversor('Colombianos', 3875)
23 |
24 | elif opcion == 2:
25 | conversor('Argentinos', 65)
26 | elif opcion == 3:
27 | conversor('Mexicanos', 24)
28 | else:
29 | print('Ingrese una opción Correcta por favor')
30 |
31 |
32 | ### DOLARES A PESOS COLOMBIANOS ###
33 |
34 | # Solicitamos el valor en dolares y lo convertimos a flotante
35 | # dolar = float(input('¿Cúantos dólares tienes?: '))
36 |
37 | # # hacemos la operacion multiplicando el valor del dolar en peso colombiano por cada dolar que poseé el usuario
38 | # # lo redondeamos y lo convertimos a string a la vez
39 | # peso_cop = str(round(valor_dolar * dolar, 1))
40 |
41 | # print('Tienes $'+peso_cop+' Pesos Colombianos')
42 |
--------------------------------------------------------------------------------
/ejercicios/diccionarios.py:
--------------------------------------------------------------------------------
1 | def run():
2 | mi_diccionario = {
3 | # Los elementos tienen que ir separados por coma
4 | 'llave1': 1,
5 | 'llave2': 2,
6 | 'llave3': 3,
7 | }
8 |
9 | # print(mi_diccionario['llave1'])
10 | # print(mi_diccionario['llave2'])
11 | # print(mi_diccionario['llave3'])
12 |
13 | poblacion_paises = {
14 | 'Argentina': 4493872,
15 | 'Brazil': 1023102312,
16 | 'Colombia': 50372424,
17 | }
18 |
19 | # print(poblacion_paises['Argentina'])
20 |
21 | # for pais in poblacion_paises.keys():
22 | # print(pais)
23 |
24 | # for pais in poblacion_paises.values():
25 | # print(pais)
26 |
27 | # Como el metodo nos devuelve dos elementos tenemos que agregar un segundo
28 | # elemento iterador en el for para no tener errores
29 | for pais, poblacion in poblacion_paises.items():
30 | print(pais + ' tiene ' + str(poblacion) + ' habitantes')
31 |
32 |
33 | if __name__ == "__main__":
34 | run()
35 |
--------------------------------------------------------------------------------
/ejercicios/for.py:
--------------------------------------------------------------------------------
1 | # contador = 1
2 | # print(contador)
3 |
4 |
5 | # while contador < 1000:
6 | # contador += 1
7 | # print(contador)
8 |
9 | # for contador in range(1000):
10 | # print(contador)
11 |
12 | # a = list(range(1000))
13 | # print(a)
14 |
15 | # for contador in range(1, 1001):
16 | # print(contador)
17 |
18 | for i in range(10):
19 | print(11 * i)
20 |
--------------------------------------------------------------------------------
/ejercicios/funciones.py:
--------------------------------------------------------------------------------
1 | # def imprimir_mensaje():
2 | # print('Mensaje especial: ')
3 | # print('Estoy aprendiendo a usar funciones')
4 |
5 |
6 | # imprimir_mensaje()
7 | # imprimir_mensaje()
8 | # imprimir_mensaje()
9 |
10 | # def convesacion(mensaje):
11 | # print('Hola')
12 | # print('Como estas')
13 | # print(mensaje)
14 | # print('Adios')
15 |
16 |
17 | # opcion = int(input('Elige una opción (1,2,3): '))
18 |
19 | # if opcion == 1:
20 | # convesacion('Elegiste la opción 1')
21 |
22 | # elif opcion == 2:
23 | # convesacion('Elegiste la opción 2')
24 | # elif opcion == 3:
25 | # convesacion('Elegiste la opción 3')
26 | # else:
27 | # print('Elige una opcíon correcta')
28 |
29 | def suma(a, b):
30 | print('Se suman dos números')
31 | resultado = a+b
32 | return resultado
33 |
34 |
35 | sumatoria = suma(1, 4)
36 | print(sumatoria)
37 |
--------------------------------------------------------------------------------
/ejercicios/generator_contrasena.py:
--------------------------------------------------------------------------------
1 | import random
2 | import string
3 |
4 |
5 | def generator_password():
6 | mayus = list(string.ascii_uppercase)
7 | minus = list(string.ascii_lowercase)
8 | simbols = list(string.punctuation)
9 | numbers = list(string.digits)
10 |
11 | characteres = mayus + minus + simbols + numbers
12 | password = []
13 |
14 | for i in range(15):
15 | character_random = random.choice(characteres)
16 | password.append(character_random)
17 |
18 | password = ''.join(password)
19 | return password
20 |
21 |
22 | def run():
23 | password = generator_password()
24 | print('Your new password is: ' + password)
25 |
26 |
27 | if __name__ == "__main__":
28 | run()
29 |
--------------------------------------------------------------------------------
/ejercicios/palindromo.py:
--------------------------------------------------------------------------------
1 | def palindromo(palabra): # Definimos una función que recibira como parametro la palabra
2 | # A la palabra le eliminamos los espacios y la convertimos en minuscula
3 | palabra = palabra.replace(' ', '').lower()
4 | # Generamos la palabra invertida apartir de la palabra original
5 | palabra_invertida = palabra[::-1]
6 | if palabra == palabra_invertida: # Preguntamos si la palabra es igual a la palabra invertida
7 | return True # Si sí devolvemos verdadero
8 | else: # Si no
9 | return False # Devolvemos fals
10 |
11 |
12 | def run(): # Funcion principal
13 | # Solicitamos una palabra y la guardamos en una variable
14 | palabra = input('Escribe una palabra: ')
15 | # ejecutamos la funcion palindromo y le pasamos como parametro la variable con la palabra solicitada
16 | # Guardamos lo que retorne esta funcion en una variable
17 | es_palindromo = palindromo(palabra)
18 | if es_palindromo == True: # Preguntamos si lo que retorna la funcion es verdadero
19 | print('Es palindromo') # Sì si, decimos que es palindromo
20 | else: # Si no
21 | print('No es palindromo') # No es palindromo
22 |
23 |
24 | if __name__ == "__main__":
25 | run()
26 |
--------------------------------------------------------------------------------
/ejercicios/prueba_primalidad.py:
--------------------------------------------------------------------------------
1 | def es_primo(numero): # Se define la funcion es_primo que recibe un numero como parametro
2 | contador = 0 # Iniciamos una variable contador en 0
3 | # Hacemos un bucle que recorra un rango desde 1 hasta el numero + 1, (recordemos que no es inclusivo por esto #sumamos +1 para que tome el numero)
4 | for i in range(1, numero + 1):
5 | if i == 1 or i == numero: # Aquí preguntamos si i es igual a 1 o al numero
6 | continue # si alguna de las dos condiciones es verdadera nos saltamos la linea y repetimos el bucle
7 | if numero % i == 0: # si el numero al dividirlo por i nos da como resto 0
8 | # Le sumamos al contador 1, esta linea es igual a tipear(contador = contador + 1)
9 | contador += 1
10 | # Cuando finalize de hacer todas las validaciones preguntamos,
11 | # Si el contador es igual a 0, es decir si el numero al dividirlo por todos los numero entre 1 y el mismo
12 | # si las divisiones dieron inexactas entonces nunca tuvimos un resto igual a 0 quiere decir que el contador
13 | # nunca aumento
14 | if contador == 0:
15 | return True # Si es verdadero retornamos Verdadero
16 | else:
17 | return False # Si es falso retornamos Falso
18 |
19 |
20 | def run():
21 | numero = int(input('Escribe un Número: '))
22 |
23 | # Esto es equivalente a tipear si es_primo(numero) == True:
24 | if es_primo(numero): # Si el resultado de la funcion es_primo es Verdadera decimos
25 | print('Es primo') # Es primo
26 | else: # Si no
27 | print('No es primo') # No es primo
28 |
29 |
30 | if __name__ == "__main__":
31 | run()
32 |
--------------------------------------------------------------------------------
/ejercicios/recorrer.py:
--------------------------------------------------------------------------------
1 | def run():
2 | # nombre = input("Escribe tu nombre: ")
3 | # for letra in nombre:
4 | # print(letra)
5 |
6 | frase = input('Escribe una frase: ')
7 | for caracter in frase:
8 | print(caracter.upper())
9 |
10 |
11 | if __name__ == "__main__":
12 | run()
13 |
--------------------------------------------------------------------------------
/readme.md:
--------------------------------------------------------------------------------
1 |
Curso Básico de Python
2 |
3 | ## Ventajas de aprender python
4 |
5 | - Es Fácil de aprender, es un lenguaje que esta en contacto con el idioma ingles
6 | - Elegante, python necesita de una estructura definida para funcionar correctamente
7 | - Python ayuda a tener buenas practicas, para que a la hora de pasar a otro lenguaje se nos haga mucho más sencillo
8 |
9 | ## ¿Que es un Algoritmo?
10 |
11 | - Un algoritmo es una serie de pasos ordenados para resolver un problema
12 | - Tiene que tener un Inicio y Fin claro, es decir un Algoritmo es Finito y ordenado
13 | - No es Ambiguo
14 |
15 | ## La mejor herramienta: La consola
16 |
17 | - La consola nos permite interactuar con nuestra computadora mediante el codigo
18 | - Comandos basicos en la consola.
19 | - Ctrl + L o clear = Limpia La consola
20 | - cd = change directory cambia de directorio
21 | - cd .. = cambia de directorio a la carpeta padre de esta
22 | - ls = list nos lista todos los archivos del directorio
23 | - mkdir = Make Directory, Crear directorio
24 | - touch = nos crea un archivo
25 | - Python cuenta con una consola interactiva que se inicia con el comando py en windows, python3 para usuarios Unix
26 |
27 | ## Cuales son los operadores aritméticos en Python?
28 |
29 | - En python los operadores aritméticos son los que nos ayudan a hacer las distintas operaciones matematicas
30 |
31 | - Suma (+)
32 |
33 | 5+5 ⇒ 5
34 |
35 | - Resta (-)
36 |
37 | 5-5 ⇒ 0
38 |
39 | - Multiplicación (\*)
40 |
41 | 5\*5 ⇒ 25
42 |
43 | - División (/)
44 | - 21/5 ⇒ 4.2
45 | - División entera (//), Esta nos trae el numero entero de la division
46 |
47 | 21 // 5 ⇒ 4
48 |
49 | - Modulo (%), Este nos trae el recidio de la division
50 |
51 | 21 % 5 ⇒ 1
52 |
53 | - Potencia (\*\*)
54 |
55 | 2 \*\* 2 ⇒ 4
56 |
57 | - Python respeta las reglas matematicas que dice
58 |
59 | 5 + 5 \* 2 ⇒ 15
60 |
61 | - Raiz
62 |
63 | math.sqrt(9)
64 |
65 | ## ¿Que es una variable?
66 |
67 | - El termino variable se utiliza fuera del ambito matematico para designar una cantidad susceptible de tomar distintos valores numéricos dentro de un cojunto de números especificado. En otras palabras podemos asociar una variable en la vida real con una caja, esta caja tendra un identificador unico y en esta podemos guardar objetos: números, texto, etc.
68 | - Para declarar una variable en python lo hacemos de la siguiente manera:
69 |
70 | ```python
71 | ## primero colocamos el nombre de la variable "identificador" seguido de un
72 | ##igual (=) que significa asignación
73 |
74 | numero = 3
75 | print(numero) # => 3
76 | ```
77 |
78 | - Las variables las podemos operar, lo que entendera el lenguaje es que tiene que operar el contenido de la variable, tambien podemos guardar una variable dentro de otra por ejemplo, si guardamos dos numeros en dos distintas variables y luego hacemos alguna operacion matematica, podemos guardar el resultado de esa operacion en una variable
79 |
80 | ```python
81 | numero1 = 2
82 | numero2 = 3
83 | numero_resultado = numero1 + numero2
84 | print(numero_resultado) # => 5
85 | ```
86 |
87 | - Las variables se pueden reescribir
88 | - Las variables tienen reglas que son:
89 | - El identificador o nombre de variable no puede comenzar con un número y debe estar en minúsculas. Las palabras dentro del mismo se separan con un guión bajo
90 |
91 | ## Tipos de datos
92 |
93 | - En python todo es un objeto
94 | - Los más sencillos son, los enteros (int), Números punto flotante(float), texto o cadenas de caracteres (string), Booleanos (true o false)
95 | - Trabajando con las variables
96 |
97 | ```python
98 | nombre = "Sergio"
99 | nombre2 = 'Luis'
100 |
101 | nombre + nombre2 # => "SergioLuis" # Concatenacion la union de dos o más strings
102 | nombre + " " + nombre2 # => "Sergio Luis"
103 | nombre * 4 # => "SergioSergioSergioSergio" # Podemos multiplicar el string
104 |
105 | numero_decimal = 3.4 # Para los numeros decimales siempre se utiliza el punt (.)
106 |
107 | es_estudiante = True
108 |
109 | ```
110 |
111 | ## Operadores lógicos y de comparacion
112 |
113 | - Operadores logicos
114 | - and - para que se pueda cumplir la condicion todas las variables comparadas tienen que ser verdaderas
115 | - or - para que se pueda cumplir la condicion almenos una de las variables comparadas tiene que ser verdaderas, para que la condicion de falso todas las variables comparadas tienen que ser false
116 | - not - invierte el valor de una variable, es decir si una variable es true y colocamos not la variable cambiara a false
117 | - Operadores de comparacion
118 |
119 | - (==) igualdad, nos valida que el contenido de las variables sean iguales
120 |
121 | ```python
122 | numero1 = 5
123 | numero2 = 5
124 |
125 | numero1 == numero2 #=> True
126 | ```
127 |
128 | - (≠) distinto, nos valida que el contenido de las variables no sean iguales
129 | - (>) mayor, compara si una variale es mayor que el otro
130 | - (<) menor,compara si una variale es menor que el otro
131 | - (⇒) mayor o igual
132 | - (≤) menor o igual
133 |
134 | ## Condicionales
135 |
136 | - La regla de identacion seguido de if es de 4 espacios
137 | - If es una condicion que nos dice en pocas palabras, Sí la condicion se cumple haz algo y Si no haz otra cosa
138 |
139 | ```python
140 | if edad >= 18:
141 | print('Eres mayor de edad')
142 | else:
143 | print('Eres menor de edad')
144 | ```
145 |
146 | Esto se leé de la siguiente forma: Si tu edad es mayor o igual a 18 eres mayor de edad, si no eres menor de edad.
147 |
148 | - elif significa si no y va entre el if y el else
149 | - else si no, que significa, si ninguno de los casos anteriores se cumplieron ejecuta lo que esta dentro
150 |
151 | ## Funciones
152 |
153 | - Para declarar una funcion se utiliza la palabra reservada "def" seguido del nombre de la funcion con dos parentesis y en caso de que la funcion reciba parametros se los ponemos dentro
154 | - Las funciones pueden devolver datos en caso de que los necesitemos y para esto se utiliza la palabra reservada "return" seguido del nombre de la variable que queremos retornar
155 |
156 | ## Metodos
157 |
158 | - Un metodo es una funcion especial para un tipo de dato en particular
159 | - Convertir Datos a un tipo diferente
160 |
161 | - input() para pedirle al usuario que introduzca datos.
162 |
163 | ```python
164 | numero1 = input("Escribe un numero") # 2
165 | print(numero1)
166 | #=> '2'
167 | ```
168 |
169 | - int() convierte datos o variables dentro de los parentecis en tipo entero
170 |
171 | ```python
172 | numero1 = int(numero1) # pasamos la variable que tiene nuestro string
173 | print(numero1)
174 | # => 2
175 | ```
176 |
177 | - str() nos convierte datos o variables dentro de los parentecis en tipo string
178 |
179 | ```python
180 | numero_decimal = 4.5
181 | str(numero_decimal)
182 | # => '4.5'
183 | ```
184 |
185 | - float() nos convierte datos o variables en tipo float
186 |
187 | - Transformar Cadenas de caracteres
188 | - upper() Transforma todos los caracteres en mayusculas
189 | - capitalize() Transforma el primer caracter en mayusculas
190 | - strip() Elimina los espacios que estan al principio o al final de la cadena
191 | - lower() transforma la cadena de caracteres a minisculas
192 | - replace('in','out') este metodo recibe dos parametros el primero es el dato que sera reemplazado por el segundo
193 | - para poder acceder a los indices de una cadena se hace con [ ]
194 | - len() nos trae cuantos caracteres tiene la cadena
195 | - round(dato, numero de decimales) recibe dos parametros el dato o variable y el numero de decimales que queremos EJ: round(5.76543, 2) ⇒ 5.76
196 | - range(valor inicial, valor final, incremento) la funcion range devuelve una secuencia de numeros, comenzando desde el valor inicial y se encrementa en 1(por defecto), sin embargo, es posible especificar el valor de incremento agregando un tercer parámetro y termina en el valor final que le establezcamos.
197 |
198 | **EJ:** range(1,5) ⇒ [1, 2, 3, 4]. Como se ve en el ejemplo el valor final no es incluyente
199 |
200 | ## Slices
201 |
202 | - Podemos dividir cadenas de texto utilizando slices de la siguiente forma
203 |
204 | Se accede a los indices, en los corchetes colocamos el indice desde donde queremos dividir la cadena colocamos dos puntos y el indice hasta donde queremos dividir
205 |
206 | ```python
207 | nombre[1:3]
208 | # Cuando no colocamos el primer indice
209 | nombre[:3]
210 | # Quiere decir que empieza a dividir desde el principio de la cadena
211 | nombre[3:]
212 | # y es igual para el caso contrario
213 | ```
214 |
215 | A esto tambien le podemos agregar un tercer valor que es el numero de saltos que va a dar para dividir la cadena es decir si colocamos dos va a ir de dos en dos
216 |
217 | ## Punto de entrada y funcion principal
218 |
219 | - En python es una buena practica tener una funcion principal que es la que nos va a correr el programa al principio, un estandar para definir esta funcion es:
220 |
221 | ```python
222 | def run():
223 | ```
224 |
225 | - Punto de entrada en python se hace de la siguiente forma
226 |
227 | ```python
228 | if __name__ == '__main__':
229 | pass
230 | ```
231 |
232 | Esto quiere decir que python va a correr todo lo que este dentro de este bloque de codigo
233 |
234 | - Una buena practica en python es siempre dejar dos espacios entre funciones
235 |
236 | ## Bucles en Python
237 |
238 | Un bucle es algo que podemos hacer iterar una cantidad determinada de veces
239 |
240 | - while
241 |
242 | While significa Mientras qué y lo que hace es que mientras que la condicion en la exprecion se cumpla ejecutara el bloque de codigo
243 |
244 | ```python
245 | while expresión:
246 | pass
247 | ```
248 |
249 | - for
250 |
251 | Un bucle for se usa para iterar sobre una secuencia(que es una lista, una tupla, un diccionario, un cojunto o una cadena), podemos ejecutar un cojunto de declaraciones, una vez para cada elemento de una lista, tupla, etc.
252 |
253 | ```python
254 | for target_list in expression_list:
255 | pass
256 | ```
257 |
258 | Tambien podemos recorrer una cadena(string) con un for, esto quiere decir que vamos a tomar una cadena de caracteres y vamos a ir por cada parte unica o indice a la vez dentro de un ciclo
259 |
260 | - **Interrumpiendo ciclos con break y continue**
261 |
262 | - **break** simplemente termina el bucle actual y continua con la ejecucíon de la siguiente instrucción, por ejemplo:
263 |
264 | ```python
265 | def run():
266 | for i in range(10000):
267 | print(i)
268 | if i == 5678:
269 | break
270 | ```
271 |
272 | En el anterior ejemplo declaramos un bucle **for** y lo hacemos iterar desde el 0 hasta 9999, imprimiendo cada paso que de **i**, cuando **i** llegue a 5678 el bucle se terminara
273 |
274 | - **break** con while
275 |
276 | ```python
277 | def run():
278 | LIMITE = 10
279 | contador = 0
280 | while contador < LIMITE:
281 | print(contador)
282 | contador += 1
283 | if contador == 5:
284 | break
285 | ```
286 |
287 | En este ejemplo definimos un **Limite**, un **contador** y decimos, mientras que el **contador** sea menor que el **limite** imprime el contador y despues sumale 1, si contador es igual a 5 termina de ejecutarte.
288 |
289 | - **continue** Cuando aparece un continue en python este regresa al comienzo del bucle, ignorando todos los estamentos que quedan en la iteración del bucle e inicia la siguiente iteración, **continue** se puede utilizar tanto en bucles **for** como en bucles **while.** Ejemplo de **continue** en bucle **for**
290 |
291 | ```python
292 | def run():
293 | for contador in range(1000):
294 | if contador % 2 != 0:
295 | continue
296 | print(contador)
297 | ```
298 |
299 | En este ejemplo declaramos un ciclo for con un contador y que este itere en un rango de 0 a 9999, si contador % 2 ≠ 0, es decir si el contador es impar ejecuta continue y al final imprime contador. Lo que nos retornara el programa son todos los numeros pares de 0 a 9999 por que **continue** nunca dejara que se impriman los impares
300 |
301 | ## Constantes en Python
302 |
303 | - Las constates son lo opuesto a las variables es decir, que no va a variar y que siempre estara en un numero fijo, en python estas variables se declaran colocando su nombre todo en mayuscula
304 |
305 | ```python
306 | LIMITE = 1000;
307 | ```
308 |
309 | ## Que es un Modulo en Python
310 |
311 | - Un **Modulo** es un paquete de codigo escrito por las personas que escribieron python que tenemos disponible para ejecutar funciones ya escritas
312 | - Uno de esos modulos es: **random** y para hacer uso de este tenemos que importarlo en nuestro archivo, de la siguiente manera:
313 |
314 | ```python
315 | import random
316 | ```
317 |
318 | el modulo **random** contiene funciones para trabajar con la aleatoriedad con python, un caso de uso podria ser generar un numero aleatorio entre 1 y 100
319 |
320 | Para acceder a las funciones que tiene el modulo tenemos que llamar al modulo seguido de un punto, algunos editores de texto como el caso de visual code ayudan con el autocompletado y muestran los diferentes funciones que contiene el modulo, un ejemplo seria:
321 |
322 | ```python
323 | numero_aleatorio = random.randint(1,100)
324 | ```
325 |
326 | la funcion **randint** pertenece al modulo **random** y lo que hace es generar un numero entero desde un valor inicial, hasta un valor final como se puede ver en el anterior ejemplo.
327 |
328 | ## Estructuras de datos en Python
329 |
330 | - Listas
331 |
332 | - Las listas son una estructura de datos, y una estructura de datos son formas que nos brindan los lenguajes de programación, las listas son las más intuitivas y nos permiten guardar varios tipos de valores dentro de una misma variable. Las listas en otros lenguajes son parecidas a los **Array**
333 |
334 | - La forma en la que podemos guardar varios datos en una variable es la siguiente:
335 |
336 | ```python
337 | numeros = [1,3,6,8,9,24,30]
338 | print(numeros)
339 | # =>[1,3,6,8,9,24,30]
340 | objetos = ['Hola', 3, 4.5 , True]
341 | print(objetos)
342 | # => ['Hola', 3, 4.5 , True]
343 | ```
344 |
345 | La forma en que podemos acceder a los elementos de una lista es con los indices, y para recordar los indices en programación siempre empiezan en la posicion 0, es decir, si queremos acceder a un tercer dato de una lista tendriamos que solicitar el indice 2 de la lista
346 |
347 | ```python
348 | objetos[2]
349 | # => 4.5
350 | objetos[0]
351 | # => 'Hola'
352 | objetos[1]
353 | # => 3
354 | ```
355 |
356 | - Las **listas** cuentan con una serie de metodos que nos permiten manipularlas
357 |
358 | **.append()**, este metodo inserta un nuevo elemento al final de la lista, este se lo tenemos que pasar como parametro
359 |
360 | ```python
361 | objetos.append(False)
362 | print(objetos)
363 | # => ['Hola', 3, 4.5 , True, False]
364 | ```
365 |
366 | **.pop()**, este metodo elimina un elemento de la lista por su indice
367 |
368 | ````python
369 | objetos.pop(2)
370 | print(objetos)
371 | # => ['Hola', 3, True, False]
372 |
373 | **.sort()**, este metodo ordena la lista de menor a mayor, este modifica la lista i
374 | ```python
375 | A = [4, 1,9]
376 | A.sort() # => [1,4,9]
377 | ````
378 |
379 | **sorted()**, este metodo recibe una lista y retorna otra ordenada de menor a mayor este metodo **No** modifica la lista inicial, por lo cual si queremos guardar el resultado tendremos que guardarlo en una nueva variable
380 |
381 | ```python
382 | A = [4, 1,9]
383 | B = sorted(A) # => [1,4,9]
384 |
385 | ```
386 |
387 | **.remove()**, este metodo recibe un valor de la lista y este lo elimina
388 |
389 | ```python
390 | A = [4, 1,9]
391 | A.remove(1) # => [4,9]
392 | ```
393 |
394 | **.range()** creacion de listas en un rango determinado
395 |
396 | ```python
397 | a = list(range(0,10)) # crea una lista desde 0 hasta 10 de 1 uno en 1
398 | ```
399 |
400 | **len()** recibe una lista y devuelve el tamaño de esta
401 |
402 | ```python
403 | a = [4, 1,9]
404 | len(a) # => 3
405 | ```
406 |
407 | - Las **listas** tambien pueden ser recorridas elemento a elemento con un ciclo for, de la misma forma que hacemos con los strings
408 | - De igual forma podemos manipular listas con slices, concatenacion, multiplicar la lista de la misma manera que con los strings
409 |
410 | - Tuplas
411 |
412 | - Las **tuplas** son un tipo de dato que se parecen a las listas, la diferencia es que las listas son dinamicas y las **tuplas** son estaticos, es decir, son inmutables no se puede modificar sus elementos
413 | - Para definir una **tupla** se hace con parentecis () de la siguiente forma
414 |
415 | ```python
416 | tupla = (1,2,3,4,5)
417 | ```
418 |
419 | - Las **tuplas** en python son consideradas la estructura de datos más rapida
420 | - Una ventaja de las **tuplas** sobre las **listas** es a la hora de recorrer ciclos for, estas iteracciones se hacen más rapido
421 |
422 | - Diccionarios
423 |
424 | - **Los Diccionarios** es una estructura de datos de llaves y valores
425 | - La forma en que se definen los **diccionarios** es encerrando sus elementos dentro de llaves { } de la siguiente forma
426 |
427 | ```python
428 | mi_diccionario = {
429 | #Los elementos tienen que ir separados por coma
430 | 'llave1': 1,
431 | 'llave2': 2,
432 | 'llave3': 3,
433 | }
434 | print(mi_diccionario)
435 | # => {'llave1': 1,'llave2': 2,'llave3': 3}
436 | ```
437 |
438 | - Para acceder a los elementos de un **diccionario,** llamamos a la variable del diccionario y entre corchetes [ ] pasamos el nombre de la llave del elemento que necesitamos
439 |
440 | ```python
441 | print(mi_diccionario['llave1']) #1
442 | print(mi_diccionario['llave2']) #2
443 | print(mi_diccionario['llave3']) #3
444 | ```
445 |
446 | - Los **diccionarios** tambien cuentan con metodos uno de ellos es **.keys()**, este metodo devuelve las llaves del diccionario, otro es el metodo **.values()** y lo que hace es devolver los valores de las llaves. **.items()** este metodo devuelve los dos valores, las llaves y el valor de la llave
447 | - Con los **diccionarios** tambien podemos recorrer ciclos for
448 |
449 | ```python
450 | poblacion_paises = {
451 | 'Argentina': 4493872,
452 | 'Brazil': 1023102312,
453 | 'Colombia': 50372424,
454 | }
455 |
456 | for pais in poblacion_paises.keys():
457 | print(pais)
458 | # Argentina
459 | # Brasil
460 | # Colombia
461 |
462 | for poblacion in poblacion_paises.values():
463 | print(pais)
464 | # 4493872
465 | # 1023102312
466 | # 50372424
467 |
468 | # Como el metodo nos devuelve dos elementos tenemos que agregar un segundo
469 | # elemento iterador en el for para no tener errores
470 | for pais,poblacion in poblacion_paises.items():
471 | print(pais + ' tiene ' + str(poblacion) + ' habitantes')
472 | # Argentina tiene 4493872 habitantes
473 | # Brasil tiene 1023102312 habitantes
474 | # Colombia tiene 50372424 habitantes
475 | ```
476 |
--------------------------------------------------------------------------------