Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Ayudantía 10 Programación Python

Ayudantía 10 Programación Python

Ayudantía 10 Programación Python en la USM, 2011-2. Se ve materia sobre manipulación básica de archivos (lectura, escritura y agregar datos) y procesamiento de texto para manipular datos en archivos de texto.

Gonzalo Correa

March 10, 2012
Tweet

More Decks by Gonzalo Correa

Other Decks in Education

Transcript

  1. Archivos Permiten guardar datos, que podrían ser leídos por cualquier

    programa Un archivo en formato CSV! Algunos usos: Bases de datos Guardar configuración 8 sábado 10 de marzo de 12
  2. Archivos nombre_archivo = raw_input('Nombre del archivo (sin extension): ') nombre_archivo

    += '.txt' # Escritura archivo = open(nombre_archivo, 'w') archivo.write('Esto es un archivo!\n') archivo.write('Acabamos de escribir en el usando Python :)') archivo.close() # Lectura archivo = open(nombre_archivo) for linea in archivo: # Se hace strip() para eliminar el ‘\n’ del final contenido = linea.strip() print contenido archivo.close() 9 sábado 10 de marzo de 12
  3. Archivos # Agregar archivo = open(nombre_archivo, 'a') archivo.write('\nAhora, nuevas lineas!\n')

    archivo.write('En esta parte no se que escribir ._.') archivo.close() # Mostrar archivo = open(nombre_archivo) for linea in archivo: contenido = linea.strip() print contenido archivo.close() # Borrar todo y escribir archivo = open(nombre_archivo, 'w') archivo.write('UPS! todo borrado :S') archivo.close() 10 sábado 10 de marzo de 12
  4. Idea: Usar funciones de manipulación de strings para facilitar el

    manejo de información 14 sábado 10 de marzo de 12
  5. Si conocemos el formato del texto, podemos leerlo y darle

    sentido, además de guardarlo para utilizarlo después 15 sábado 10 de marzo de 12
  6. Procesamiento de Texto Gonzalo;Correa;Ingenieria Civil Informatica;2007 Alex;Ortega;Biologia;2007 Camilo;Vera;Ingenieria Civil Informatica;2007

    Catalina;Sepulveda;Ingenieria Civil Electrica;2011 Marcela;Moraga;Arquitectura;2009 Catalina;Maldonado;Medicina;2007 Como re ordenar este archivo, para que quede guardado con los apellidos primero, y ordenado alfabéticamente? 16 sábado 10 de marzo de 12
  7. Procesamiento de Texto Leer archivo, linea por linea Cada linea

    debe ser descompuesta usando la función split() Guardamos cada linea como tupla en una lista Ordenamos la lista Escribimos los datos de la lista en un nuevo archivo 17 sábado 10 de marzo de 12
  8. Procesamiento de Texto archivo = open('prueba.txt') personas = [] for

    linea in archivo: nombre, apellido, carrera, anho_ingreso = linea.strip().split(';') personas.append((apellido, nombre, carrera, anho_ingreso)) archivo.close() personas.sort() archivo = open('prueba_ordenado.txt', 'w') for persona in personas: archivo.write(';'.join(persona) + '\n') archivo.close() 18 sábado 10 de marzo de 12
  9. Resumen de Funciones para Procesamiento de Texto split(sep) map(func, iter)

    isupper()/islower() upper()/lower() swapcase() replace(old, new) startswith()/ endswith() x in y ljust(w)/rjust(w)/ center(w) format(value) ‘glue’.join(iter) 20 sábado 10 de marzo de 12
  10. Análisis de E-Mails Una dirección de correo consta de 2

    partes principales, y una sub-parte gonchi @ codegears.cl Parte local Dominio TLD Algunos TLD corresponde a países (como cl), y otros son genéricos (como org) 22 sábado 10 de marzo de 12
  11. Análisis de E-Mails Escriba la función obtener_dominios(correos) que reciba como

    parámetro una lista de correos electrónicos, y retorne la lista de todos los dominios, sin repetir, y en orden alfabético. Escriba la función contar_tld(correos) que cuente la cantidad de veces que aparece cada TLD en la lista, sin considerar los TLD genéricos. 23 sábado 10 de marzo de 12
  12. Análisis de E-Mails >>> genericos = {'com', 'gov', 'edu', 'org',

    'net', 'mil'} >>> c = [ '[email protected]', '[email protected]', '[email protected]', '[email protected]', '[email protected]', '[email protected]', '[email protected]', '[email protected]', '[email protected]', '[email protected]', '[email protected]', '[email protected]', '[email protected]', '[email protected]', '[email protected]', '[email protected]', '[email protected]', '[email protected]', '[email protected]', '[email protected]' ] >>> obtener_dominios(c) ['abc.cl', 'alumnos.usm.cl', 'baz.cz', 'cn.de.cl', 'codegears.cl', 'foo.cl', 'hao.cn', 'lala.de', 'lorem.ipsum.de', 'usm.cl', 'zi.cn'] >>> contar_tld(c) {'cz': 2, 'de': 3, 'cn': 2, 'cl': 9} 24 sábado 10 de marzo de 12
  13. El Ahorcado Hacer juego del ahorcado, tomando palabras y frases

    de una lista almacenada en un archivo Para ello, el usuario debe indicar un número al iniciar el juego. Ese número indicará el número de línea que hay que extraer del archivo, para realizar el juego 25 sábado 10 de marzo de 12
  14. El Ahorcado En las frases, los espacios no deben ser

    adivinados Ej: G_nz_l_ C_rre_ Algunas palabras y frases de ejemplo: gato, ola, barco de carga, cabina telefonica, el ayudante es la raja 26 sábado 10 de marzo de 12
  15. Suma por fila y columna Se tiene un archivo con

    el siguiente contenido 45 12 98 1 12 65 7 15 76 54 23 1 65 2 84 27 sábado 10 de marzo de 12
  16. Suma por fila y columna Escribir la función suma_lineas(nombre_archivo) que

    entregue una lista con la suma de todas las lineas >>> suma_lineas('datos1.txt') [155, 78, 98, 78, 151] Escribir la función suma_columnas(nombre_archivo) que entregue una lista con la suma de todas las columnas >>> suma_columnas('datos1.txt') [172, 64, 324] 28 sábado 10 de marzo de 12
  17. Suma por fila y columna >>> suma_lineas('datos1.txt') [155, 78, 98,

    78, 151] >>> suma_columnas('datos1.txt') [172, 64, 324] 29 sábado 10 de marzo de 12
  18. Cartones de Loto Se tiene un archivo con todos los

    juegos registrados para un sorteo de loto. Cada linea tiene los números jugados en cada cartón, separados por espacios 30 sábado 10 de marzo de 12
  19. Cartones de Loto ¿Cuántos cartones fueron jugados? Para responder a

    esto, escribir la función contar_cartones() De todos los cartones jugados, ¿cuántos escogieron el número 7? Para esto, escribir la función contar_numero_de_cartones(n) que cuente cuantos cartones tienen el número ‘n’ 31 sábado 10 de marzo de 12
  20. Cartones de Loto Escribir la función hay_ganadores(numeros) que dado los

    números de un sorteo, indique si alguien gano el Loto >>> hay_ganadores({13, 33, 5, 38, 1, 19}) True >>> hay_ganadores({14, 21, 1, 36, 9, 17}) False Escribir la función n_aciertos(numeros, n) que indique cuantas personas tuvieron n aciertos >>> n_aciertos({13, 33, 5, 38, 1, 19}, 4) 17 >>> n_aciertos({20, 39, 6, 27, 12, 4}, 3) 229 >>> n_aciertos({1, 2, 3, 4, 5, 6}, 5) 2 32 sábado 10 de marzo de 12