├── .gitignore └── Notes └── notes.md /.gitignore: -------------------------------------------------------------------------------- 1 | .vscode 2 | Examen curso de programacion basica con python.pptx -------------------------------------------------------------------------------- /Notes/notes.md: -------------------------------------------------------------------------------- 1 | # Curso Básico de Python 2 | 3 | - [Curso Básico de Python](#curso-básico-de-python) 4 | - [Modulo 1 Introduccion a la programacion con Python](#modulo-1-introduccion-a-la-programacion-con-python) 5 | - [Clase 1 EL arte de la programacion](#clase-1-el-arte-de-la-programacion) 6 | - [Clase 2 Por que Python](#clase-2-por-que-python) 7 | - [Clase 3 El núcleo de un programa: los algoritmos](#clase-3-el-núcleo-de-un-programa-los-algoritmos) 8 | - [Clase 4 Instalación de nuestras herramientas (en Windows)](#clase-4-instalación-de-nuestras-herramientas-en-windows) 9 | - [Clase 5 Instalacion de nuestras herramientas en Mac](#clase-5-instalacion-de-nuestras-herramientas-en-mac) 10 | - [Clase 6 Instalacion de nuestras herramientas en Ubuntu](#clase-6-instalacion-de-nuestras-herramientas-en-ubuntu) 11 | - [Clase 7 Tu mejor herramienta: la consola](#clase-7-tu-mejor-herramienta-la-consola) 12 | - [Modulo 2 Conceptos basicos de Python](#modulo-2-conceptos-basicos-de-python) 13 | - [Clase 8 Explorando Python: operadores aritméticos](#clase-8-explorando-python-operadores-aritméticos) 14 | - [Clase 9 Que es una variable](#clase-9-que-es-una-variable) 15 | - [Clase 10 Los primitivos: tipos de datos sencillos](#clase-10-los-primitivos-tipos-de-datos-sencillos) 16 | - [Clase 11 Convertir un dato a un tipo diferente](#clase-11-convertir-un-dato-a-un-tipo-diferente) 17 | - [Clase 12 Operadores logicos y de comparacion](#clase-12-operadores-logicos-y-de-comparacion) 18 | - [Clase 13 Tu primer programa: conversor de monedas](#clase-13-tu-primer-programa-conversor-de-monedas) 19 | - [Modulo 3 Herramientas para programar](#modulo-3-herramientas-para-programar) 20 | - [Clase 14 Construyendo el camino de un programa con condicionales](#clase-14-construyendo-el-camino-de-un-programa-con-condicionales) 21 | - [Clase 15 Varios paises en mi conversor de monedas](#clase-15-varios-paises-en-mi-conversor-de-monedas) 22 | - [Clase 16 Aprendiendo a no repetir codigo con funciones](#clase-16-aprendiendo-a-no-repetir-codigo-con-funciones) 23 | - [Clase 17 Modularizando nuestro conversor de monedas](#clase-17-modularizando-nuestro-conversor-de-monedas) 24 | - [Clase 18 Trabajando con texto: cadenas de caracteres](#clase-18-trabajando-con-texto-cadenas-de-caracteres) 25 | - [Clase 19 Trabajando con texto: slices](#clase-19-trabajando-con-texto-slices) 26 | - [Clase 20 Proyecto: palindromo](#clase-20-proyecto-palindromo) 27 | - [Modulo 4 Bucles](#modulo-4-bucles) 28 | - [Clase 21 Aprendiendo bucles](#clase-21-aprendiendo-bucles) 29 | - [Clase 22 El ciclo while](#clase-22-el-ciclo-while) 30 | - [Clase 23 Explorando un bucle diferente: el ciclo for](#clase-23-explorando-un-bucle-diferente-el-ciclo-for) 31 | - [Clase 24 Recorriendo un string con for](#clase-24-recorriendo-un-string-con-for) 32 | - [Clase 25 Interrumpiendo ciclos con break y continue](#clase-25-interrumpiendo-ciclos-con-break-y-continue) 33 | - [Clase 26 Proyecto: prueba de primalidad](#clase-26-proyecto-prueba-de-primalidad) 34 | - [Clase 27 Proyecto: videojuego](#clase-27-proyecto-videojuego) 35 | - [Modulo 5 Estructuras de datos](#modulo-5-estructuras-de-datos) 36 | - [Clase 28 Almacenar varios valores en una variable: listas](#clase-28-almacenar-varios-valores-en-una-variable-listas) 37 | - [Clase 29 Entendiendo cómo funcionan las tuplas](#clase-29-entendiendo-cómo-funcionan-las-tuplas) 38 | - [Clase 30 Que son los diccionarios](#clase-30-que-son-los-diccionarios) 39 | - [Clase 31 Proyecto: generador de contrasenas](#clase-31-proyecto-generador-de-contrasenas) 40 | 41 | ## Modulo 1 Introduccion a la programacion con Python 42 | 43 | ### Clase 1 EL arte de la programacion 44 | 45 | Programar es darle instrucciones a la computadora para que realce un trabajo especifico. 46 | 47 | ### Clase 2 Por que Python 48 | 49 | Antes de elegir un nuevo lenguaje para aprender debemos pensar primero que queremos lograr o realizar (ciencia de datos, backend, frontend, desarrollo de videojuegos, desarrollo movil, iot, DevOps, etc). 50 | 51 | Python esta en todos lados (google, spotify, platzi, etc) 52 | 53 | Ventajas: 54 | 55 | - Fácil 56 | - Elegante 57 | - Buenas practicas 58 | 59 | ### Clase 3 El núcleo de un programa: los algoritmos 60 | 61 | Algoritmo se define por tener estas caracteristicas: 62 | 63 | - Una serie de pasos para resolver un problema 64 | - Finito 65 | - No ambiguo 66 | 67 | ### Clase 4 Instalación de nuestras herramientas (en Windows) 68 | 69 | 1.- Instalacion del editor de código de tu elección. (VScode) 70 | 2.- Uso de terminal, el profesor utiliza cmder (me quedo con ubuntu) 71 | 3.- Instalacion de python 3 72 | 73 | ### Clase 5 Instalacion de nuestras herramientas en Mac 74 | 75 | Nota: Si usas una mac el proceso es el mismo para instalar cualquier programa, descarga e instala VScode y python3. 76 | 77 | ### Clase 6 Instalacion de nuestras herramientas en Ubuntu 78 | 79 | Nota: Si usas una distro de linux el proceso es el mismo para instalar cualquier programa, descarga e instala VScode y python3. 80 | 81 | ### Clase 7 Tu mejor herramienta: la consola 82 | 83 | Comandos básicos Unix 84 | 85 | 1.- control+L (Limpieza a la consola) 86 | 2.- mkdir mi_carpeta (Crear carpeta) 87 | 3.- ls (Listar archivos y directorios del directorio actual) 88 | 4.- cd mi_carpeta (Ingresar a la nueva carpeta) 89 | 90 | Para profundizar en comandos (si eres nuevo usuario) mira el curso de termina y linea de comandos en platzi. 91 | 92 | 93 | ## Modulo 2 Conceptos basicos de Python 94 | 95 | ### Clase 8 Explorando Python: operadores aritméticos 96 | 97 | Usando la consola interactiva de python realizamos lo siguiente 98 | 99 | ```py 100 | #Suma (+) 101 | >>> 5+5 102 | 5 103 | 104 | #Resta (-) 105 | >>> 5-5 106 | 0 107 | 108 | #Multiplicación (#) 109 | >>> 5*5 110 | 25 111 | 112 | #División (/) 113 | >>> 21/5 114 | 4.2 115 | 116 | #División entera (//), Esta nos trae el numero entero de la division 117 | >>> 21 // 5 118 | 4 119 | 120 | #Modulo (%), Este nos trae el residuo de la division 121 | >>> 21 % 5 122 | 1 123 | 124 | #Potencia (**) 125 | >>> 2 ** 2 126 | 4 127 | 128 | #Python respeta las reglas matemáticas que dice 129 | >>> 5 + 5 * 2 130 | 15 131 | ``` 132 | 133 | Python siempre sigue el orden de las operaciones aritméticas, ante la duda siempre recuerda PEMDAS. 134 | 135 | **P**aréntesis 136 | **E**xponentes 137 | **M**ultiplicación 138 | **D**ivisión 139 | **A**dición 140 | **S**ustracción. 141 | 142 | ### Clase 9 Que es una variable 143 | 144 | Una variable es una caja donde puedes guardar un objeto, cada variable tiene un identificador en memoria 145 | 146 | ```py 147 | >>> numero = 3 148 | >>> print(numero) 149 | 3 150 | >>> numero2 = 5 151 | >>> numero3 = numero + numero2 152 | >>> print(numero) 153 | 8 154 | ``` 155 | 156 | Reglas para variables 157 | 158 | - nunca iniciar con números o símbolos 159 | - usar minúsculas si solo es una palabra 160 | - usar camel_case si son varias palabras 161 | 162 | ### Clase 10 Los primitivos: tipos de datos sencillos 163 | 164 | En python todo es un objeto 165 | 166 | Los tipos de datos primitivos en python: 167 | 168 | - int: entero (3) 169 | - float: números con punto flotante (4.0) 170 | - str: cadenas de texto o strings ('hola mundo') 171 | - bool: booleano (1 o 0), (True o False) 172 | 173 | ### Clase 11 Convertir un dato a un tipo diferente 174 | 175 | En python podemos convertir a conveniencia los tipos de datos primitivos 176 | 177 | ```py 178 | #Convertir un dato a un tipo diferente 179 | >>> nombre_variable = input( “Ingresa texto”) 180 | >>> numero1 = input(“Escribe un numero:”) 181 | 182 | >>> print(numero1) 183 | '4’ 184 | 185 | >>> numero2 = input(“Escribe un numero”) 186 | >>> print(2) 187 | '5’ 188 | 189 | 190 | #Si sumas 191 | >>> print(numero + numero 2) 192 | '45’ 193 | 194 | #PARA CONVERTIRLO A NUMERO 195 | >>> numero1 = int(numero1) 196 | >>> numero2 = int(numero2) 197 | 198 | >>> print(numero1 + numero2) 199 | 9 200 | 201 | #CONVERTIR DE NUMERO A TEXTO 202 | str(numero1) 203 | '4' 204 | ``` 205 | 206 | ### Clase 12 Operadores logicos y de comparacion 207 | 208 | - **and** para comparar si dos valores son verdaderos. 209 | - **or** para comparar si dos valores son falsos. 210 | - **not** para invertir el valor booleano. 211 | - **==** Compara dos valores y te dice si son iguales o no. 212 | - **!=** Compara dos valores y te dice sin son diferentes o no. 213 | - **>** Compara si es mayor que otro valor. 214 | - **>** Compara si es menor que otro valor. 215 | - **>=** igual o mayor que el valor a comparar. 216 | - **<=** igual o menor que el valor a comparar 217 | 218 | Ejemplos de la clase en consola interactiva de python 219 | 220 | ```py 221 | >>> es_estudiante = True 222 | >>> es_estudiante 223 | True 224 | >>> trabaja = False 225 | >>> es_estudiante and trabaja 226 | False 227 | >>> es_estudiante or trabaja 228 | True 229 | >>> not trabaja 230 | True 231 | >>> 232 | >>> numero1 = 5 233 | >>> numero2 = 5 234 | >>> numero1 235 | 5 236 | >>> numero2 237 | 5 238 | >>> numero1 == numero2 239 | True 240 | >>> numero3 = 7 241 | >>> numero1 == numero3 242 | False 243 | >>> numero1 != numero3 244 | True 245 | >>> numero1 > numero3 246 | False 247 | >>> numero1 < numero3 248 | True 249 | >>> numero1 >= numero3 250 | False 251 | >>> numero1 >= numero2 252 | True 253 | >>> numero1 <= numero2 254 | True 255 | >>> numero1 <= numero3 256 | True 257 | >>> 258 | ``` 259 | 260 | ### Clase 13 Tu primer programa: conversor de monedas 261 | 262 | ```py 263 | # Convertir pesos a dolares 264 | pesos = input("¿Cuántos pesos tienes? ") 265 | pesos = float(pesos) 266 | valor_dolar = 22.03 267 | dolares = pesos / valor_dolar 268 | dolares = round(dolares, 2) 269 | dolares = str(dolares) 270 | 271 | print("Tienes $" + dolares + " dolares") 272 | 273 | 274 | 275 | # Convertir dolares a pesos 276 | dolares = input("¿Cuántos dolares tienes? ") 277 | dolares = float(dolares) 278 | valor_pesos = 22.03 279 | pesos = dolares * valor_dolar 280 | pesos = round(pesos, 2) 281 | pesos = str(pesos) 282 | 283 | print("Tienes $" + pesos + "pesos")``` 284 | ``` 285 | 286 | ## Modulo 3 Herramientas para programar 287 | 288 | ### Clase 14 Construyendo el camino de un programa con condicionales 289 | 290 | ```py 291 | # # Ejemplo 1 292 | # edad = int(input ("Escribe tu edad :")) 293 | # if edad > 17: 294 | # print("Eres mayor de edad") 295 | # else: 296 | # print("Eres menor de edad") 297 | 298 | # Ejemplo 2 299 | numero = int(input("Escribe un numero : ")) 300 | 301 | if numero > 5: 302 | print("Es mayor a 5") 303 | elif numero == 5: 304 | print("Es igual a 5") 305 | elif numero < 5: 306 | print("Es menor a 5") 307 | 308 | ``` 309 | 310 | ### Clase 15 Varios paises en mi conversor de monedas 311 | 312 | ```py 313 | # conversor de pesos a dolares 314 | 315 | menu = """ 316 | Bienvenido al conversor de monedas 317 | 318 | 1 - Pesos Colombianos 319 | 2 - Pesos Argentinos 320 | 3 - Pesos Mexicanos 321 | 322 | Elige una opción: """ 323 | 324 | opcion = int(input(menu)) 325 | 326 | if opcion == 1: 327 | pesos = input("¿Cantos pesos colombianos tienes?: ") 328 | pesos = float(pesos) 329 | valor_dolar = 3679 330 | dolares = pesos / valor_dolar 331 | dolares = round(dolares, 2) 332 | dolares = str(dolares) 333 | print("Tienes $" + dolares + " dólares") 334 | elif opcion == 2: 335 | pesos = input("¿Cantos pesos argentinos tienes?: ") 336 | pesos = float(pesos) 337 | valor_dolar = 65 338 | dolares = pesos / valor_dolar 339 | dolares = round(dolares, 2) 340 | dolares = str(dolares) 341 | print("Tienes $" + dolares + " dólares") 342 | elif opcion == 3: 343 | pesos = input("¿Cantos pesos argentinos tienes?: ") 344 | pesos = float(pesos) 345 | valor_dolar = 24 346 | dolares = pesos / valor_dolar 347 | dolares = round(dolares, 2) 348 | dolares = str(dolares) 349 | print("Tienes $" + dolares + " dólares") 350 | ``` 351 | 352 | ### Clase 16 Aprendiendo a no repetir codigo con funciones 353 | 354 | ```py 355 | # def imprimir_mensaje(): 356 | # print("Mensaje Especial : ") 357 | # print("¡Estoy aprendiendo a usar funciones!") 358 | 359 | # imprimir_mensaje() 360 | # imprimir_mensaje() 361 | # imprimir_mensaje() 362 | 363 | def conversacion(mensaje): 364 | print("Hola") 365 | print("Como estas") 366 | print(mensaje) 367 | print("a Dios!") 368 | 369 | 370 | 371 | opcion = int(input("Elije una opcion: (1,2,o 3) ")) 372 | if opcion == 1: 373 | conversacion("Elegiste la opcion 1") 374 | elif opcion == 2: 375 | conversacion("Elegiste la opcion 2") 376 | elif opcion == 3: 377 | conversacion("Elegiste la opcion 3") 378 | else: 379 | print("Escribe la opcion correcta") 380 | ``` 381 | 382 | ### Clase 17 Modularizando nuestro conversor de monedas 383 | 384 | Esta clase hace la introduccion del keyword return, retorna el valor de una funcion. 385 | 386 | ```py 387 | #Este programa convierte una cantidad de dolares a pesos mexicanos 388 | 389 | #Primero definimos nuestras funciones 390 | def conversor(tipo_pesos,valor_dolar): 391 | pesos = input("¿Cuantos pesos " + tipo_pesos + " convertirás? ") 392 | pesos = float(pesos) 393 | dolares = pesos / valor_dolar 394 | dolares = round(dolares,2) 395 | dolares = str(dolares) 396 | pesos = input("Tienes " + dolares + " dolares") 397 | 398 | 399 | # Pedimos al usuario la cantidad que solares a convertir 400 | menu = """ Bienvenido al conversor de monedas 💰 401 | 402 | 1 - Pesos colombianos 403 | 2 - Pesos argentinos 404 | 3 - Pesos mexicanos 405 | 406 | Elije una opciones : """ 407 | 408 | opcion = int(input(menu)) 409 | if opcion == 1: 410 | conversor("colimbianos",3875) 411 | elif opcion == 2: 412 | conversor("argentinos",65) 413 | elif opcion == 3: 414 | conversor("mexicanos",24) 415 | else: 416 | print("Opcion incorrecta, Gracias por participar") 417 | ``` 418 | 419 | ### Clase 18 Trabajando con texto: cadenas de caracteres 420 | 421 | **Método:** es una funcion especial para un tipo de dato en particular. 422 | 423 | ```py 424 | #METODOS: 425 | variable.upper() #Todos los caracteres en MAYÚSCULAS 426 | variable.capitalize() #solo la primera en MAYÚSCULA 427 | variable.lower() = 'todos los caracteres en minúscula' 428 | variable.strip() = #eliminar espacios basura del string al inicio y final 429 | variable.replace('caracter_a_cambiar', 'caracter_por_poner') #remplazar caracter 430 | 431 | #FUNCIONES BILT-IN 432 | aquellas que son propias del lenguaje y que no tenemos que crearlas, solo invocarlas. 433 | 434 | len() 435 | print() 436 | input() 437 | 438 | #Indices 439 | # Siempre podemos acceder a los caracteres de un string por su indice 440 | >>> nombre='rusbel' 441 | >>> nombre[0] 442 | 'r' 443 | 444 | >>> nombre[1] 445 | 'u' 446 | 447 | >>> nombre[2] 448 | 's' 449 | ``` 450 | 451 | ### Clase 19 Trabajando con texto: slices 452 | 453 | Los slices o rebanadas son una extension de los indices, usando el key ":" permite indicar a python del string dame la información desde el indice uno hasta el indice 10 [1:10], podemos agregar pasos para ir de dos en dos, dos en tres [1:10:2] o al revés [1:10:-1] 454 | 455 | ```py 456 | >>> nombre = "Francisco" 457 | >>> nombre 458 | 'Francisco' 459 | >>> nombre[0] 460 | 'F' 461 | >>> nombre[1] 462 | 'r' 463 | >>> nombre[0:3] 464 | 'Fra' 465 | >>> nombre[:3] 466 | 'Fra' 467 | >>> nombre[3:] 468 | 'ncisco' 469 | >>> nombre[1:7] 470 | 'rancis' 471 | >>> nombre[1:7:2] 472 | 'rni' 473 | >>> nombre[ :: ] 474 | 'Francisco' 475 | >>> nombre[1::3] 476 | 'rcc' 477 | >>> nombre[::-1] 478 | 'ocsicnarF' 479 | >>> 480 | ``` 481 | 482 | ### Clase 20 Proyecto: palindromo 483 | 484 | ```py 485 | def palindromo(palabra): 486 | palabra = palabra.lower() 487 | palabra = palabra.replace(' ', '') 488 | if palabra == palabra[::-1]: 489 | returnTrue 490 | else: 491 | returnFalse 492 | 493 | 494 | def run(): 495 | palabra = input("Por favor, ingresa una frase o palabra: ") 496 | if palindromo(palabra): 497 | print("Es un palíndromo") 498 | else: 499 | print("No es un palíndromo") 500 | 501 | 502 | if __name__ == '__main__': 503 | run() 504 | ``` 505 | 506 | `if __name__ == '__main__'` es el entry-point de los programas en python, si internamente el nombre de este programa es main, ejecuta el codigo debajo de este, los modulos de python (programas de python en carpetas llamados por el script principal) no tienen esta instrucción. 507 | 508 | ## Modulo 4 Bucles 509 | 510 | ### Clase 21 Aprendiendo bucles 511 | 512 | Un bucle es un ciclo continuo en todos los lenguajes de programacion, que nos permite iterar sobre nuestros pasos, imagina un contador cíclico (1,2,3,4,5,6...) donde puedes agregar un paso mas sobre tu programa principal. 513 | 514 | Un bucle de la vida real 515 | 516 | - Despertar 517 | - Estudiar en platzi 518 | - Comer 519 | - Dormir 520 | 521 | Cuando repetimos estas acciones en ese orden, durante un tiempo determinado o infinito estamos hablando de un bucle. 522 | 523 | ### Clase 22 El ciclo while 524 | 525 | ```py 526 | def run(): 527 | LIMITE = 1000000 528 | contador = 0 529 | potencia_2 = 2**contador 530 | while potencia_2 < LIMITE: 531 | print('2 elevado a ' + str(contador) + 532 | ' es igual a: ' + str(potencia_2)) 533 | contador = contador + 1 534 | potencia_2 = 2**contador 535 | 536 | if __name__ == "__main__": 537 | run() 538 | ``` 539 | 540 | ### Clase 23 Explorando un bucle diferente: el ciclo for 541 | 542 | ```py 543 | def imprimir_numero(inicio, fin): 544 | for inicio in range(fin+1): 545 | print(f'Numero: {inicio}') 546 | 547 | 548 | def imprimir_numero_while(inicio, fin): 549 | while inicio <= fin: 550 | print(f'Numero: {inicio}') 551 | inicio += 1 552 | 553 | def run(): 554 | 555 | 556 | while True: 557 | print('') 558 | print('*********************************************************') 559 | print('*******************N U M E R O S**********************') 560 | print('') 561 | inicio = int(input('Digite el número inicial para la secuencial: ')) 562 | print('') 563 | fin = int(input('Digite el número final para la secuencial: ')) 564 | print('') 565 | 566 | if inicio < fin: 567 | imprimir_numero(inicio,fin) 568 | else: 569 | print(f'El numero inicial {inicio} debe ser ser menor al numero final {fin}.') 570 | 571 | 572 | 573 | if __name__ == "__main__": 574 | run() 575 | ``` 576 | 577 | ### Clase 24 Recorriendo un string con for 578 | 579 | Ejemplo 1 580 | 581 | ```py 582 | def run(): 583 | ## Este ejemplo imprime cada caracter de tu nombre 584 | nombre = input("Escribe tu nombre :") 585 | for letra in nombre: 586 | print(letra) 587 | 588 | if __name__ == "__main__": 589 | run() 590 | 591 | ``` 592 | 593 | Ejemplo 2 594 | 595 | ```py 596 | def run(): 597 | frase = input("Escribe una frase : ") 598 | for caracter in frase: 599 | print(caracter.upper()) 600 | 601 | 602 | 603 | if __name__ == "__main__": 604 | run() 605 | 606 | ``` 607 | 608 | ### Clase 25 Interrumpiendo ciclos con break y continue 609 | 610 | Ejemplo1 611 | 612 | ```py 613 | def run(): 614 | for i in range(10000): 615 | print(i) 616 | if i == 5678: 617 | break 618 | 619 | if __name__ == '__main__': 620 | run() 621 | ``` 622 | 623 | ejemplo 2 624 | 625 | ```py 626 | def run(): 627 | for contador in range(1000): 628 | if contador % 2 != 0: 629 | continue 630 | print(contador) 631 | 632 | if __name__ == '__main__': 633 | run() 634 | ``` 635 | 636 | ejemplo 3 637 | 638 | ```py 639 | def run(): 640 | texto= input('Escribe un texto: ') 641 | for letra in texto: 642 | if letra == 'o': 643 | break 644 | print(letra) 645 | 646 | if __name__ == '__main__': 647 | run() 648 | ``` 649 | 650 | ### Clase 26 Proyecto: prueba de primalidad 651 | 652 | ```py 653 | def es_primo(numero): 654 | if numero == 1: 655 | return False 656 | else: 657 | contador = 0 658 | for i in range(1 , numero+1): 659 | if i == 1 or i == numero: 660 | continue 661 | if numero % i == 0: 662 | contador += 1 663 | if contador == 0: 664 | return True 665 | else: 666 | return False 667 | 668 | 669 | def run(): 670 | numero = int(input("Escribe un número: ")) 671 | if es_primo(numero): 672 | print(str(numero) + " es primo") 673 | else: 674 | print(str(numero) + " NO es primo") 675 | 676 | 677 | if __name__ == "__main__": 678 | run() 679 | ``` 680 | 681 | ### Clase 27 Proyecto: videojuego 682 | 683 | ```py 684 | import random 685 | 686 | def run(): 687 | numero_aleatorio = random.randint(1, 100) 688 | numero_elegido = int(input("Elije un numero del 1 al 100 :")) 689 | while numero_elegido != numero_aleatorio: 690 | if numero_elegido < numero_aleatorio: 691 | print("Busca un numero mas grande ") 692 | else: 693 | print("Busca un numero mas pequeño ") 694 | numero_elegido = int(input("Elije otro numero :")) 695 | print("Ganaste!") 696 | 697 | 698 | if __name__ == "__main__": 699 | run() 700 | ``` 701 | 702 | ## Modulo 5 Estructuras de datos 703 | 704 | ### Clase 28 Almacenar varios valores en una variable: listas 705 | 706 | Las listas pertenecen a las estructuras de datos en python, pueden almacenar distintos tipos de primitivos u otras estructuras de datos dentro de una misma lista 707 | 708 | ```py 709 | #declarar lista 710 | my_lista = [] 711 | my_lista = list() 712 | 713 | #unir listas 714 | my_lista = [1] 715 | my_lista2 = [2,3,4] 716 | my_lista3 = my_lista + my_lista2 717 | my_lista3 # [1,2,3,4] 718 | 719 | #partir listas como slices 720 | my_lista = [1,2,3] 721 | my_lista[1:] = [2,3] 722 | 723 | #extender una lista 724 | my_lista = [1] 725 | my_lista2 = [2,3,4] 726 | my_lista.extend(my_lista2) # [1,2,3,4] 727 | 728 | #multiplicar listas 729 | my_lista = ['a'] 730 | my_lista2 = my_lista * 5 731 | my_lista2 # ['a','a','a','a','a'] 732 | 733 | #eliminar ultimo elemento de la lista 734 | my_lista = [1,2,3,4,5] 735 | my_lista = my_lista.pop() 736 | my_lista # [1,2,3,4] 737 | 738 | #ordenar lista 739 | my_lista = [2,1,5,4,3] 740 | my_lista = my_lista.sort() 741 | my_lista # [1,2,3,4,5] 742 | 743 | #eliminar un elemento 744 | my_lista = [1,2,3,4,5] 745 | del my_lista[0] 746 | my_lista # [2,3,4,5] 747 | 748 | #eliminar si conocemos su valor 749 | my_lista = [1,2,3,4,5] 750 | my_lista.remove(3) 751 | my_lista #[1,2,4,5] 752 | 753 | #saber que metodos hay dentro de un elemento 754 | my_lista = [1,2,3,4,5] 755 | dir(my_lista) # ['__add__', '__class__', '__contains__', ... 756 | 757 | #modificar un elemento 758 | my_lista = [1,2,3,4,5] 759 | my_lista[0] = 100 760 | my_lista # [100,2,3,4,5] 761 | 762 | #añadir un elemento al final 763 | my_lista = [1,2,3,4,5] 764 | my_lista.append(6) 765 | my_lista # [1,2,3,4,5,6] 766 | 767 | #organizar una lista 768 | my_lista = [2,5,1,3,4] 769 | my_lista.sort() #[1,2,3,4,5] 770 | 771 | ``` 772 | 773 | ALgunos metodos adicionales 774 | 775 | ```py 776 | .sorted() # También ordena como sort() pero modifica la lista inicial 777 | .clear() # vaciá la lista 778 | .count() # Cuenta las veces que esta un elemento en lista 779 | .index() #--> Indica la posición donde esta un elemento de la lista 780 | .insert() #--> Inserta un elemento en una posición dada ej: lista.insert(posición,item) 781 | .reverse() #--> Le da la vuelta a una lista 782 | ``` 783 | 784 | ### Clase 29 Entendiendo cómo funcionan las tuplas 785 | 786 | Las tuplas son estructuras de datos inmutables es decir, no puedes modificar una tupla "a" agregando o quitando un valor, lo único que puedes hacer es definir de nuevo esa tupla "a". Los objetos inmutables (como los strings) son tipos de datos para python que apuntan a un lugar especifico en memoria y que su contenido no puede ser cambiado, al cambiar el contenido predefiniendo el contenido de la variable "a" entonces cambiara su posición en memoria. 787 | 788 | ```py 789 | #declarar tupla 790 | mi_tupla = () 791 | mi_tupla = (1,2,3) 792 | 793 | #generar una tupla de 1 solo valor (Obligatorio la ,) 794 | mi_tupla = (1,) 795 | 796 | #acceder a un indice de la tupla 797 | mi_tupla = (1,2,3) 798 | mi_tupla[0] #1 799 | mi_tupla[1] #2 800 | mi_tupla[2] #3 801 | 802 | #reasignar una tupla 803 | mi_tupla = (1,2,3) 804 | mi_otra_tupla = (4,5,6) 805 | mi_tupla =+ mi_otra_tupla 806 | 807 | #metodos de las tuplas 808 | mi_tupla = (1,1,1,2,2,3) 809 | mi_tupla.count(1) #3 el numero 1 aparece 3 veces en la tupla 810 | mi_tupla.index(3) #5 indice de la primera instancia donde se encuentra un elemento 811 | mi_tupla.index(1) #0 812 | mi_tupla.index(2) #3 813 | ``` 814 | 815 | ### Clase 30 Que son los diccionarios 816 | 817 | ```py 818 | # Definir función principal 819 | def run(): 820 | # Defino el diccionario, agrego los valores. 821 | mi_diccionario = { 822 | 'llave1' : 1, 823 | 'llave2' : 2, 824 | 'llave3' : 3, 825 | } 826 | 827 | 828 | # Imprimo las llaves del diccionario utilizando una bucle for 829 | # Con '.keys()' estoy llamando a imprimir las llaves, no los valores. 830 | for llave in mi_diccionario.keys(): 831 | print(llave) 832 | 833 | # Imprimo los valores del diccionario utilizando una bucle for 834 | # Con '.values()' estoy llamando a imprimir los valores. 835 | for valores in mi_diccionario.values(): 836 | print(valores) 837 | 838 | # Imprimir las llaves y los valores utilizando '.items()' 839 | # Para esto, coloco las variables llave e items 840 | for llave, items in mi_diccionario.items(): 841 | print("La llave: '" + llave + "' contiene el item: " + str(items)) 842 | 843 | 844 | if __name__ == '__main__': 845 | run() 846 | ``` 847 | 848 | ### Clase 31 Proyecto: generador de contrasenas 849 | 850 | ```py 851 | def generar_contrasena(): 852 | mayusculas = ["A","B","C","D","E","F","G","H"] 853 | minusculas = ["a","b","c","d","e","f","g","h"] 854 | simbolos = ["!","@","#","$","%","&","/"] 855 | numeros = ["1","2","3","4","5","6","7","8","9","0"] 856 | caracteres = mayusculas + minusculas + simbolos + numeros 857 | contrasena = [] 858 | for i in range(15): 859 | caranter_ramdom = random.choice(caracteres) 860 | contrasena.append(caranter_ramdom) 861 | # convertir una lista a string 862 | contrasena = "".join(contrasena) 863 | return contrasena 864 | 865 | def run(): 866 | contrasena = generar_contrasena() 867 | print("Tu nueva contraseña es: " + contrasena) 868 | 869 | 870 | if __name__ == "__main__": 871 | run() 872 | ``` 873 | --------------------------------------------------------------------------------