├── 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 | --------------------------------------------------------------------------------