Está en la página 1de 94

1.

Módulo 1 - Programar con Python, Sección incompleta


1. Introducción
2. ¿Por qué programar?
3. El lenguaje Python 
4. Entorno de programación con Python, 
5. La estructura de Python
6. Práctica no evaluable
7. Práctica
8. Examen de prueba módulo 1
9. Examen módulo 1
10. Resumen 
2. Módulo 2 - Variables y expresiones, Sección incompleta
1. Introducción
2. Variables y tipos de datos
3. Expresiones y funciones lógicas
4. Práctica
5. Examen de prueba módulo 2
6. Examen módulo 2
7. Resumen 
3. Módulo 3 - Conceptos básicos de programación con Python, Sección incompleta
1. Introducción
2. Flujo de programación secuencial con condicionales
3. Flujos de programación iterativos
4. Print/Input, Indentado y Try/Except
5. Práctica
6. Examen de prueba módulo 3 
7. Examen módulo 3
8. Resumen
4. Módulo 4 - Resolviendo problemas con Python, Sección incompleta
1. Introducción 
2. Usando código secuencial 
3. Resolviendo problemas con bucles I 
4. Resolviendo problemas con bucles II 
5. Práctica
6. Examen de prueba módulo 4 
7. Examen módulo 4
8. Resumen 
5. Módulo 5 - Estructurando y reutilizando código, Sección incompleta
1. Introducción 
1
2. Usando funciones para no repetir código 
3. Módulos y espacios de nombres 
4. Llamando a las funciones desde los objetos 
5. Práctica
6. Examen de prueba módulo 5 
7. Examen módulo 5
8. Resumen
6. Módulo 6 - Trabajando con texto en Python, Sección incompleta
1. Introducción, 
2. Las cadenas de texto 
3. Códigos de caracteres 
4. Práctica
5. Práctica no evaluable 
6. Examen de prueba módulo 6 
7. Examen módulo 6
8. Resumen 
7. Módulo 7 - Los ficheros de texto en Python, Sección incompleta
1. Introducción, 
2. Ficheros de texto 
3. Trabajando con cadenas en ficheros de texto, 
4. Práctica no evaluable, 
5. Examen de prueba módulo 7
6. Examen módulo 7
7. Resumen 
8. Examen final, Sección incompleta
1. Examen final
2. Examen final práctico

Módulo 1 - Programar con Python


Introducción al curso (Primer video)
Video 1 Curso de Introducción a Python https://youtu.be/5Psi_HES-nc

Hola bienvenidos al mooc de introducción a Python, soy Leonardo Salom y voy a ser
vuestro profesor durante este curso. Los objetivos del curso es que aprendamos a
programar en el lenguaje de programación Python independientemente de los
conocimientos previos, si tenéis un background de, de informático pues te será más
fácil seguirlo, pero podrás seguirlo independientemente de esto, además
independientemente de la formación previa, da igual el nivel de formación que tengas e
independientemente de vuestra edad.
Para entender cómo funciona un ordenador tendremos que pensar que al fin de
cuentas un ordenador es como una calculadora muy compleja, esta calculadora tan
compleja es, lo único que hace son acciones que hemos ido preparando otras
personas, entonces la idea es que pasemos de ser usuarios de unas herramientas que

2
ya están hechas a desarrolladores, imaginaros que es como si, en un mueble ikea,
pues puedes diseñar
tu mueble como veis en las fotos y preparar vuestro, vuestro propio estante o coger
uno que ya está diseñado y ponerlo en vuestra casa.

Bienvenidos al primer módulo del curso.

El módulo incluye dos prácticas (una que cuenta para el progreso del curso y otra que
no), un examen de prueba y un examen de módulo. Si no has solicitado el certificado
no podrás acceder al contenido evaluable, con lo que no tendrás acceso a las
prácticas evaluables ni al examen de módulo, aunque puedes descargarte el fichero
máster con todas las prácticas de la sección de recursos de la página inicial del curso y
realizarlas sin que sean evaluadas.
El tiempo estimado para completar este módulo son 4 horas y el tiempo de visionado
de los vídeos alrededor de 40 minutos.
En el módulo reflexionaremos sobre las razones para aprender a programar y definiremos qué es un programa
informático, comentando las razones por las que hemos elegido Python para aprender a programar. Luego
comentaremos una serie de cuestiones prácticas sobre las herramientas a utilizar en el curso, como la navegación
por el sistema de directorios, la instalación del entorno Anaconda, el uso del intérprete de Python, qué son los
Júpiter notebooks y cómo descargar el material del curso para trabajar en local y cómo usar la interfaz de desarrollo
Spyder, para acabar hablando de la estructura de Python y de los tipos de errores que aparecen al programar.

En las prácticas del módulo aprenderemos a imprimir "Hola Mundo" y trabajaremos


con la creación de variables.
En la actualidad donde se utiliza medios tecnológicos para cualquier actividad poder
programar nos permite interactuar con la maquina o computadora, podemos modelar y
realizar aplicaciones para mejorar y facilitar nuestra vida. Programar es un campo de
conocimiento muy amplio en el cual interactuamos con medicina, ingeniería, publicidad
o educación, saber estos conceptos complementan nuestro aprendizaje y nos ayuda
en nuestra labor.

¿Por qué programar? (Segundo video)


Video 2 ¿Porque programar? https://youtu.be/OT-mBIR19bI

Hola bienvenidos al modo de programación en Python, en este vídeo vamos a ver por
qué programar. Hay dos motivos principales para programar, uno es desarrollar
aplicaciones para que los usen otros ya sean aplicaciones web de móvil o simplemente
aplicaciones de PC, estas aplicaciones normalmente requieren una preparación más
específica y una serie de objetivos y suelen ser aplicaciones genéricas para un cliente
o, o un usuario final. O podemos modificar una serie de aplicaciones existentes para
que se adecue a nuestras necesidades igual hay una herramienta que hace casi lo que
queremos, pero si sabemos programar podremos modificarla para crear exactamente
lo que queremos o en tareas cotidianas que no sean muy complejas podremos hacer
nuestras propias aplicaciones desde cero que resuelvan estas tareas y las
automaticen.
Tenemos que hacer un cambio de paradigma de usuario a desarrollador, como
usuarios nosotros somos consumidores de una serie de herramientas como puede ser
3
un martillo y podemos hacer lo que hace la herramienta, clavar clavos, en cómo
desarrolladores haremos nuestras propias herramientas y si por ejemplo no queremos
un martillo, pero necesitamos unas tijeras no las tenemos haremos nuestras propias
Tijeras.

¿Qué es un programa? (Tercer Video)


Video 3 ¿Qué es un programa? https://youtu.be/sTg5L0XC9Mk

Un programa a fin de cuentas es una serie de instrucciones que vamos a seguir paso
a paso, hasta realizar una tarea. Un ejemplo de un programa para humanos es una
receta de cocinar, por ejemplo, si tenemos un enlace a una receta y en la que vemos
los ingredientes que se, del plato que queremos hacer, el tiempo, un resumen y luego
una elaboración. Una de los problemas que tiene es que si nosotros le damos esto a
un ordenador en él no es capaz de abstraer estos pasos que están escritos y hacerlos
el por sí mismo, en cambio nosotros vemos esto y lo abstraemos y seríamos capaz de
acabar teniendo nuestra paella más o menos, es una receta por un ordenador, es una
receta para un ordenador igual que para nosotros es una lista de tareas que el
ordenador
tienen que hacer una detrás de la otra.
Lo que vamos a hacer en este curso es pues precisamente eso hacer recetas para que
nuestro ordenador las haga y al final tengamos nuestra paella.

¿Por qué Python? (cuarto Video)


Video 4 ¿Porque Python? https://youtu.be/-5n3VnmQvt4

Una de las principales razones es porque es opensource, esto quiere decir, como veis en
el cartel, entre otras cosas que es gratis, no necesitáis pagar para utilizarlo.
Otra es que es multiplataforma, y lo podéis usar tanto en Mac, como en Windows, como
en Linux, esto nos hace muy cómodo el desarrollar para las distintas plataformas y en
nuestra aplicación o nuestro script, funcionen todas ellas.
Luego es muy parecido a leer y escribir en inglés, su creador que era un holandés,
Guido van Rossum, se encargó de que una de las cosas que tuviera es que fuera un
lenguaje muy similar a la escritura en inglés y esto hace que sea muy fácil leerlo y muy
fácil de entenderlo. Además, es fácil de instalar como veremos en un vídeo a
continuación simplemente es seguir uno, unos botones de siguiente y lo tendremos
instalado en nuestras máquinas. Luego además tiene muchas librerías para afrontar
prácticamente cualquier problema, a día de hoy pues puedes resolver problemas
inteligencia artificial, de Big data, data science, testing, web, Scrapping o simplemente
realizar tareas más sencillas como mover archivos o copiar archivos o mandar correos.

Navegando por el sistema de directorios. (5to video)


Video 5 Navegando por el sistema de directorios https://youtu.be/BRxmZ9GbKY4

4
Para navegar por sistema de directorios tenemos dos opciones, podemos usar el
explorador de archivos de nuestro sistema operativo, o bien podemos usar el terminal.
Vamos a ver un ejemplo de cada uno, para usar el explorador de archivos, que es el
primero ejemplo que, dicho, podemos darle a aquí a esta carpeta de aquí que nos
abrirá en el explorador de archivos o abrirla con Windows como vimos en el medio
anterior.
Aquí vemos el entorno de carpetas y de archivos que tenemos en nuestro equipo y
aquí tenemos la ruta de del archivo, de la, de dónde estamos, por ejemplo, si venimos
aquí, a disco local ce, entramos a una carpeta cualquiera, "oneDriveTemp", esto que
pulsamos aquí que sale, es la ruta del sitio donde estamos, si entramos aquí dentro
vemos que va cambiando la ruta y va y cada vez que entramos una carpeta va
añadiendo barras y el nombre de la carpeta en la que hemos entrado y como vemos,
podemos ver y está, al estar en Windows el disco empieza por una unidad, un nombre
unidad, ce dos puntos y una primera contra barra porque estamos en el disco ce, en el
caso de Windows los discos vienen nombrados así, con letras la c, la zeta depende de
vuestro equipo tendrá, pero normalmente tendréis una unidad ce que es, será la raíz y
donde tendréis vuestros archivo.
Cuando queremos navegar por esta por estas rutas de archivos y por ejemplo
queremos acceder a esta carpeta, de "Adobe" y queremos acceder a hacer a ce
program fails adobe, pero no podemos acceder directamente porque estamos
trabajando con el terminal, para esto abriremos un terminal abriendo terminal, luego
escribiendo comand y nos sale símbolo del sistema, como podemos ver, aquí nos sale
la ruta en la que estamos ce dos puntos barra, users barra polimedia y en este, le
decimos dir, nos sale los nombres de los, de las carpetas y de los archivos que están
en esta ruta como pueden, es muy importante tener en cuenta estas dos primeras que
salen aquí punto y punto punto. Punto hace referencia a la carpeta en la que nos
encontramos actualmente, es decir, a c users polimedia y punto punto hace referencia
a la carpeta superior, en este caso ce dos puntos barra y users, sin polimedia.
Luego podemos ver que hay algunas carpetas y archivos que empiezan por punto
estos son archivos ocultos que nos, que normalmente el explorador de archivos no nos
va a mostrar a no ser que lo hagamos intencionadamente, luego tenemos una serie de
carpetas y de archivos, la diferencia entre una carpeta y archivo es que cuando
hacemos hecho dir, los directorios nos los marca como dir aquí y los archivos nos los
marca como dir. Bien, si nosotros ahora por ejemplo queremos entrar a carpeta music
ponemos cd espacio y el nombre de la carpeta que hemos dicho, music y veremos que
hemos cambiado nuestra ruta a users polimedia music podemos una vez más hacer dir
y ver que en este caso en concreto nuestra carpeta de música está vacía y tenemos
como hemos dicho punto y punto punto, si queremos volver a la carpeta en la que
estábamos que es la carpeta superior, haremos ce si es directory, punto punto y esto
lo que hace es volvernos a la carpeta anterior, no a la carpeta anterior sino a la carpeta
superior, es importante que esto no vuelva hacia atrás, sino que va subiendo niveles
en las carpetas.
Bueno, y esto es todo respecto a la exploración de archivos, muchas gracias.

Instalación de Python con Anaconda (6to video)


Video 6 Instalación de Python con Anaconda https://youtu.be/vVJU5CmVTf0
5
6
¿Qué es Anaconda?
Anaconda es una de las distintas distribuciones de Python existentes ahora
mismo y nos permite de una forma muy sencilla instalar y configurar distintos
paquetes, porque además es un gestor de paquetes.
Además, crea un entorno independiente. Esto es lo que hace es que si ya
tenemos Python instalado en nuestra máquina nos instalará Python en un entorno
totalmente independiente que no es intrusivo con lo que tengamos instalados.
¿Como saber que versión instalar?
Uno de los problemas si trabajamos con Windows es saber si nuestra máquina es de
32 o 64 bits porque anaconda tiene clientes de 32 y 64 bits. Si es nuestro caso, en
Windows con la tecla Windows + E Apretando Windows + E, abriremos el explorador, o
bien, aquí en el explorador y haciendo clic en Este equipo, Propiedades, nos saldrá
esta pantalla. Aquí en esta pantalla donde pone Tipo de sistema vemos que pone
Sistema Operativo de 32 bits o de 64 bits.
Instalación
La instalación es muy sencilla simplemente tendremos que acceder a la página de
anaconda y descargar la versión que veamos www.Anaconda.com Ahora la
realizaremos. Una cosa que tendríamos que tener en cuenta es que el 1 del 1 de 2020,
Python 2.7 pasará estar depecado. Esto quiere decir que igual
que un piano viejo, no podemos usarlo. no será conveniente que lo usemos en verdad
porque si bien ver las canciones que toquemos seguirán funcionando, nadie nos
asegurará que estará afinado.
En este caso que pueda tener problemas de seguridad u otras cosas. Ahora vamos a
hacer la instalación. Como os he comentado abriré en el navegador e iré a la web de
Anaconda, que es anaconda.com, y aquí tengo una página, un botón de descarga.
Pulsaremos aquí, y aquí abajo nos deja elegir nuestro sistema operativo: Windows,
Mac o Linux. En nuestro caso es Windows y nos da elegir entre los dos posibles
instaladores el de 32 y el de 64. Como hemos visto, tenemos que usar el de 32. No os
recomiendo para nada, la instalación de Python 2.7 por lo que acabo de decir, el 1 del
12020 esta versión dejará de ser útil.
Pues descargamos la versión de 32 o 64 bits. Nos descargará un archivo ejecutable y
ahora cuando termine dejarse realizaremos la instalación.
Lo abrimos desde aquí, vemos que es un instalador estándar de Windows. Daremos a
siguiente, aceptamos las condiciones, podemos elegir si la instalación es solamente
para nosotros, si el equipo sólo lo usamos nosotros o para todos los usuarios del
equipo. Si nuestro equipo tiene varios usuarios y queremos que todos sean capaces
de usar Windows elegimos esta opción.
En nuestro caso vamos a escoger sólo nosotros. Luego elegiremos el punto de
instalación, el punto por defecto está en la unidad C, si tenéis problemas de espacio o
queréis dejarlo en algún otro sitio podéis usar el examinador de archivos de aquí o
simplemente escribir la ruta aquí y darle a siguiente, y luego os pregunta en opciones
avanzadas si queremos registrar Anaconda como nuestro Python por defecto y si
queremos añadir Anaconda al PATH de entorno de Windows.
Esto solamente será necesario si queremos lanzar Python de Anaconda desde nuestro
terminal, así que por defecto dejaremos estas opciones, le daremos a instalar y
esperaremos a que se instale.
7
Bueno ya lo tenemos instalado, le damos a siguiente, otra vez a siguiente y tenemos
aquí para leer más o ver la guía de cómo empezar. Lo vamos a desmarcar y en el
siguiente vídeo veremos cómo funciona.

El intérprete de Python. (Video 7)


Video 7 El intérprete de Python. https://youtu.be/Xx6LBCizB4w

El intérprete de Python es el encargado de ejecutar nuestro código. Todo nuestro


código que desarrollemos el intérprete me va a ir ejecutándolo línea línea, según
hayamos escrito. Tiene dos modos de trabajo
1. un modo interactivo que veremos ahora y
2. un modo de ejecutar scripts.
Para lanzar el intérprete, si ya hemos instalado Python tenemos dos opciones:
1. desde la Anaconda navigator, en la pestaña entornos, seleccionamos el entorno
desde que vemos salir del intérprete y le daremos aquí abrir terminal, open terminal.
2. O bien en el menú de Windows buscaremos la versión de Anaconda que hemos
instalado y tenemos aquí Anaconda Powershell.
Una vez abramos el terminal, podemos lanzar el intérprete simplemente escribiendo el
comando Python. Esto es un intérprete interactivo, que lo que hace es las instrucciones
que vayamos lanzando las irá ejecutado una a una.
Por ejemplo: Python al final es como una calculadora, si nosotros le preguntamos
cuánto es tres más dos nos devuelve un cinco. Cinco entre dos nos devuelve dos y
medio. Podemos además declarar variables. Y mostrarlas en pantalla con el comando
print, este es uno de los programas más típico.
Si esto mismo lo queremos hacer en un archivo y queremos el mismo ejecute este
print. Por ejemplo, abriremos un editor de texto, por ejemplo, Notepad con el nombre
del archivo que queremos acceder con la extensión py. Lo que haremos, es poner
nuestra instrucción. Guardamos el archivo. Entonces una vez lo tenemos, podemos ver
el archivo está aquí. Podremos hacer Python y el nombre de archivo holamundo punto
py. Esto lo que hará es abrir el archivo y ejecutar las líneas del archivo una detrás de la
otra. Y como vemos sale el texto de hola mundo. Bueno, esto es el intérprete de
Python y este es el modo interactivo y el modo de scripts.

¿Qué es Jupyter Notebooks? (Video 8)


Video 8 Qué es Jupyter Notebooks. https://youtu.be/I2bt9hqR5Cs

jupyter notebooks es una aplicación web de código abierto que nos permitirá ejecutar
código en Python dentro de nuestro navegador, anteriormente se llamaba IPython,
pero le cambiaron el nombre recientemente a jupyter notebooks y nosotros lo
llamaremos jupyter directamente, si es posible que veáis en internet alguna referencia
IPython que sepáis que es exactamente lo mismo. Los archivos de jupyter notebooks
permiten combinar código de programación, texto, imágenes y ecuaciones
matemáticas, todo esto combinado en un solo documento permite presentarlo y es y se

8
usa mucho para congresos y para documentos científicos. En la tecnología, en la data
science se usa en los jupyter notebooks en distintas etapas data science tanto para
preparar los datos como para luego mostrarlos y entonces es importante que sepáis
cómo funciona, además es muy adaptable como es una aplicación web tenemos la
opción de instalar en nuestra propia máquina y ejecutarlos de nuestra máquina en
nuestro navegador o podemos acceder a un servicio remoto que nos provea este tipo
de notebooks.
Hay algunos servicios remoto gratuitos como azure notebooks, Google colab, Watson,
Kyso, ModeAnalytics, Quantopian y hay muchos más, durante el curso usaremos uno
de ellos donde alojaremos los problemas y los ejercicios para que podáis acceder a
ellos si no tenéis posibilidad de instalaros Python en vuestros equipos.

Descarga y uso de los masters del curso en local


Python – Importar los masters de Jupyter Notebooks (Video 9)

Video 9 Python: Importar los masters de Jupyter Notebooks https://youtu.be/xXMjYoTMYEk

Si queréis tanto para seguir los vídeos como parecer los problemas, en cada una de
las unidades tenéis el enlace para descargar el Notebook de Jupyter y trabajarlo en
local o para acceder a Binder en la nube y trabajar en la nube, pero en ambos casos,
id descargando esto video por video, o problema problema es bastante más incómodo
que descargarse todo el paquete y trabajar en local desde el paquete completo. Para
eso tendréis debajo de este vídeo los enlaces que tengo aquí, entonces estos enlaces
haciendo clic sobre ellos se descargan directamente y sino con el botón derecho del
ratón sobre el enlace, cuando estéis en el navegador, por ejemplo, aquí botón derecho
del ratón le podéis dar a guardar enlace como y guardar el fichero.
Lo que se os guardará en descargas serán estos ficheros Zip fijaos que tenemos el pic
Python Mooc Problems Master y Python Mooc Companion Máster este es para los
ejercicios y es para los vídeos. Bien haciendo doble clic sobre el zip veréis que tiene
una carpeta dentro y esta carpeta lo que tenéis que hacer es arrastrarla, a donde
queréis trabajar, yo normalmente la arrastró a documentos, pues cojo esta carpeta y la
arrastras
a documentos que yo ya lo he hecho, y lo mismo se hace volviendo para atrás con la
otra. Si tenéis Mac como sistema operativo pues tenéis que abrir el fichero zip y
arrastrar
la carpeta donde queréis trabajar. Bien yo ahora sí me voy a documentos, si os fijáis
aquí en documentos yo tengo estas dos carpetas.
Bien ¿cómo accedo a trabajar con esas carpetas? Bueno hay bastantes maneras, si
tenéis el Anaconda ya instalado podemos venir aquí, ir aquí al Anaconda, a ver el
navegador de Anaconda pero una vez que está instalado el Jupyter Notebooks es
mucho más cómodo ir directamente a Jupyter Notebooks vamos aquí, vamos a lo
mismo Anaconda, pero en vez de seleccionar el navigator nos vamos aquí, un poco
para abajo que mi portátil no se ve, pero ahora os lo enseño aquí tenemos veis Jupyter
Notebooks Anaconda 3, abro esto fijaos que realmente lo que hace Jupyter
Notebooks es lanzar un script de Python, con lo cual se queda abierta una ventana,
9
con la consola por detrás y esta ventana lo que hace es en el navegador que
tengamos abierto, nos va a lanzar un acceso a nuestro disco duro local, en el cual
podemos trabajar
con el Notebook, que pasa que nos abre la carpeta general, por defecto entonces
tenemos que irnos a documentos y aquí ya elegiríamos Python Mooc Companion o
Python Mooc Problems, si fuéramos aparece un Mooc Problems, está muy claro
porque tenemos aquí pues para cada semana, los ejercicios y dentro de los ejercicios
los ficheros que hacen falta para trabajar, aquí podemos navegar hacia atrás, por
ejemplo, en la semana siete que trabajamos con un fichero de texto que tiene el quijote
y otro en ansi, pues los tenemos aquí. Para acceder al Jupyter Labs simplemente le
damos aquí, a ejercicio ipynb y fijaos que tenemos ya aquí nuestro Jupyter Lab para
trabajar en local, mucho más fácil. A partir de aquí el próximo día que queremos
trabajar, pues lo mismo, abrimos de la misma manera y tenemos todos los ejercicios
aquí no tenemos que estar descargando los 1 1, descargando ficheros, lo que haga
falta, está todo ya aquí bien, igual que habéis visto es el de Mooc Problems Master,
tenemos el de Mooc Companion máster, este es un pelín más lioso porque los Jupyter
Labs están nombrados de acuerdo con el número de vídeo cuando se hizo, entonces
tenemos que el ocho es el primero, ocho nueve y luego ya tenemos diez, once, doce,
con respecto a los videos es fácil

El script de python que lanza los Jupyter Notebooks crea un servidor local de web al que
accedemos luego desde el navegador, por eso debe permanecer abierta la ventana de la consola
mientras los usamos.

Para localizar qué Jupyter Notebook tenéis que abrir para cada vídeo, en la parte superior de
la pantalla de trabajo que aparece en el vídeo está el nombre del Notebook.

https://github.com/leosamu/pythonMoocCompanion/archive/master.zip

https://github.com/leosamu/pythonMoocProblems/archive/master.zip

Creación de accesos directos a los masters del curso en local


Python – accesos directos a los masters de Jupyter Notebooks (Video
10)

Video 10 Python: accesos directos a los masters de Jupyter Notebooks


https://youtu.be/pkGex7v4Czg

Bien, ya tenemos descargados en la carpeta de documentos los masters, de los vídeos


en Companion y de los problemas en Problems, los hemos descomprimido y lo que no
tenemos es, lo que no queremos es tener que navegar cada vez hasta ellos, entonces
esto lo podemos arreglar haciendo un acceso directo, vamos aquí click
el botón derecho del ratón, en Anaconda le damos aquí y en cualquiera
de ellos, le vamos a dar con el botón derecho, en vez de con

10
el izquierdo, perdón, que era antes el izquierdo, y en más vamos
a decirle abrir ubicación de archivo. Vale, cuando veamos esa
ubicación de archivo, esta es la carpeta donde tengamos
todo el Anaconda instalado, aquí veremos que tenemos Jupyter
Notebook Anaconda, esto es un acceso directo al Jupyter Notebook
que hemos usado antes, y que nos lleva a la ruta general. Entonces
este Jupyter Notebook, podemos darle con control+C control+V podemos
copiarlo, como estamos en una carpeta de sistema nos pedirá
permiso de administración, vale lo vamos a hacer dos veces,
vamos a copiarlo dos veces, con control+V dos veces.
Porque aquí lo que vamos a hacer es en la copia uno le voy
a dar a F2, y voy a decirle que que esto serán los vídeos
y esto me pide permisos, porque estamos como en una carpeta
del sistema, le voy a dar F2 otra vez y aquí voy a ponerle los problemas.
Entonces lo que puedo hacer aquí es cambiar la ruta, vale, voy
a irme a la carpeta cualquiera vamos a ir por ejemplo la de
los problemas, doble clic, voy a pinchar aquí arriba voy a coger
la ruta completa con control+C la copio, ahora me voy con alt-tab
de nuevo a esta carpeta y la que cogido es la de los problemas
pues me vengo al de problemas, botón derecho del ratón y le
digo qué propiedades, y en propiedades fijaos que aquí tengo
destino, aquí este es el comando que se ejecuta que es la ruta
con el Jupyter Notebook script y aquí donde pone usser profile
esto lo voy a copiar, lo que hay entre comillas, lo voy a sustituir
con control+V por la ruta que he copiado del otro lado, voy
a darle aquí aceptar, vale, le doy permisos y a partir de ahora cada
vez que yo ejecute este de problemas con doble clic,
fijaos que se me abre la ventana de comandos que se va a quedar
abierta, se va a quedar aquí abajo abierta mientras sigamos
utilizando el Jupyter Notebook porque eso es lo que nos va a permitir
lanzar, vamos al navegador y aquí en el navegador que estemos
usando se nos va a lanzar una ventana en local, pero fijaos
que ya se abre directamente con los problemas, no hay que navegar
por las carpetas, sino que ya está abierta a la
carpeta de los problemas, podemos hacer exactamente lo mismo
con el de vídeos. Tenemos que venir aquí, primero irnos aquí
a la carpeta para cogerla, vamos para atrás vamos a el de
vídeos, y una vez ya estamos dentro hacemos clic aquí arriba con control+C
 lo copiamos, y aquí en vídeo botón derecho del ratón propiedades
y aquí entre las comillas donde pone tantos por ciento y Usser Profile
 todo lo que hay entre las comillas, los sustituimos por la
ruta, le damos a aceptar, permisos de administración y si ahora
hacemos doble clic aquí, nos abrirá otra ventana fijaos que
aquí tengo las dos ventanas del sistema, dos consolas y aquí
me abrirá ahora en un momentito otra pestaña del navegador con
el nuevo fijaos, con el nuevo Jupyter Notebooks local, donde tengo
todos los problemas que hemos visto de los vídeos, con esto
11
ya cada vez que queramos acceder a esto, podemos venir aquí
irnos a Anaconda y si vamos para abajo, veremos que tenemos
aquí la de problemas y la de vídeos que sólo tenemos que
hacer clic sobre ella para acceder directamente.

Conceptos Básicos de Spyder


Video 11 conceptos Básicos de Spyder https://youtu.be/H4WhvQo2_5A
hola bienvenidos al modo de introducción a python en este
vídeo vamos a hablar sobre los conceptos básicos de spyder
Que es spyder, Spyder es uno de los interfaces de desarrollo para
python en concreto uno de los dos que viene instalado por defecto
con una onda y además es de lo más sencillo de utilizar y
por eso vamos a explicar cómo usarlo. Como he comentado está
disponible desde el anaconda Navigator que nosotros hemos instalado
en uno de los días anteriores entonces para lanzarlo simplemente
abriremos el aula donde analito vemos que aquí tenemos spyder
y el botón de la aut mientras se va avanzando un poquito
las partes del país
tiene un un terminal un interprete de python como el que me
gusta en el vídeo anterior aquí a la derecha
luego además tiene un editor de textos donde podemos editar
en nuestros archivos de python para luego lanzarlos
tiene un explorador de variables igual que en el vídeo de
del interprete de python creamos una variable y luego la imprimimos
en pantalla cuando creamos esa variable la veremos vemos ahí
los datos que contiene las variables y una flor de archivos
por si queremos ver qué archivos contienen nuestros nuestras
carpetas que puede queremos abrir un archivo en completa
para ejecutar un programa pulsaremos el botón verde
aquí a la derecha y si queremos ejecutar una línea de c o
elección usaremos ese botón negro de ahí
vamos a ver en acción
aquí lo tenemos determinado abrir como os he comentado aquí
hay un terminal aquí podemos hacer igual que hicimos en el
vídeo del intérprete tres más dos cinco entre dos
vamos a hacer un print
hola
vemos que muestra hola mundo además podemos declarar variables
a es igual a tres be es igual a dos y estas variables aparecen
aquí la explorador de variables veis tenemos una variable
a vale tres y la variable va b vale dos además vemos aquí
en favor de archivos estos para ver los archivos que tenemos
y vemos que tenemos aquí el hola mundo quisimos señoría
anterior si lo abrimos aquí tenemos nuestro archivo el mundo
que simplemente mostrará por pantalla hola mundo
12
podemos ejecutarlo desde el principio esto es equivalente a
hacer paizon hola mundo punto p y le damos aquí
nos dice que donde lo queremos ejecutar
era un run fail que es lo mismo que hacer python y el nombre
del archivo desde la carpeta que estamos trabajando y muestra
hola mundo también podemos simplemente seleccionar la línea
que queremos ejecutar esa línea vale esto es muy
útil para cuando tenemos varias líneas en un archivo o estamos
haciendo pruebas por ejemplo tenemos el print hola mundo además
tenemos el tres más dos tenemos igual a siete
nosotros queremos simplemente ver que vale tres más dos podremos
hacer así o darle a este botón vale aquí en la ayuda
tenemos aparte de un tutorial despide tenemos un tul interactivo
que no siguen muestra las distintas cosas que podemos hacer
y cuando le damos aquí ejecutar vemos que los todo esto tener
en teclas de acceso rápido por ejemplo ejecutar el archivo
ese cinco y ejecutar una selección una línea actuales efe
nueve esto cuando estamos haciendo pruebas no muy bien porque
podremos hacer así en lugar de ir buscando este cada vez pulsaremos
efe nueve nuestro teclado y hacer lo mismo
bueno esto ha sido todo muchas gracias

La estructura de Python
Video 12 La estructura de Python https://youtu.be/nj70D_nbWO4

Hola, en este vídeo vamos a hablar de la estructura de Python.


En primer lugar veremos las palabras reservadas. Las
palabras reservadas en Python son estas que veis aquí
y son un conjunto de palabras que no pueden cambiar el significado
y no le podemos cambiar el significado durante en nuestros
programas pero que Python siempre va a entender exactamente
qué es lo que hacen. Pensad en Python como una mascota, un animal,
que cuando tú le dices cualquier cosa como: "Hola perito ¿Cómo
éstas? Él no te entiende pero le dices ven y ese bien sí que lo entiende.
Pues ese bien es una de esas palabras reservadas. Un ejemplo
sería por ejemplo, la palabra import cuando decimos import
Python si te das cuenta ha cambiado el color. Python sabe que
esa palabra significa que necesitamos traernos algo desde otra
librería entonces por ejemplo, hacemos import math
y esto nos importa la librería math a nuestro entorno.
Otra de las cosas importantes en son los comentarios
como veis hay dos tipos de comentarios los monolínea y los
multilínea. Los comentarios sirven para nosotros dejar notas
en nuestro código igual que como veis en la imagen que anotamos
en el texto los posibles errores, en nuestro código podemos
 anotar esta cosa, esta función hace esto,

13
este trozo de código sirve para hacer esto otro y nos viene
muy bien para, no en el momento que estamos desarrollando, pero
sí cuando más adelante vamos a coger el código poder entenderlo
mejor. Entonces los dos tipos de comentarios que hay son los
comentarios monolínea como esto de aquí que como veis empiezan
por almohadilla y aunque pongamos código delante
todo lo que va detrás del almohadilla pasa a estar comentado y Python no lo leerá pero
nosotros no podemos leer para apuntarnos cosas. Si queremos hacer muchas líneas
de comentario se usan tres comillas simples al principio y al final que esto hace una
cadena de texto que Python no lee pero que nosotros podemos leer.
Las frases nosotros como vimos en uno de los vídeos anteriores en el interprete
podemos ir lanzando en funciones línea línea como por ejemplo aquí abajo. Veis aquí
le asignóa la variable "a" el valor cinco o que se sea diez partido "a".
Miro el valor de "c" en formato cadena. Esto va muy bien
ir línea línea porque nosotros por ejemplo si esto no es lo
que queríamos podemos aquí cambiar el diez por un ocho
volver a ejecutar esta línea,
volver a ejecutar esta línea y esta línea,
cambiar y que el resultado es inmediato esto es
muy cómodo para hacer pruebas de cosas sencillas pero no siempre
es lo óptimo entonces podemos igual que cuando escribimos un
texto organizarnos por párrafos. Los párrafos o scrips
podemos o bien tenerlos un archivo aparte como veis aquí el
ejemplo que hace exactamente lo mismo que las tres líneas
de antes solamente que las ejecutará las tres árabes o en
el caso de júpiter podemos tenerlas todas en un cuadro de
código entonces cuando nosotros ejecutemos este cuadro ejecutará
esta línea, esta línea y esta línea una detrás de la
otra sin esperar y sin pausar en ningún momento.
Otra cosa muy importante son las variables, las variables son
los contenedores de los valores que van a servirnos para resolver
los problemas en Python por ejemplo. un tipo de variable numérica
pues almacena un cero, un uno, un dos o un tres, el valor que queramos darle
las cadenas sirven para almacenar texto. Los diccionarios es
un tipo de variable muy especial que algunos conoceréis como
json o jason que sirven para almacenar una clave y un valor.
La lista sirven para listar objetos como su nombre indica y
se abren con corchetes y se cierran con corchetes y ponéis dentro
el valor que queráis y las tuplas son un tipo especial de
lista y va en lugar de con corchete las declaramos como variable con
paréntesis. Estos tipos de datos lo veremos más adelante
de forma específica. Como podemos ver, para asignar el valor a una
variable lo que hacemos es usar el símbolo igual
y el nombre de la variable entonces nombre variable igual el
valor que queramos almacenar y eso lo que hace es guardar ese
cero dentro de la palabra numero. La cadena igual
el texto hola mundo y eso nos guardará eso cuando nosotros
14
ejecutamos esto dentro de cada una de estas palabras tenemos
el error este ha dado por este carácter extraño de aquí
cuando nosotros ejecutamos esto dentro de cada una de estas variables
tenemos los valores que tenemos aquí. Las constantes
como por ejemplo el número pi, la gravedad...  son muy útiles
cuando queremos hacer una serie de cálculos y nosotros
queremos acceder a una serie de números que van a ser siempre
los mismos como por ejemplo en este caso pi o la gravedad
en Python no existen constantes como tal pero
sí que hay una convención de nomenclatura y es que las variables
que nosotros ponemos todas en mayúscula quiere decir que el
contenido es una constante y no deberemos cambiar su contenido
a lo largo de nuestra ejecución y esto es todo por este vídeo.

Si quieres puedes descargar el texto de el Jupyter notebook utilizado. Para reproducir el proceso paso a
paso puedes hacer click con el botón derecho del ratón para descargar el Jupyter notebook y ejecutarlo en
local (recuerda usar "guardar enlace como" para guardarlo con extensión .ipynb para abrirlo luego con
Anaconda) o conectarte al Binder de la lección para ejecutarlo en la nube.

pythonMoocCompanion/PythonUPVx8.ipynb at master · leosamu/pythonMoocCompanion · GitHub

De los errores se aprenden.


Video 13 De los errores se aprenden https://youtu.be/jpUh7i4Q-IQ

Hola. De los errores se aprende o eso dicen siempre.


En el mundo de la programación, en el mundo la programación hay
dos tipos de errores: Unos son los errores de sintaxis que es cuando
nosotros escribimos mal algo y el la intérprete de Python
no lo entiende. Y, por otro lado, tenemos errores
de ejecución que simplemente, cuando lo que estamos intentando
ejecutar por algún motivo, el intérprete no lo puede ejecutar
como por ejemplo una división entre cero, sumar
una... un texto con un número, abrir un archivo no existe, acceder
aun a un elemento de una lista que no existe.  Vamos a ver
unos cuantos ejemplos. Qué es lo que sucede cuando tenemos
un error de sintaxis.
Por ejemplo, aquí, la función print
que sirve para escribir cosas por pantalla, le hemos pasado "hola mundo"
pero no le hemos puesto el cierre de paréntesis. Entonces, cuando le
damos a run nos dice sintaxis error y final
de archivo no esperado. Aquí nos está, no está diciendo nada
malo. Simplemente nos está diciendo te has equivocado aquí,
arréglalo. Aquí cuando intentamos hacer... Esto está
muy común en programadores que... si copiáis código de
Python 2 porque en Python 2 esto no está permitido. Si hacemos
print y sin paréntesis escribimos "hola mundo"
nos dice que faltan los paréntesis.
15
Como veis lo que viene después del del error es bastante
verboso y nos indica bastante correctamente qué es lo que
queríamos hacer, veis. En cambio, en este de aquí
si os dais cuenta nos dice que el nombre print no está definido.  Es
porque aquí print lo he escrito con mayúscula y la función print
es en minúscula. Hay que tener cuidado con eso también. Aquí,
por ejemplo, la variable ha intentado poner cero
treinta y cuatro pero no podemos inicializar valores
numéricos enteros por cero. Entonces también nos queja.
Si aquí pongo una cadena y entre... y espacios con
números, realmente Python no va a saber qué operación queremos
hacer con esos valores, ve un un conjunto de valores  y en cuanto
 intentamos ejecutarlo nos dice y invalid sintax porque aquí
esperaría que hubiera algún corrector, alguna operación para
hacer eso. Por ejemplo, este otro que también es muy común
denuncia un error. Es un tipo específico de error
de sintaxis y es cuando tenemos dos funciones
que no están dentro de bloques distintos con un con una identación
distinta. En estos casos Pyhton es capaz de ejecutar esta línea
pero, cuando llego aquí, él espera que esta línea empiece
aquí al principio.  Como estamos tabulados esto va a dar un
error. Por otro lado, los errores de ejecución que comentado
estos son los más típicos: dividir entre cero da un error
de división by cero porque son números infinitos y no
está... no está pensado para hacer este tipo de operaciones,
concatenar cadenas con números
luego (...)  si os cuenta lo dice en el tipo de error.
Solamente se pueden concatenar cadenas, no números. Entonces, esto
es la forma de solucionarlo. Sería simplemente convertir este
número en cadena.
Veis, ya no daría el error. Intentar abrir el archivo este da error, pues como
no existe pues nos da un error de archivo no encontrado.  Cuando
intentemos escribir si no tenemos permisos nos dará otro tipo,
de error de no tienes permiso para escribir. Encontes con los archivos
hay muchos errores específicos de ejecución así como con
las bases de datos y con algunos tipos de conexiones y éste
en concreto lo veremos más específicamente cuando trabajemos
con las listas que es este tipo de datos si os dais cuenta
la vista va del uno al cuatro pero aquí intento acceder al
número seis. Como el seis no existe da un error
de que ese índice de la lista no existe porque
aquí faltan elementos para poder hacer esta asignación. Y
esto es todo.

Si quieres puedes descargar el texto de el Jupyter notebook utilizado. Para reproducir el proceso


paso a paso puedes hacer click con el botón derecho del ratón para descargar el Jupyter
notebook y ejecutarlo en local (recuerda usar "guardar enlace como" para guardarlo con
16
extensión .ipynb para abrirlo luego con Anaconda) o conectarte al Binder de la lección para
ejecutarlo en la nube.

Resolución de problemas del curso.


Video 21 Resolución de problemas del curso https://youtu.be/LF08CUx7tRc

Hola, en este vídeo vamos a ver un ejemplo de cómo resolver


los problemas que vamos a ir planteando en el curso.
Para los problemas del curso hemos usado una plataforma que
se llama binder para almacenar los problemas pero también
permitiremos que los descargueis en vuestro júpiter local o
en vuestro Python en local y los resolváis en local.
Vamos a ver un ejemplo. Esto es un ejemplo de un problema entonces
en este apartados os pondremos un ejemplo práctico para poder practicar
lo aprendido, entonces os daremos dos opciones. Este enlace
que os lanzará el ejemplo en binder para que lo resolváis
online sin instalaros nada o si habéis instalado Python podéis descargaros
el fichero con el contenido del problema. Las instrucciones
para realizar la tarea están dentro del mismo fichero o el
binder pero el fichero y lo primero que tenéis que hacer es
copiar y pegar el identificador de usuario de edX que aparece
a continuación. Este texto de aquí lo vamos a copiar, botón
derecho copiar o Control+C y cuando hayais terminado de realizar
la práctica y los acceso ejecución el sistema ejecuta una
función que calcula el código resultado y lo tendreis que
pegar aquí ¿Vale? Si le damos aquí al binder
vemos que esto abre una ventana que o carga tarda un poco dependiendo
de la cantidad de gente que esté trabajando al mismo tiempo
con el problema tarda más otras menos y cuando termina
de cargar voy a cerrarlo ahora para acelerar el vídeo. En este
caso nos mostrará normalmente un texto parecido al siguiente.
Antes de empezar primero reinicia el kernel aquí vendremos a
kernel, restart and clear all output, le damos aquí y esto reiniciará
todo el kernel limpiando posibles ejecuciones anteriores y
entonces ejecuta todas las celdas kernel
restart & run all
 y esto lo ejecutará todo ¿Vale?
Entonces asegúrate de rellenar cualquier lugar
donde aparezca your code here o your answer here esto lo cambiaremos
por tu código aquí o tu respuesta aquí y aquí donde ponemos
 ANONYMOUS_ID que pone student ahí es donde tendremos que
poner nuestro nombre de usuario lo que pregamos con Control V
nos vamos clic derecho pegar y ejecutamos esta celda
¿Vale? Tenemos un enunciado del problema que dice en este caso
escribe un código que cree tres variables, la variable a un valor tres,
la variable b con valor cinco y la variable c con el valor
17
resultante de a más be ¿Vale? Vuestro código tendrá que ir
en el espacio reservado en esta celda y aquí pone your code here
esto lo podemos borrar si queremos o podemos dejarlo, es independiente.
¿En nuestro problema que nos pide? Que tengamos una variable
a que valga tres una variable b valga cinco
y una variable c que valga siete. Ejecutamos esto
y ejecutamos que esta fila de aquí de ejecutar la celda siguiente
cuando hayan finalizado ejercicio para obtener tu clave de respuesta,
vemos que nos da un código de respuesta. Este código de respuesta
tener en cuenta que tener cuidado con esos dos iguales que
no se me habían copiado a mí, lo pegaremos en nuestra plataforma
edX y lo enviaríamos y en este caso me ha dado correcto.
En el caso de que sea correcto el problema aquí tendríamos
que poner a más b.
Ejecutamos esto nos da la misma cadena y aquí, por ejemplo
 la variable b valiera cuatro y ejecutáramos y volviéramos a ejecutar esto
vemos que nos da una cadena distinta y cuando hay un error
como en este caso en la variable b no vale cinco sino vale cuatro
muchas veces dependiendo del problema quitamos los interrogantes
que no nos ha cogido, nos dará alguna pista muchas veces no es
asignado los valores correctos a las variables a o b.
En este caso lo resolveríamos poniendo cinco en el caso de
los problemas que tengan solución como en este caso podremos
pinchar aquí y ver la solución aquí y simplemente podremos
seleccionar esto, copiarlo y pegarlo y tendríamos una respuesta
válida pero mucho ojo esto solamente sucederá en los problemas
que no puntúen en para la nota final del curso entonces podemos
ver la solución para ver como se ha hecho pero lo interesante es
que intentéis hacerlo vosotros antes de ver la solución.
En el caso de que lo descarguéis pues simplemente descargaríais
 un archivo zip que lo abriríais dentro de vuestro jupyter
y tendríais que abrir el archivo del problema
normalmente el archivo zip vendrá con una carpeta con dos
con dos archivos, uno del problema y otro que se llame
rassertions. Simplemente abrís el problema y lo ejecutáis
esto es todo respecto a la resolución de problemas en el curso.

A partir del minuto 2'57" hay un error, obviamente 3+5=8 no 7. Pero recordad que el
objetivo del vídeo es mostrar cómo funciona binder, y como debéis introducir los datos
en él.

Práctica 1.1. Hola Mundo (no evaluable)

En las prácticas del módulo aprenderemos a imprimir "Hola Mundo" y trabajaremos


con la creación de variables.
En este apartado os proponemos un ejemplo práctico para que podáis practicar lo
aprendido.
18
Este ejercicio es autoevaluable y no cuenta para la calificación del curso.
Hemos creado una instancia en la plataforma Binder, que permite crear y ejecutar de
forma remota código sin necesidad de crear un usuario. Podéis acceder al entorno de
desarrollo en Binder pinchando en el logo que aparece a continuación.

Si habéis instalado Python y queréis realizar la práctica en vuestro entorno local


también podéis hacerlo. Tenéis que descargar el siguiente fichero comprimido y
descomprimirlo en una carpeta de vuestro ordenador (si habéis instalado Anaconda
podréis abrirlo con Jupyter Notebooks en local).

fichero

Las instrucciones para realizar la tarea están en el mismo fichero de la práctica.

Práctica 1.2. Creación de variables

Resumen
En el módulo hemos reflexionado sobre las razones para aprender a programar y
definido qué es un programa informático, comentando las razones por las que hemos
elegido Python para aprender a programar. Luego hemos visto una serie de cuestiones
prácticas sobre las herramientas a utilizar en el curso, como la navegación por el
sistema de directorios, la instalación del entorno Anaconda, el uso del intérprete de
Python, qué son los Jupiter notebooks y cómo descargar el material del curso para
trabajar en local y cómo usar la interfaz de desarrollo Spyder, para acabar hablando de
la estructura de Python y de los tipos de errores que aparecen al programar.

MODULO 2: Variables y Expresiones


Bienvenidos al módulo dedicado a variables y expresiones.

El módulo incluye cuatro prácticas, un examen de prueba y un examen de módulo. Si


no has solicitado el certificado no podrás acceder al contenido evaluable, con lo que no
tendrás acceso a las prácticas evaluables ni al examen de módulo, aunque puedes
descargarte el fichero máster con todas las prácticas de la sección de recursos de la
página inicial del curso y realizarlas sin que sean evaluadas.

El tiempo estimado para completar este módulo son 4 horas y el tiempo de visionado
de los vídeos alrededor de 26 minutos.

En el módulo tratamos el concepto de variable y los distintos tipos de datos que


pueden utilizarse en Python, desde los sencillos como los números enteros a los más
complejos como los diccionarios o las tuplas. Veremos también las expresiones
matemáticas y su precedencia y las expresiones lógicas con sus operadores AND, OR
y NOT.

19
En las prácticas del módulo obtendremos el tipo de diversas variables, asignaremos
distintos tipos a los datos introducidos con el comando input, depuraremos expresiones
matemáticas y concatenaremos cadenas.

Las Variables
Video 14 Las variables https://youtu.be/xfTjY3qI6D0

Hola en este vídeo vamos a hablar sobre las variables en python.


Qué son, pues las variables son los contenedores donde almacenaremos los datos
que necesitamos para resolver un problema por ejemplo en este problema un tren sale
desde Madrid en dirección a valencia a las nueve y otro en dirección contraria a las
once si sabemos la distancia a recorrer son trescientos cincuenta kilómetros el primer
tren va a ciento kilómetros hora y el segundo va a trescientos kilómetros hora en que
punto se encontrarán como veis, he marcado en verde los datos que necesitaríamos
para resolver en papel este problema.
En el caso de paython pues como veis aquí me he puesto la salida del tren he puesto
nueve porque estoy asumiendo que son horas, la salida del tren b
he puesto un once, la velocidad del tren a un cien la del be son trescientos
porque estoy asumiendo las unidades y la distancia trescientos
cincuenta como las unidades son las mismas, no voy a tener
que hacer ningún tipo de conversión porque son horas y kilómetros
hora y kilómetros entonces sería muy fácil así resolver el problema.
Algunas reglas para poner nombres, deben empezar por letra o el símbolo de
subrayado no pueden empezar por números y sólo
pueden tener números letras y el símbolo de subrayado, eso
quiere decir
que por ejemplo la podemos llamar a la variable tren y poner el número
tres, poner un guión bajo tren el número tres con distintas
alturas de mayúscula asignada y minúsculas y poner un número
dos, estos ejecutamos no da ningún problema y tendríamos dentro
de estas tres variables los valores tres tres y 2, en cambio
si ponemos cero tren que empieza por cero y lo ejecutamos nos va
a dar un error de sintaxis que hemos visto en el vídeo anterior
y esto es porque la variable empezaba por cero.
Como he dicho pueden tener números dentro de los nombres, podemos poner
tren cero pero no podemos tener poner cero tren, luego además
caracteres especiales como el dólar, el euro, el cualquier carácter
que no sea los alfanuméricos normales y el símbolo de subrayado
van a dar error también, como podemos ver aquí.
Qué nombre le ponemos pues intentamos poner nombres indicativos como
por ejemplo un pez martillo se llama pez martillo porque es
un pez que parece un martillo, en el caso de nuestros programas
si nosotros por ejemplo al, a las variables de antes que he
puesto salida del tren a, salida del tren b, velocidad del tren a, velocidad
tren b y distancia, en lugar de esos nombres pongo estos mucho
más cortos, sa, sb, va, vb y d en un principio
seguramente pensaremos si lo hago así yo luego voy a resolver
20
mucho más rápido porque tengo escribir menos pero existe
un problema y es que si coge nuestro programa un anglosajón
a lo mejor que sa piensa que es la velocidad speed del tren a,
es muy difícil identificar para que estamos usando cada una
de las variables y nos costará más en adelante entender nuestro programa.
Python es sensible a las diferencias de altura, en inglés se dice
que es case sensitive y realmente es que el diferencia entre
mayúsculas y minúsculas, como habéis visto aquí arriba
he declarado la variable tren esta igual a tres y esta variable
tren que la t y la e, están en mayúsculas igual a dos.
Si miramos lo que hay dentro de cada una
aquí hay un tres y aquí hay un dos, se llaman igual, pero las mayúsculas
la diferencia, es verdad que python las diferencia, pero nosotros
seguramente no e intentar evitar usar estas diferencias de
mayúsculas y minúsculas para diferenciar variables porque
luego nos complicarán la vida más adelante.
Como ya he comentado en otros vídeos para hacer asignaciones
usaremos el símbolo igual entonces pondremos el nombre de
la variable el símbolo igual y el valor que queremos guardar.
Aquí vemos como tanto un número, como un texto, como un valor
lógico lo que haremos es el nombre de la variable que queremos
poner si os dais cuenta he puesto el nombre del número para guardar
un número, el nombre texto para guardar un texto el nombre
lógico para guardar un valor lógico, así podríamos almacenar
los distintos valores dentro de nuestras variables y con esto
hemos terminado este vídeo.

Si quieres puedes descargar el texto de el Jupyter notebook utilizado. Para reproducir el proceso


paso a paso puedes hacer click con el botón derecho del ratón para descargar el Jupyter
notebook y ejecutarlo en local (recuerda usar "guardar enlace como" para guardarlo con
extensión .ipynb para abrirlo luego con Anaconda) o conectarte al Binder de la lección para
ejecutarlo en la nube.

Tipos de Datos I
Video 15 Tipo de Datos I https://youtu.be/ilyic4oJcmc

Hola en este vídeo vamos a hablar sobre los tipos de datos


en Python y cómo funciona. Python tiene lo que
se dice un tipado dinámico, esto quiere decir que una variable
como por ejemplo esta variable mi variable puede
contener en este momento un número. Asignamos un tres como
como en el símbolo igual que vimos en los vídeos anteriores y
en el siguiente... en la siguiente línea como veis le asigno
un texto. Esta variable ahora lo que tiene es el texto "Hola"
o le podemos asignar un número complejo y la variable ha ido
21
cambiando el contenido que tenía según lo que le hayamos
ido asignando. Esto es lo que quiere decir el tipado dinámico
que habla mucho en Python. Pero por otro lado es fuertemente tipado,
esto quiere decir que, por ejemplo, esta tenemos una variable de
tipo número, un treinta y tres y una variable de tipo cadena. Hola,
cuando yo ejecuto esto y intento hacer número más dos,
vemos que nos da un treinta y cinco. Si intento hacer el cadena
más mundo nos dice hola mundo. Pero si intento hacer cadena más
número Python nos da un error que solamente puede concatenar
con num con cadenas no con números. En el caso de otros lenguajes
de programación el propio lenguaje automáticamente intentaría
hacer una conversión de los de de la cadena o del número
para hacer la operación de suma. En el caso de Python no, si
un num si tenemos un número las operaciones que vamos
a hacer son con números, si tenemos una cadena son cadenas.
Todas aquellas operaciones que sean válidas entre cadenas
y números van a funcionar. Por ejemplo si podemos podemos poner
un multiplicar y esto sí que funcionaría veis.
Pero además es una operación que solamente se puede hacer
entre cadenas o entre números no mezclando y como es fuertemente
tipado no hace la conversión automática.
Eh tenemos unos cuantos tipos de datos básicos
en el caso de los numéricos tenemos tres que son los enteros
tanto int como long, los reales que son o flo o float
y los complejos que son aquellos números que tienen parte
real y parte imaginaria. Veamos un ejemplo
en caso de los tipos de datos numéricos como veis los enteros
se declaran simplemente asignando un valor entero.
Los enteros largos o long es añadiendo una ele al final y esto
lo que hace es al almacena darle más espacio
de almacenamiento y poder almacenar valores mayores. Los reales
son aquellos que tienen números decimales, podemos
deberemos poner un punto y después el valor decimal. En el
caso de que no queramos tener ningún valor entero
y solamente el valor decimal podemos hacer así y quitar la parte
entera y esto ya es un número real que sería cero coma tres.
O podemos también poner el cero. La nos... Python nos permite
las dos nomenclaturas. El caso de los números complejos o complex
son como esto que tienes una parte real más una parte imaginaria
y no sabéis exactamente lo que es, seguramente no lo vais a necesitar
y no debería preocuparos. En el caso de que estéis haciendo
algo de matemáticas o sí que sepáis lo que son los números
complejos, pues que sepáis que se representan de esta manera.
Por otro lado están los tipos de datos lógicos.
En el caso de los tipos de datos lógicos son aquellos que
almacenan verdadero o falso. Usan lo que se llama
álgebra de boole y veremos más adelante cómo operar con ellos
22
para cambiar el valor de verdadero falso o hacer operaciones entre ellos.
Además tenemos tipos de datos secuenciales como son las cadenas
las listas y las tuplas. Las cadenas que son las cadenas de texto
hemos visto en muchos videos anteriores empiezan por comillas
y acaban por comillas. Pueden empezar por comillas dobles o comillas
simples, por lo tanto esta cadena que queremos ver el contenido.
Ponemos la caracola, lo ponemos con comillas simples.
El resultado es exactamente el mismo. El uso de las comillas
simples y dobles se usan muchas veces para poner cosas dentro
de las cadenas que también deberían de llevar comillas.
Una lista es una lista de objetos separada por
comas y empiezan por corchete y acaban por corchete.
En el caso de las listas, esta es una lista de de cadenas de
texto y si vemos lo que tienen en su interior
vemos que tenemos: pera manzana y piña. Podríamos acceder a
cualquier elemento de la vista simplemente con lista
y el y entre corchetes el número de del índice que queremos
acceder y en este caso tendríamos la pera. Las listas empiezan
por elemento, el índice cero. Entonces la pera es el cero, la manzana
es el uno y la piña es el dos. Hay más funciones que podemos
hacer con las listas, las tenemos más adelante.
Las tuplas es un tipo especial de lista que es
inmutable, veremos de qué se trata esto más adelante pero
simplemente saber que cuando las definimos una tupla es igual
que la lista pero entre paréntesis. Una aclaración entre las listas
y las tuplas es que pueden ser heterogéneas igual que aquí
tengo pera, mazana y piña puedo hacer una lista y aquí poner
un tres y aquí poner
un tres coma cinco,
ejecutó esto... y ahora miro lo que hay dentro de la lista.
No hace falta que todos los elementos de la lista sean del
tipo del mismo tipo. El último tipo de datos sencillo
es los diccionarios. Los diccionarios muchos de vosotros lo
conoceréis como JSON y simplemente es un o mapa, es
un conjunto de claves y y valores. En este caso tengo este diccionario
donde tengo la clave nombre con mi nombre y la clave apellido
con mis apellidos. Yo ejecuto esto, luego accedo al diccionario
Veo que tiene lo que lo que no hemos puesto exactamente, pero yo
puedo acceder luego a cada uno de los elementos de diccionario
por la clave, por ejemplo, diccionario nombre
Devolverá, Leonardo, es lo que hemos puesto. Y esto es todo.

Si quieres puedes descargar el texto de el Jupyter notebook utilizado. Para reproducir el proceso


paso a paso puedes hacer click con el botón derecho del ratón para descargar el Jupyter
notebook y ejecutarlo en local (recuerda usar "guardar enlace como" para guardarlo con
extensión .ipynb para abrirlo luego con Anaconda) o conectarte al Binder de la lección para
ejecutarlo en la nube.
23
--------------------------------------------------------------------------------------------------------------

Según el vídeo, entre los minutos 2'20" y 2'24", se declaran dos tipos de enteros. Esto se debe a
que en el vídeo se emplea Python 2, existen dos tipos de enteros (int para números "pequeños" y
long para números "grandes"). Sin embargo, en Python 3, se han unificado bajo el mismo tipo int,
pudiendo almacenar números con una longitud ilimitada, bajo el mismo tipo.

Hilo del foro

Tipos de Datos II
Video 16 Tipo de Datos II https://youtu.be/WObUmGBUb1g
Hola en este vídeo vamos a seguir hablando de los tipos de
datos, en concreto algunas funciones que nos sirven para diferenciar
identificar los tipos de datos. La primera de ellas que vamos
a ver es la función type, la función type como aquí tengo
lanzando la función type y dentro un valor, nos va a decir
el tipo de datos al que corresponde, como veis aquí nos dice
int, aquí nos dice float, que significa real, aquí nos va a decir
complex, esto es una cadena que es str
esto es una lista,
una tuple o un diccionario, es tan sencillo como type el valor
o variable que queramos saber el tipo de datos que alberga,
y nos dirá el tipo de datos que tiene, es muy útil cuando
queremos hacer una serie de operaciones y no sabemos que es lo
que nos está llegando, lanzamos type vemos que es lo que hay y a partir
de ahí podemos empezar a trabajar. Otra función muy útil
es help, la función help aquí tenemos algunos ejemplos
dado un tipo de datos o una variable, si la ponemos con la función
help, help y entre paréntesis el tipo de datos o variable por
ejemplo aquí help de int, veis que nos lanza un texto bastante
largo y es una ayuda respecto al tipo de datos int, aquí nos
dice una explicación del tipo de datos int, que te dice que sirve
para guardar enteros, convierte un número a cadena, porque si
tu le pasas int y un y un texto intentará convertir el contenido
del texto a un entero y una serie de métodos que vienen acompañando
a la función, a la función o al objeto int,
lo mismo para las cadenas y para los diccionarios, simplemente
help y entre paréntesis aquello que tengamos dudas de cómo
funciona y muchas veces con la ayuda que vienen python
no necesitaremos buscar en internet cómo hacer las cosas porque
el propio python ya nos dice que es lo que podemos hacer con
ello, aquí como por ejemplo con los int veis aquí tenemos
el denominador y el imaginario para el caso de que tengamos
un número complejo, el numerador en el caso de la parte racional
24
y la parte cumple real de un número complejo, esto
es para la parte, los números reales, podemos hacer distintas
cosas y nos lo va a ir diciendo aquí. Otra función muy útil
la función de dir que es muy parecida a la de help pero solamente
nos va a listar aquella funcionalidad y aquellas
objetos que pertenecen a nuestro tipo de datos o nuestra variable,
por ejemplo, en el caso de hacer un dir de int si os
dais cuenta nos saca todas las atributos y funciones
que dependen de la función int pero si por ejemplo
yo creo una lista,
de números
y hago un dir de la lista
veis nos dice las funcionalidades que tiene la propia lista,
no hace falta que sea, que le pasemos un diccionario o una lista
el tipo de datos que queremos saber el dir, le podemos pasar
directamente la variable y nos va a devolver toda la funcionalidad
que podemos lanzar a partir de esa variable.
Por último vamos a ver funciones de conversión, estas funciones
de conversión nos sirven para convertir de un tipo de datos
a otro, siempre y cuando se cumplan una serie de condiciones.
El tenemos, un número del texto del trescientos
cuarenta y cinco y si nosotros intentamos al trescientos cuarenta
y cinco que es un texto, con más de tres vemos que nos va a dar
un error, porque como hemos visto en otros vídeos no podemos
sumar cadenas y números, en cambio si usamos la función de
conversión float, la tenemos instalada aquí la segunda float,
con la con el número en texto, la variable que teníamos el
trescientos cuarenta y cinco en formato de cadena, antes de
hacer la suma vemos que nos da trescientos cuarenta y ocho
coma cero, esto es porque esta función ha convertido este trescientos
cuarenta y cinco en trescientos cuarenta y cinco
coma cero porque lo hemos puesto float, si en lugar de float usáramos int,
sería trescientos cuarenta y ocho, porque nos pondría parte decimal
Por último veremos una función que usaremos mucho durante
el curso que se input, esta función input nosotros le pondremos
un texto que queremos que vea el usuario y le asignaremos una
variable, en el caso de en este caso en concreto, cuando yo ejecuto
esta línea vemos que nos sale un texto, dice dime tu edad
y una caja de texto, y aquí yo puedo poner un cinco, no es verdad
entonces dentro de edad del usuario aquí añado otro trozo de
texto y escribo edad del usuario vemos que lo que hay dentro
tenemos un cinco, no os habéis dado cuenta de que hay comillas
al principio y al final, si hacemos un type de la variable nos
dice que es una cadena, pero tendremos que tener cuidado con esto
porque la función input siempre va a recoger el texto o el
número que nos ponga el usuario en formato de cadena, si queremos
trabajar con números tendremos usar estas funciones de conversión
25
que acabamos de ver para tener el tipo de datos que nosotros
queramos, y esto es todo.

Si quieres puedes descargar el texto de el Jupyter notebook utilizado. Para reproducir el proceso


paso a paso puedes hacer click con el botón derecho del ratón para descargar el Jupyter
notebook y ejecutarlo en local (recuerda usar "guardar enlace como" para guardarlo con
extensión .ipynb para abrirlo luego con Anaconda) o conectarte al Binder de la lección para
ejecutarlo en la nube.

Expresiones I
Video 17 Expresiones I https://youtu.be/cvn0xH4F9mI

Hola en este vídeo vamos a hablar sobre las expresiones, operaciones


que podemos hacer dentro de python. Las principales operaciones
que haremos son de tipo aritmético como vamos a ver en estos ejemplos
de aquí, por ejemplo, podemos hacer una suma de dos elementos,
tres más dos, nos devuelve un cinco podemos restar,
podemos multiplicar, hacer una división si os dais cuenta aquí
los dos valores son enteros, pero nos devuelve es uno coma cinco,
en el caso de python dos, si alguno de vosotros trabajará con
python dos aunque no debería a estas alturas esto devolvería
un 1, la división de python dos cuando eran dos números
enteros devolvía un entero redondeando hacia abajo, en el caso
de python tres, es la división si tiene que devolver
números decimales, devolverá, hará una conversión a float
o a real y nos devolverá parte decimal.
Esta operación que es el módulo, es en el caso de hacer una división
por ejemplo, tres entre dos, si hiciéramos la división entera
sería uno y nos sobraría medio, ese medio por dos es uno el
resto de la división, cuando lo hacíamos a mano.
Esta es la potencia que es al cuadrado, que es nueve y además
ahí podemos hacer cambios de signo añadiendo com, añadiéndole el el
símbolo menos o el el más precediendo un número no hará
nada porque es sería un añadirle un símbolo
más, un símbolo positivo, pero si tenéis que tener en cuenta
de que esta operación está disponible. Bien, una de las cosas
importantes con esto es la precedencia, la presencia es similar
en matemáticas y es totalmente el orden contrario al que le
ha ido contando yo aquí, quiere decir que los cambios de
 signo tiene más precedencia, las potencias lo siguiente, luego van
los módulos y las divisiones y las multiplicaciones y por
último las sumas y las restas, entoces si nosotros hacemos tres por
dos más uno, nos da siete porque python hace un tres por dos
y a esto le suma uno, en el caso en el que aquí dividiríamos
entre cuatro
26
nos da, nos devuelve uno coma cinco porque hace tres por dos
seis y eso lo divide entre cuatro, en el caso de que sea igual
de precedencia como pasa con la multiplicación y la división
va a ir de izquierdas a derechas, aquí por ejemplo si hacemos,
o queremos hacer la potencia de tres al cubo no podemos hacerlo
así porque esto hará la potencia de tres al cuadrado y le sumará
uno, entonces esto nos dará diez y para hacer lo que queríamos
hacer, tendríamos que poner entre paréntesis igual que pasa
con matemáticas, los paréntesis rompen la precedencia y hace
grupos de operación. Hay que tener cuidado porque estas operaciones
no modifican el valor de las variables, esto quiere
decir que si nosotros tenemos aquí la variable a le asignamos un
tres y a la variable b le asignamos un dos y luego hacemos a más
b y ejecutamos esto en júpiter veremos un cinco en pantalla
y si hiciéramos un print para ver este dato,
nos devolvería también un cinco, pero ese cinco no está almacenado
en ningún sitio, si queremos más adelante operar con ese cinco
tendríamos que asignar el resultado de esa operación a otra
variable, como por ejemplo aquí, la variable g es igual a a+b
 entonces ahora si dentro de c
tenemos un cinco.
Los operadores con cadenas más comunes son tanto la concatenación
de cadenas que se hace con el símbolo +,
la multiplicación que es con el por como hemos dicho muchos
vídeos el, no podemos concatenar una cadena con un número,
esto nos dará un error, además en python tres, tenemos un tipo
de cadenas especiales que son los fstring que es, cuando
una cadena la empezamos por f y dentro de la cadena podemos poner
texto y entre llaves poner el el valor de una variable, por
ejemplo la variable c que tenía un cinco
podemos poner un texto que nos dijera la variable ce vale dos punto
y lo que tenga la variable c, esto lo ejecutamos
vemos que dice la variable c vale cinco, aquí ha hecho una
conversión del contenido de la variable al estar dentro de
las llaves a cadena para poderlo concatenar, esto es muy cómodo
cuando queremos formatear texto en lugar de estar haciendo
concatenaciones de estas podemos simplemente hacer esto y poner
las variables así entre corchetes, y esto es todo en este vídeo.

Si quieres puedes descargar el texto de el Jupyter notebook utilizado. Para reproducir el proceso


paso a paso puedes hacer click con el botón derecho del ratón para descargar el Jupyter
notebook y ejecutarlo en local (recuerda usar "guardar enlace como" para guardarlo con
extensión .ipynb para abrirlo luego con Anaconda) o conectarte al Binder de la lección para
ejecutarlo en la nube.

27
Expresiones II (Video 18)
Video 18 Expresiones II https://youtu.be/_uDM1rGR6-4

Hola este es el segundo vídeo sobre expresiones. En este vídeo vamos a hablar sobre
las operaciones lógicas o expresiones lógicas. Las expresiones lógicas que vienen del
álgebra de boole nos sirven para hacer operaciones con distintos elementos por
ejemplo si el dentro de la variable tres guardamos un tres, y dentro la variable cinco
guardamos un cinco, una de las cosas que podemos hacer es usar comparadores digo
tres es mayor que cinco, nos va a decir false porque es una expresión lógica que nos
dice que tres como en este caso no es mayor que cinco nos devuelve false, si en lugar
de mayor hago mayor o igual también nos dice que no es mayor o igual que cinco se
cumpliría true si tres y cinco tuvieran el mismo valor o tres fuera mayor.
Al contrario si le digo que tres, si le pregunto si tres es
menor que cinco me dice true, esto sí que es verdad
lo mismo pasa con tres es menor o igual que cinco.
Aquí hay un un comparador de igualdad que es con dos
iguales no con uno y no y es importante no confundirlo porque
con un solo igual haríamos una asignación de lo que tengamos
en la variable cinco dentro del tres y con dos lo estamos comparando
entonces aquí tres igual igual a cinco hace false en cambio
tres igual a cinco lo que hace es, como vemos aquí,
yo miro lo que hay dentro de tres,
ya no hay un tres ahora hay un cinco aquí hay que tener mucho
cuidado. Luego hay otro comparador que es el "is" que sirve para
comparar si estamos apuntando al mismo objeto, esto es un poco
es como el igual igual que estamos viendo hace
un momento pero más fuerte, entonces por ejemplo si preguntamos
si a es lo mismo que a por dos en este caso nos va a devolver
true porque esto es una cadena que pone aa y esto es otra cadena que
es a por dos que están en memoria y están libres y no,
no están en ningún sitio, en cambio y pongo aquí la letra a
igual a a y pregunto si a es igual que la letra a por dos,
como esta no es la misma que esta esto nos debería dar false
aquí tenemos el false está el resultado si bien aparentemente es el mismo
a parece ser lo mismo que a pero realmente por
detrás python los distingue porque no están apuntando al
mismo sitio y esto nos servirá para diferenciar pues eso cuando
los objetos sean casi lo mismo, valgan el mismo lo mismo pero
no sean el mismo objeto. Otros conectores lógicos aquí me
ha añadido la variable verdadero igual a true y la variable
falso igual a false para hacer esta pruebas y que sea más
sencillo de entender en español entonces los conectores lógicos
son el y el o y el no. El y que se escriben inglés and
sirve, dirá true cuando los dos lados del
conector sean verdaderos entonces en este caso verdadero
y falso como los dos no son verdaderos nos va a dar false.
Solamente dará verdadero en el caso de verdadero y verdadero
28
el resto de casos verdadero y falso o falso y verdadero nos
van a devolver falso, luego tenemos el or o o
que nos devolverá verdadero siempre y cuando uno de los dos
lados del conector sea verdadero por ejemplo verdadero o falso
nos va a dar verdadero porque tenemos un verdadero aquí
y lo cambiamos de orden
falso o verdadero
también nos devuelve verdadero pero en cambio falso o falso
nos devuelve falso porque como ninguno de los dos es verdadero
falso falso, es falso y por último tenemos el not que lo que hace
es cambiar lo que pongan aquí no verdadero pues es falso no falso es verdadero.
Esto sería todo sobre las expresiones lógicas en Python.

Si quieres puedes descargar el texto de el Jupyter notebook utilizado. Para reproducir el proceso


paso a paso puedes hacer click con el botón derecho del ratón para descargar el Jupyter
notebook y ejecutarlo en local (recuerda usar "guardar enlace como" para guardarlo con
extensión .ipynb para abrirlo luego con Anaconda) o conectarte al Binder de la lección para
ejecutarlo en la nube.

Práctica 2.1 Obtener el tipo de variables


Práctica 2.2. Asignar tipo a variable de input
Práctica 2.3. Insertar paréntesis en operaciones matemáticas
Práctica 2.4. Concatenar cadenas

Resumen
En el módulo hemos visto el concepto de variable y los distintos tipos de datos que
pueden utilizarse en Python, desde los sencillos como los números enteros a los más
complejos como los diccionarios o las tuplas. Hemos visto también las expresiones
matemáticas y su precedencia y las expresiones lógicas con sus operadores AND, OR
y NOT.

Módulo 3 - Conceptos básicos de programación con Python


Introducción
Bienvenidos al módulo de conceptos básicos de programación.

El módulo incluye dos prácticas, un examen de prueba y un examen de módulo. Si no


has solicitado el certificado no podrás acceder al contenido evaluable, con lo que no
tendrás acceso a las prácticas evaluables ni al examen de módulo, aunque puedes
descargarte el fichero máster con todas las prácticas de la sección de recursos de la
página inicial del curso y realizarlas sin que sean evaluadas.

El tiempo estimado para completar este módulo son 4 horas y el tiempo de visionado
de los vídeos alrededor de 42 minutos.

29
En el módulo introduciremos el concepto de flujo de ejecución y los distintos tipos que
existen, empezando con el más simple, el flujo secuencial. Explicaremos luego como
utilizar decisiones en Python, y cómo permite desviar el flujo del programa, para
acabar tratando los flujos iterativos, donde introduciremos los bucles for y while. Luego
comentamos dos comandos básicos, print() para mostrar resultados e input() para
introducir parámetros. Veremos también las cómo se usa el indentado del código para
agrupar las instrucciones y cómo incluir en el código mecanismos para tratar los
posibles errores de ejecución que puedan producirse.

En las prácticas del módulo trabajaremos la utilización del comando input para asignar
valores a variables y aprenderemos a encontrar el mayor de dos número introducidos.

Flujos de programación.
Video 19 Flujo de Programación I https://youtu.be/v3-HdZyZrFs

Hola en este vídeo vamos a hablar sobre los flujos de programación.


Como hemos visto en, en otros vídeos python va, hay
recorriendo nuestras cadenas de programa de forma secuencial,
una detrás de otra y esa es el flujo de programación secuencial
o más habitual que va a tener nuestros programas, pero hay otro
flujo de programación que es el condicional y es cuando le damos
una bifurcación y le damos una opción para ir por un lado o por
otro, en este caso vamos a ver unos ejemplos de los flujos de
programación condicional más comunes.
Y aquí tengo un pequeño diagrama de un un flujo de condicional
el propio, el típico if, aquí asignamos una variable, la variable
a le ponemos un valor y con un con una condición le preguntamos
si ese valor es verdadero o falso, si ese valor es verdadero
entrará dentro del bloque condicional e if y ejecutará lo que
hayamos puesto aquí, en el caso contrario
saltará todo este bloque condicional y se irá al a lo que
haya después de, del if,
aquí tenemos como se escribiría en python
como hemos visto la variable a la asignamos atrium y tenemos aquí
si se cumple lo que hay aquí dentro, en este caso se va a cumplir
porque tenemos un true, escribimos
el valor de a, y sino, escribiremos bueno y después escribiremos
siguiente instrucción, vale, si ejecutamos esto vemos que dice true
y siguiente instrucción, aquí pongo un false,
vemos que como esto no se cumple porque dentro de a hay un false,
cuando esta parte no se ejecutará y directamente ejecutará
siguiente instrucción, es importante tener en cuenta de que
aquí lo normal es poner cuatro espacios para meternos dentro
30
del bloque condicional, pues si aquí dentro
a esta mismo nivel yo escribiera otro print
dentro del bloque y aquí volvíeramos a poner un true,
cuando yo ejecuto esto escribe el true luego dentro del bloque y luego
sale fuera y ejecuta esta instrucción, además allí aparte de
poner true false podemos poner los comparadores que vimos anteriormente
o cualquier cosa devuelva un valor lógico, por ejemplo, podemos
devolver cinco es mayor que tres y como en este caso es true
ejecuta entero, pero sí lo podemos del revés cinco es menor que tres
vemos que como cinco no es menor que tres estas dos líneas
no las ejecuta y ejecuta directamente lo que hay después,
otra opción de bifurcación, en este caso es que le demos dos
opciones, ahora mismo le hemos dicho si se cumple una condición
hace esto y en el caso contrario no hagas nada simplemente
salta al siguiente trozo del programa, aquí le vamos a dar una
alternativa, si esto se cumple hace esto y si no hace esto otro,
es una bifurcación real del camino y cuando termine una o
la otra, sigues con el programa esto se hará así
igual que antes en el ejemplo tenemos una variable a que la hemos
puesto a true para entrar dentro de la parte de verdadero,
si se cumple hacemos este bloque de, de operaciones y si no
se cumple, else haremos lo que hayamos puesto después del else
y y siguiente instrucción, que se ejecutará al finalizar este
bloque de aquí, entonces ejecutamos ahora mismo veis que hace
este print de true y este no, no lo hace si aquí ponemos un false
escribe no, que es lo que hemos puesto aquí y siguiente instrucción
igual que antes puedo hacer cinco mayor que tres aquí,
entonces cómo se cumple escribirá lo que hayamos puesto en
a, que es false, veis aquí en a tenemos un false miramos lo
que hay en cinco tres, escribe el fase, se salta esto porque
esto no se, esto sí que se ha cumplido y escribe esto de aquí.
Otra opción es al, al else, al sino añadir otra
condición, que es, se hace con el if, en este caso es a es igual
a tres, que es una asignación, entonces le preguntamos,
si la a es igual a cuatro, haz esto de aquí, si no podemos
preguntarle otra cosa, la a es mayor que dos, si se cumple haz
esto y sino sáltatelo todo, vale entonces aquí
vemos la a igual a tres, le preguntamos si la a es igual
a cuatro, si se cumpliera entraríamos aquí y sino pregun, volvemos
a preguntar, no es esto pero, la a es mayor que dos, si se cumple
que es distinto de cuatro y mayor que dos entonces escribirá
esto y al finalizar escribirá esto de aquí, si después de esto
quisiéramos tener una condición adicional, sin podríamos
escribir else
y esto se escribirá en el resto de casos, como he escrito aquí,
entonces ejecuto esto y como la a no es cuatro pero si es mayor
que que dos, lo que hace es escribirnos esto, grt2 y siguiente
31
instrucción que es lo que hay después del del bloque, si le ponemos un cuatro
es que escribe el cuatro y luego siguiente instrucción pero
en el resto de casos, por ejemplo un ocho,
un ocho no porque un ocho entra aquí, pero con un uno o con cualquier
número negativo veis que dice el resto de casos porque la a no
es mayor que dos y no es igual a cuatro
y esto es todo respecto a los bloques de los flujos de instrucción condicional.

Si quieres puedes descargar el texto de el Jupyter notebook utilizado. Para reproducir el proceso


paso a paso puedes hacer click con el botón derecho del ratón para descargar el Jupyter
notebook y ejecutarlo en local (recuerda usar "guardar enlace como" para guardarlo con
extensión .ipynb para abrirlo luego con Anaconda) o conectarte al Binder de la lección para
ejecutarlo en la nube.

Flujos de programación II.


Video 20 Flujo de Programación II https://youtu.be/39PIYH0v2FQ
Hola este es el segundo vídeo sobre flujos de programación.Aparte del flujo de
programación secuencial en el que las operaciones van una detrás de otra también
tenemos el flujo iterativo, en el flujo iterativo repetiremos una serie de operaciones las
veces que haga falta dentro de un bucle, la forma correcta de hacer un bucle con un
flujo iterativo es una inicialización de las variables, luego tendremos en nuestro bucle y
luego en la finalización, con el resultado del bucle, haremos lo que tengamos que
hacer o a veces en la finalización no haremos nada, pero tenemos que tener claras
estas tres partes porque nos facilitaran luego la forma de estructurar nuestros flujos
iterativos. Vamos a ver unos cuantos ejemplos de los flujos iterativos en python, el
primero que vamos a ver, que es el más sencillo, que es el while, aquí tenemos un
ejemplo, la variable a le asignamos un diez y en el cual le preguntamos si la a es igual
a cero, mientras la a sea distinto de cero haremos algo, que en este caso es escribir el
valor de a y restarle uno a esa variable a y en el momento en el que esa variable a
valga cero, nos saltaremos de aquí y iremos al final, a la siguiente instrucción después
del bloque flujo, entonces aquí como podemos ver, esto es cómo se haría, y cuando lo
ejecutamos va a ir del diez al cero pero si os dais cuenta el cero como he puesto un
mayor que cero no entra, por qué, tenemos la igual a igual diez, entonces aquí python
pregunta la a es mayor que cero, como la a es mayor que cero ejecutará esta
instrucción, nos escribirá el diez, ejecutrará esta instrucción, le restará a la a un uno,
aquí la a pasará a valer nueve y en el lugar de salirse a la siguiente instrucción vuelve
al principio, aquí qué tendríamos un nueve, vuelve a preguntar y como sigue valiendo
más que cero vuelve a escribir, vuelve a restar, así una vez tras otra hasta que la a
deja de ser mayor que cero, en el momento que la a deja de ser mayor que cero que
es cuando vale cero, se salta diréctamente todo esto y va fuera del bloque y escribe
siguiente instrucción, por eso escribimos del diez al uno pero no escribiremos el cero,
vale, otro bloque iterativo es el bloque for entonces el bloque for en python sirve para
recorrer cada elemento de un conjunto, normalmente se usa para cadenas o para
listas para hacer algo con todos los elementos de la cadena en la lista, aquí tenemos
un ejemplo en el que la variable a le asigno la cadena patatas y entonces para cada
letra dentro de patatas voy a ir saltando la siguiente letra y mientras queden letras voy
32
a escribirla, en el momento en el que no queden letras me salgo fuera vale, mucho
más sencillo si lo vemos aquí en el ejemplo, veis hemos escrito patatas y entonces
para cada letra dentro de la palabra que es patatas vamos a ir escribiendo las letras y
veis que escribe la pe, luego la a, luego la te y cuando ha terminado de escribir todas
las letras, escribe siguiente instrucción.

33
Mucha gente que viene de otros lenguajes, lenguajes de programación le cuesta el
trabajar para cada elemento de una lista porque está acostumbrado a trabajar con
rangos, lo que Python llama rangos, por ejemplo del uno al diez, del uno al cinco si
queréis usar los for como se trabaja con c++ con java script deberemos usar la función
range, la función range le damos un número y os dais cuenta aquí dice que es un
rango
del cero al cinco, si esto lo convertimos en lista con el conversor veis que hace cero
uno dos tres y cuatro, lo mismo pasa con el range del dos al siete, que convertido en
lista es dos tres cuatro cinco y seis, entonces otra forma de recorrer esto es para la
variable a patatas decirle para cada índice dentro del rango de cero a la longitud de
patatas, describiremos la letra que hay dentro de ese índice, vale, esto lo ejecutamos,
esto lo que hace es, vamos a ir por partes, en a tenemos patatas, la función length de
a, que con la función help podríamos descubrir nos dice la cantidad de letras que tiene
patatas, vale, hacemos un range de cero a length de a, es esto que si lo listamos para
poder ver lo que vale es los valores del cero al seis, entonces esto lo que está
haciendo es para un, los números que hay dentro de esta lista del cero, el uno, dos,
tres, cuatro, cinco y seis va a escribir, a ir escribiendo print el valor que haya en ese
índice, entonces si nosotros miramos lo que hay en a de cero ahí la p y así esto va a ir
incrementando el número cero, uno, dos y así poco a poco y escribiremos la palabra,
es otra forma de hacer este bucle for que tenemos aquí arriba, que en el caso de
algunos lenguajes de programación
es lo más normal, en el caso de python si queremos trabajar con índices se hace así.
Una palabra especial que tiene python en los bucles es break y es que cuando
llegamos, ejecutamos esa instrucción en la que pone el break se sale del bucle
completamente, aquí tenemos esta iteración, entonces lo que tenemos aquí, aquí
estamos ya combinando muchas cosas, tenemos el bucle for con patatas para cada
letra de patatas escríbeme la letra pero aquí tengo un condicional de si la letra es una
t, break, esto lo que hace es va escribiendo hasta que llega la t y entonces
una vez llega a la te se sale completamente del bloque este y escribe
la siguiente instrucción, por otro lado muy parecido al break
pero no tan, no salta todo el bloque
sino que lo que hace es saltarse esa iteración tenemos el
continue, continue lo que hace es salta al principio del bloque
for o bloque while sin ejecutar lo que viene después, aquí
por ejemplo, como veis no ha escrito las as esto es porque tenemos
que si la letra es una a, hace un continue esto se salta esta
instrucción de aquí, que es la que está escribiendo las letras,
 y vuelve aquí al principio, y al final del bloque escribimos
siguiente instrucción. Por último avisaros que
hay que tener cuidado con los bloques infinitos, en el caso
del while si tenemos una condición que siempre se cumple
que es true pues se rompería el programa y se quedaría colgado
dentro de ese bucle en este caso gritando socorro,
y esto es todo.

34
En el vídeo, en el minuto 0'47" hay un error en el diagrama. Deberíamos comprobar si a>0 o, en el caso de
comprobar si a=0 los caminos indicados deberían ir al revés.

Si quieres puedes descargar el texto de el Jupyter notebook utilizado. Para reproducir el proceso


paso a paso puedes hacer click con el botón derecho del ratón para descargar el Jupyter
notebook y ejecutarlo en local (recuerda usar "guardar enlace como" para guardarlo con
extensión .ipynb para abrirlo luego con Anaconda) o conectarte al Binder de la lección para
ejecutarlo en la nube.

Los comandos print e input (Video 22)


Video 22 Los comandos print e input https://youtu.be/1Mv6YKyOobU
Hola. En este vídeo vamos a hablar sobre los comandos print yinput. Y qué mejor que
ver... para verlo que un ejemplo. El comando print diferencia, vamos a primero
diferenciar entre la salida normal y el comando print. Muchas veces me habréis visto
escribir tres más seis y ejecutar en la línea y se... y aquí sale un nueve. Realmente
este nueve no está saliendo porque lo estemos imprimiendo nosotros en pantalla sino
que como es la última instrucción el intérprete de Python nos devuelve resultado la
última instrucción. Si tuviéramos tres más seis, luego un cuatro y luego un siete y
quisiéramos ver lo que hemos hecho en la segunda línea no podríamos, a no ser que
añadiremos otra celda de ejecución. Esto es poco práctico.
Muchas veces lo que haremos es, si queremos ver el bloque vale el cuatro, hacemos
print y a variable que queremos imprimir y vemos que aquí nos hace un cuatro y la
salida de nuestra ejecución.
Vale. El comando print como habéis visto es print y entre paréntesis lo que queremos
que salga por pantalla. Entonces nosotros normal el ejemplo más clásico es hacer print
entre paréntesis. Es el ejemplo típico que se usa normalmente, pero qué pasa cuando
queremos después del hola mundo o ponemos una descripción de un texto, valor la
variable es, y queremos aquí añadir el valor de una variable, por ejemplo: cuatro. Pues
lo que hacemos, como habréis visto que he hecho yo, es añadir una coma para
separar la cadena del texto y el número o la variable que queremos representar
después. Como está dentro del comando print este comando intentará hacer una
conversión de lo que tengamos allí a tipo cadena antes de escribirlo y le añadir a
espacios entre medio.

35
Por eso aquí nosotros tenemos el valor... al valor de la variable es y después de los
dos puntos hay un espacio antes de representar el cuatro, vale. Si nosotros
quisiéramos formatear
esto como nosotros quisiéramos o poner en el cuatro aquí
en medio, tenemos varias opciones como:
Podemos partir la cadena
y poner aquí una cosa,
el valor de la variable
es mayor que
tres, por ejemplo. Esto sería una forma de formatearlo. No
hace falta que pongamos espacios al principio al final ya que
no lo añadir el print cuando ejecutemos esto vemos que dice
"el valor de la variable cuatro", aquí en lugar de un número

36
podríamos poner una variable, es mayor que tres, igual que tres.
Podemos poner un número, una variable... Como he dicho en algunos
vídeos anteriores, en el caso de Python 3 podemos usar los
f strings. Los f strings, como dije en el vídeo en el que
explicaba, son cadenas que empiezan por f antes de declarar
la cadena. Entonces el valor de la variable y entre corchetes
la variable que quisiéramos, en cuatro en este caso,
es mayor que, entre corchetes.
Esto dentro de un print
ahora es exactamente lo mismo que arriba, pero permitiéndonos
la libertad de este espacio que nos que estaba añadiendo
quitarlo y darle el formato que nosotros queramos. Entonces, por ejemplo
así vemos que no añade automáticamente el espacio detrás
de los dos puntos. Es una forma de controlar nosotros exactamente
qué es lo que está saliendo por pantalla.
Luego, otro comando que se usará mucho en unos ejercicios es el input
que lo he comentado con anterioridad. El input, nosotros si lo
ejecutamos tal cual, nos sacará un cuadro de texto donde podemos
rellenar un valor y vemos que la salida es este valor.
Este input suele ir acompañado con un mensaje de texto en
el que le pedimos el usuario un dato. Escribe
un nombre y entonces escribo mi nombre
y vemos que la salida es Leonardo. Esto es porque esto devuelve
(...) lo que hayamos escrito el usuario y lo podemos guardar
en una variable. La variable nombre igual
a esto de aquí. Entonces, yo cuando escribo Leonardo
y si hago así y miro qué es lo que hay dentro del nombre,
vemos que hemos guardado dentro de nombre Leonardo.
Vale. Nosotros en lugar de hacer esto, pues como he dicho antes
podría tener un print en mi variable.

37
Entonces, estamos sacando como resultado esto de aquí.
Por ejemplo, otra cosa que nos puede pasar es sabiendo
que una maratón son cuarenta y dos coma dos kilómetros escribiremos
un programa que le preguntará al usuario cuántos minutos
tardó realizarla y con eso calculará el ritmo medio al que corrió.
Entonces, si nosotros sabemos que la distancia de la maratón es cuarenta y dos coma
dos, que lo hemos declarado como una constante,
podemos aquí preguntarle al usuario.  Con un input
lo vamos a guardar en una variable se va a llamar  ritmo medio,
cuántos minutos tardas.
Entonces, este ritmo medio nos acordaremos por lo que hemos
comentado anteriormente que el imput lo que coge es una cadena.
Entonces, este ritmo medio
 que queremos poder operar con él, lo tenemos que hacer una conversión
a float, por ejemplo, porque sino no podremos hacer operaciones matemáticas
con él. Bien, una vez tenemos el ritmo medio con un
número real, que es lo que nos resuelva el usuario,
podremos hacer el cálculo. Entonces, podemos hacer un print...
No, ritmo medio no, esto es tiempo.
Pongo ritmo medio
es, como he dicho puedo hacerlo directamente con una coma, y en este
caso sería distancia
maratón partido
tiempo. Si os dais cuenta tiempo lo he puesto en minúsculas y distancia maratón
 en mayúsculas, vale. Si ejecutamos esto, entonces aquí,
en cuántos minutos tardaste, pues vamos a ponerle trescientos
sesenta (unas cuatro horas, un ritmo muy modesto)
vemos que dice que nuestro ritmo medio es cero coma once...cero coma once es...
Esto es... Esto es así porque le hemos puesto el ritmo en minutos y es la distancia en
kilómetros y hemos hecho kilómetros partido por minuto. Si nosotros queremos saber
cuántos minutos hemos tardado cada kilómetro sería la operación, al contrario.
Hemos dicho trescientos sesenta y aquí sí, nos dice que nuestro ritmo medio es ocho
coma cincuenta y tres minutos por kilómetro.
Esto es todo respecto al input y al print.

Si quieres puedes descargar el texto de el Jupyter notebook utilizado. Para reproducir el proceso


paso a paso puedes hacer click con el botón derecho del ratón para descargar el Jupyter
notebook y ejecutarlo en local (recuerda usar "guardar enlace como" para guardarlo con
extensión .ipynb para abrirlo luego con Anaconda) o conectarte al Binder de la lección para
ejecutarlo en la nube.

38
Python – Bloques Indentados (Video 23)
Video 23 Python – Bloques Indentados https://youtu.be/3lP7UQW1yfA

Hola, en este vídeo vamos a hablar sobre los bloques indentados.


En otros lenguajes de programación la indentación se utiliza
sobre todo para ordenar el código y de hacer que la visualización
de este sea más sencilla, en python en cambio sirve para definir
los bloques de código y cómo trabajar con ellas.
Una de las cosas que tenemos que tener cuidado cuando trabajemos
con código indentado es tener mucho cuidado con los tags, hay
una diferenciación muy clara entre los tabulados
y los espacios y hay veces que nos dará error porque el
el editor de texto que estamos utilizando, utiliza tabulador
en lugar de espacio o al revés, si está mezclados
dará errores, hay que tener cuidado con esto cuando trabajemos con
con indentación. Vamos a ver unos ejemplos de bloques indentados,
por ejemplo, el bloque if que vimos en en el primer, en uno de
los vídeos anteriores, aquí tenemos la variable edad que la asignamos
un diez, entonces decimos en este primer bloque
si la edad es mayor que dieciocho, pues entonces ejecutamos este código
de aquí, vale, una vez se ha ejecutado este código saldremos
del bloque y este será el otro bloque, tenemos un número más
grande y este más pequeño que está contenido dentro del if, muy
bien, aquí dentro del de la zona indentada,
como he dicho, aquí pueden haber cuatro espacios
o un tabulado siempre y cuando el editor de texto que utilicemos
lo convierta a espacios, podemos tener combinados
espacios y tabulados, si guardáramos ahora mismo y esto tuviera
un tabulado y por ejemplo tuviéramos otra línea

39
con otro print
esto está con espacios
si lo tuviéramos al mismo nivel pero con espacios, en este caso
no va a dar error porque nuestro editor de texto guarda todo
como espacios, los tabulados los convertirá en espacios, entonces cuando ejecutemos
vemos que como edad no no es mayor que dieciocho, no entra dentro
del if, bueno voy a ponerle otro valor
veis, y ahora entra dentro del bloque y ejecuta esta parte
de aquí dentro. Aquí tenemos otro ejemplo con
dos bloques tenemos otra vez la variable edad, que la hemos
vuelto a sacar un diez, si es mayor que dieciocho pues le hemos puesto
puede beber en españa y si es mayor que sesenta y siete además estará
jubilado, vemos que los bloques son, es mayor que dieciocho tenemos
este bloque de aquí y además tenemos este segundo bloque
si es mayor que sesenta y siete, tenemos dos bloques, uno dentro
de otro, este de aquí solamente se ejecutará si estamos
dentro de este, vamos a ver cómo se ejecuta poniéndole un valor
mayor que dieciocho
veis, dice puede beber en españa y poniendo un mayor valor
mayor que sesenta y siete
nos dice las dos frases, puede beber en españa y además está
jubilado. Otro de los bloques típicos es el if else
que te dice una condición y si no se cumple genera otro
bloque, vamos a verlo
limpiamos esto, tenemos
este es el bloque del if como veis está tabulado y luego el bloque del else es este otro,
ambos tabulados, el mismo nivel de tabulación para los dos
y cuando nos hemos salido del if para declarar else hemos
echado hacia atrás, vale, el funcionamiento es el mismo
entonces aquí le hemos puesto un quince, entonces nos dice la condición

40
del else, aún no puede beber en España, para los bloque for pasa
exactamente igual, vimos cómo funcionaban los bloque for en un
vídeo anterior y ahora vemos exactamente cómo funciona la indentación
aquí tenemos este bloque de aquí, que imprime la palabra fruta le añadimos
más elementos
y ejecutamos vemos que dice, comienza el bloque, manzana otro elemento,
pera otro elemento, plátano otro elemento, esto es porque cada
vez que ha entrado dentro del bloque, del bloque para cada una
de las frutas ha ejecutado este trozo de código, ha hecho el print
de fruta y luego el print de otro elemento,
vale, y por último, vamos a ver
cómo funcionan las funciones, nunca mejor dicho, aquí tenemos
una declaración de una función que va a hacer una suma de
dos elementos, el cinco y el tres en este caso y al final va
a hacer este print de los dos, de la suma, de del valor de
la suma de los dos elementos y luego tenemos una llamada,
como veremos más adelante en el tema de las funciones este
trozo de aquí es la declaración de la función, este trozo
de aquí, este bloque de aquí es el contenido de la función
y durante la declaración este bloque no se ejecuta, solamente
se ejecuta en la llamada, que se esto que tenemos aquí, aquí
estamos llamando a la función y cuando hacemos esto lo que hacemos
es entrar aquí dentro y ejecutar todo lo que hay dentro del
bloque, veamos cómo funciona
veis que nos devuelve un ocho, porque lo que ha hecho ha sido
guardar este cinco aquí, este tres aquí y devolvernos el resultado.
 Pues esto es todo respecto a los bloques indentados.

Si quieres puedes descargar el texto de el Jupyter notebook utilizado. Para reproducir el proceso


paso a paso puedes hacer click con el botón derecho del ratón para descargar el Jupyter
notebook y ejecutarlo en local (recuerda usar "guardar enlace como" para guardarlo con
extensión .ipynb para abrirlo luego con Anaconda) o conectarte al Binder de la lección para
ejecutarlo en la nube.

Python – Control de errores con try/except (Video 24)


Video 24 Python – Control de errores con try/except https://youtu.be/RF6ABFcTdWc

41
Hola en este vídeo vamos a ver cómo tratar errores en Python con el bloque try/except.
Recordáis que en uno de los videos anteriores
hablamos sobre cómo, de los errores se aprende.
Pero no siempre querremos aprender de ellos sobre todo cuando
son errores de tipo de ejecución. A menudo, es mejor tratarlos
y, o bien, arreglarlos o bien ponerles algún remedio para que
no sean un error tan problemático. Veamos algunos ejemplos.
Como vimos en el vídeo de los errores se aprende. A unos errores
típicos de ejecución con la división entre cero
intentar acceder a una variable que no existe.
Intentar concatenar una cadena con un número.
Así, como errores de acceder a un archivo que no tenemos acceso
o que no existe, problemas de conexión, problemas de comunicación,
el acceso a datos. Todos estos errores cuando estamos
ejecutando son problemáticos porque puede ser una entrada
del usuario que no ha cargado la variable o algún problema así.
Entonces, cuando esto sucede nosotros no queremos que el
programa falle si no queremos seguir ejecutando.
Por ejemplo, nosotros e intentamos aquí recibir el,
un número del usuario. Del usuario cuando, como decimos escribe
un número. Podemos poner un tres y es to da un error. Cuando
esto pase el programa fallará, el programa dará error y si
el usuario final no somos nosotros sino que es alguien que
está utilizando el programa no entenderá que está pasando.
Vale, entonces lo que se suele hacer en estos casos
es utilizar el bloque try/except. El bloque try/except aquí
en el try le decimos a Python que intente ejecutar el contenido
de este bloque de aquí.

42
Y si todo va bien ejecutará esto y cuando termine se saldrá
del blog entero y no ejecutará lo que hay dentro de except. En
el caso de que falle algo alguna de las líneas de este bloque
saltará y ejecutará está antes de salir del try/except. En este
este caso, vemos que el lugar es lo que hemos puesto es un mensaje
de error. Veamos que lo que sucede. Nosotros
ejecutamos esto y ponemos un número válido.
Vemos que dice hemos sufrido un error debido a que en el valor
numérico is not defined. Pues está diciéndonos que
la variable valor numérico no está definida porque tienen
nombres distintos. Esto lo solucionamos y volvemos a ejecutar
le ponemos el tres. En este caso, ejecuta todo esto y se
salta este trozo de aquí no da el mensaje de error. ¿Pero qué
pasa cuando ponemos el tres que decíamos
antes? Contexto, en lugar del mensaje de error tan cero que teníamos
aquí vemos un mensaje de error mucho más legible dice hemos
sufrido un error debido a que el literal int
en base diez que esperábamos. En lugar de eso
hemos recibido un tres. Si es verdad que este error es más legible
que ésta de aquí. Podríamos hacerlo más específico,
más amigable para el usuario para que luego cuando el usuario
se contacte con nosotros nos pueda especificar o puede entender
que lo que está pasando. Podremos poner estamos
esperando a que el texto que estas, que tiene que escribir
sean números en caracteres numéricos
no alfanumérica.
Pero qué pasa cuando queremos realizar cosas
con el contenido del valor, de la variable valor numérico más
adelante. Es uno de los problemas que podemos tener que dentro del
bloque le pidamos un dato el usuario y estemos asignando una

43
variable, como pasa aquí.
Estamos pidiendo una variable y la estamos guardando en esta,
en este, en este variable valor numérico. Y el contenido
completo del bloque try es esta de aquí. ¿Pero qué pasa si
falla esto? Valor numérico no tendrá un dato válido cuando
haya esto fallado. Entonces, lo que hemos hecho ha sido aquí en
la excepción asignarle un valor válido porque luego la variable
la estamos usando aquí en esta suma. Entonces, cuando ejecutamos esto.
Vemos que si le ponemos un valor válido el,
ahora mismo ha dado error al poner el nombre de la variable. Pero bueno,
nombre de la variable le ponemos un valor válido.
Y vemos que hace este print de aquí que nos devuelve un seis
y luego hace este print de aquí también nos devuelve un seis.
¿Que pasa si nosotros ponemos la variable contexto?
Vemos que este esta línea de aquí está fallando. Al fallar
esta línea, estas dos se salta y lo que hace es escribir el
valor numérico el cero. Este cero que estamos guardando dentro
el valor numérico es el que sumaremos a tres y el que estamos
imprimiendo aquí. Esto hace que esta línea no de error
y podemos seguir con la ejecución de nuestro programa. Esto
es muy útil cuando estamos intentando cargar archivos o cualquier
cosa. Podemos controlar y si el archivo no existe
pues podemos manejarlo de alguna manera o bien
pidiendo al usuario un archivo nuevo o bien intentando
acceder más tarde o hacer alguna cosa. Hay que tener cuidado
con los bloques try muy largos. Por ejemplo, este bloque try
aquí son solamente cuatro líneas, el que estamos usando de ejemplo.
Pero si en lugar de cuatro líneas fueran cien sería problemático
porque no podríamos completar exactamente en qué punto está
fallando. Nosotros aquí simplemente estamos manejando
el error y guardando una variable con un carácter correcto
teniendo en cuenta el valor que está introduciendo el
usuario. ¿Pero qué pasa? Como vemos aquí. Aquí
valor numérico lo estamos poniendo bien, pero podríamos en
la línea setenta tener otro error. Ese error no tenerlo manejado
aquí porque no estamos haciendo nada en concreto con esos
datos y mucho más adelante nuestro programa eso ocasionarnos

44
problemas. Entonces, los bloques try tienen que concretar exactamente
en el error que estamos intentando tratar para cada bloque.
Vale, luego en la documentación de Python tenéis los tipos
de errores disponibles y esto nos permite filtrar por el tipo
de error. Por ejemplo, aquí tenemos una división por el valor
que introduce el usuario. Entonces, si nosotros ejecutamos esta
este script de aquí. Y le decimos como parámetro de entrada un cero.
Nos dice que es un error de tipo aritmético, esto es porque
él ha intentado ejecutar esto de aquí. Ha fallado en la división
y como es de tipo aritmético el error ha llegado
a esta excepción de aquí y ha ejecutado esta. Todos estos de
aquí nos han llegado a ejecutar porque ha decidido. Él
sabe que el error es de tipo aritmético y ejecuta esta excepción.
Si en lugar de ser de tipo aritmético sería numérico este
trozo solo saltaría y seguiría con los siguientes hasta que
se encuentre una del tipo. Entonces, en nuestro caso hemos puesto
una aritmética una de valor y otra más genérica en el caso
de que no se ha ninguno de estos dos errores.
Veamos qué pasa cuando en lugar de un tres ponemos el texto tres.
Vemos que no ha escrito nada porque lo que ha hecho ha sido
en el caso de un error de tipo valor simplemente la regla,
no está poniendo un mensaje. Y por último, veremos el grupo
finally y esto sirve para, esto se ejecutará siempre de forma
esto se ejecutará siempre cuando vayamos a finalizar un bloqueo.
Independientemente de lo que haya sucedido tanto se ha funcionado
como si no. Vamos a limpiar esto, tenemos por aquí en bloque try,
el bloque except,
y el bloque finally.
Si algo de este bloque try falla, saltará y ejecutará esta excepción.
Si todo va bien ejecutará al finally y luego continuará.
Si algo falla, después de ejecutar el except acabará ejecutando
el finally. Y esto es muy útil por ejemplo si estamos abriendo
un archivo dentro del bloque try podemos nosotros cerrar este
archivo en el finally y y de esta, de este modo tanto si funciona
el escript como si no funciona el archivo acabará estando cerrado.
Entonces, no tenemos que tener repetido el código de cerrar
el archivo aquí, aquí, aquí o ponerlo aquí al final y depender
de si esto está capturando bien el error.
Y esto es todo respecto a los bloques try/except.

Si quieres puedes descargar el texto de el Jupyter notebook utilizado. Para reproducir el proceso


paso a paso puedes hacer click con el botón derecho del ratón para descargar el Jupyter
notebook y ejecutarlo en local (recuerda usar "guardar enlace como" para guardarlo con
extensión .ipynb para abrirlo luego con Anaconda) o conectarte al Binder de la lección para
ejecutarlo en la nube.

45
Práctica 3.1 Guardar input en variable
Práctica 3.2 Encontrar el mayor de dos números introducidos

Resumen
En el módulo hemos visto el concepto de flujo de ejecución y los distintos tipos que
existen, empezando con el más simple, el flujo secuencial. Luego hemos pasado a
como utilizar decisiones en Python con el comando if, y cómo permite desviar el flujo
del programa, para acabar tratando los flujos iterativos, donde hemos tratado los
bucles for y while. Hemos comentado dos comandos básicos, print() para mostrar
resultados e input() para introducir parámetros, hemos visto cómo se usa el indentado
del código para agrupar las instrucciones en los comandos anteriores y cómo incluir en
el código mecanismos para tratar los posibles errores de ejecución que puedan
producirse.

Módulo 4 - Resolviendo problemas con Python


Introducción
Bienvenidos al módulo de resolución de problemas simples con Python.
El módulo incluye una práctica, un examen de prueba y un examen de módulo. Si no
has solicitado el certificado no podrás acceder al contenido evaluable, con lo que no
tendrás acceso a las prácticas evaluables ni al examen de módulo, aunque puedes
descargarte el fichero máster con todas las prácticas de la sección de recursos de la
página inicial del curso y realizarlas sin que sean evaluadas.
El tiempo estimado para completar este módulo son 4 horas y el tiempo de visionado
de los vídeos alrededor de 32 minutos.
En el módulo trataremos de forma práctica como resolver problemas simples usando
bucles iterativos y decisiones. Veremos como clasificar números en pares o impares,
encontrar números divisibles por uno dado, contar elementos, sumar valores o calcular
medias de una lista, ver si existe un elemento concreto o encontrar el mayor o el
menor valor de la lista.
En la práctica del módulo concatenaremos los números pares o impares de una lista.

46
Python – Par o impar (Video 25)
Video 25 Python – Par o impar https://youtu.be/cKkZdNA-m4c
Hola en este en esta serie de vídeos vamos a ver problemas típicos en python y cómo
resolverlos. El primero de ellos par o impar vamos a diferenciar entre números pares o
impares en la entrada de datos.
Esto es una la plantilla del problema, aquí tenemos el texto que esperamos que no
modifiquéis y tu código aquí vale, como veis tenemos un input que si ejecutamos esta
línea introduce tu número que ponemos un tres ese tres está guardado en la variable

en uno, pero como recordáis en videos anteriores este tres


está guardado como cadena, entonces lo primero que tendremos que
hacer, es crearnos una variable numInt, que sea un int, que es lo que hemos guardado
en uno vale, entonces que es lo que queremos decir, le pediremos
al usuario el número y debe mostrar mensaje el número es
par o impar dependiendo del número introducida, como sabemos
si un número par o impar, para eso usaremos el módulo de la división
entonces if numInt, modulo dos
es igual a cero, el número será par y en el caso contrario será impar,
aquí dentro del del bloque if pondremos el primer print
el número es par
en el caso contrario en el else otro print, el
número es impar. Ejecutaremos esta y si le ponemos un dos
vemos que nos dice el números es par porque lo que hace es este
dos saca el resto entre dos que es cero y eso entra en este
trozo de aquí y nos escribe el número es par cuando ejecutemos
con un número impar por ejemplo un siete nos salta al caso
contrario nos dice el número es impar. Esto es todo.

Si quieres puedes descargar el texto de el Jupyter notebook utilizado. Para reproducir el proceso


paso a paso puedes hacer click con el botón derecho del ratón para descargar el Jupyter
notebook y ejecutarlo en local (recuerda usar "guardar enlace como" para guardarlo con
extensión .ipynb para abrirlo luego con Anaconda) o conectarte al Binder de la lección para
ejecutarlo en la nube.

47
Python – Encuentra los divisibles (Video 26)

Video 26 Python – Encuentra los divisibles https://youtu.be/2-COadrfCTk

Hola, seguimos con la serie de resolviendo problemas y en neste caso vamos a


encontrar los números divisibles, para este problema tenemos este enunciado de aquí,
nos dice, el objeto de esta práctica es realizar un programa de solicite al usuario un
número entero y positivo imprima los números enteros, los divisibles entre cinco y siete
menores o iguales que el número y para esto tendremos que realizar un bucle, vale,
igual que en el ejercicio anterior aquí introducimos un número, tendremos que devolver
todos aquellos divisibles entre cinco y siete detrás de este número, lo primero que
tendremos que hacer es como aquí tenemos una cadena, convertir esa cadena a
entero
y aquí tenemos el num int es el número que hemos introducido vale, entonces lo que
nos dice es tendremos, necesitamos todos los números enteros positivos menores o
iguales que el número, entonces querremos hacer un bucle que vaya desde cero hasta
el número que hemos introducido, entonces para esto usaremos la función range, que
lo que hace es dado un rango y un valor inicial y un valor final en este caso es num int
vamos a inicializar num int aquí arriba para verlo como funciona igual a diez,
ejecutamos esto y esto lo vamos a convertir a una lista para que veáis lo que hay
dentro, vemos que tienen los valores del cero al nueve, esto es porque va desde cero
al número indicado sin incluirlo, vale, entonces para por cada número en el rango de
cero a num int más uno, vale, pues qué es lo que nos pide, imprima todos aquellos que
sean divisibles entre cinco o siete, entonces if el número es divisible entre cinco o el
número es divisible entre siete, vale, qué tendremos que hacer, print el  número
cumple con las condiciones del ejercicio, vale, nos ejecutaremos esto, nos dice que
tenemos aquí un error porque aquí nos falta añadir in, votamos y el otro lo que nos
falta es los dos puntos aquí al final, de este modo cerramos el bucle for, estos son
errores típicos que os pasarán cuando estéis empezando, os olvidareis del in, os
olvidareis de los dos puntos, entonces aquí nos dice, nos pide el número por ejemplo
ponemos un treinta lo ejecutamos y qué pasa, el número uno, dos, tres, cuatro, cinco
uy, está entrando dentro de todos, qué pasa, si el número cinco o el número siete, qué
pasa, aquí no está haciendo ninguna comprobación, simplemente está haciendo la
división, tendremos que poner una condición, es igual igual a cero o esto es igual igual
a cero, así sí que estamos comprobando que sean divisibles entre cinco y siete,
volvemos a poner el treinta ejecutamos y ahora vemos que si está entrando en el cero,
el cinco, el siete, el diez, el catorce, quince, veinte, veintiuno, veinticinco, veintiocho y
treinta, aquellos que son divisibles entre cinco y siete, de este modo resolveríamos
nuestro problema.
Si quieres puedes descargar el texto de el Jupyter notebook utilizado. Para reproducir el proceso paso a
paso puedes hacer click con el botón derecho del ratón para descargar el Jupyter notebook y ejecutarlo en
local (recuerda usar "guardar enlace como" para guardarlo con extensión .ipynb para abrirlo luego con
Anaconda) o conectarte al Binder de la lección para ejecutarlo en la nube.

48
Python – Contar elementos (Video 27)
Video 27 Python – Contar elementos https://youtu.be/J8vkxU3EzXU
Hola, en esta serie de vídeos vamos a ver cómo resolver problemas
típicos con bucles en Python.
Cuando intentamos resolver un problema con un bucle en Python
tenemos que tener en cuenta lo que hablamos en el flujo interactivo.
Tendremos una inicialización del bucle, luego tendremos nuestro
bucle donde hace, haremos la tarea repetitiva y luego una finalización.
Estas tres zonas tenerlas definidas de esta forma
nos ayudarán a resolver los problemas más fácilmente.
El primer problema que vamos a resolver es cómo contar los
elementos de una lista dentro de un bucle.
Nosotros aquí tenemos este primero que es contar elementos
de una lista y dado una lista que es estos elementos de aquí.
Nosotros en Python tenemos la función len. Cuando ejecutamos
vemos que nos devuelve un seis, porque el número de elementos
que tiene nuestra lista es seis. ¿Pero qué pasa si no tuviéramos
la función len? Puede aparecer estúpido en un principio
pero no lo es así porque muchas veces queremos contar
elementos que no podemos aplicarle la función len o no podemos
hacer algo así. Y además, saber cómo resolver esto nos simplificará
resolver otros problemas más adelante. Como he dicho lo primero
que tendremos que hacer es iniciar una inicialización. Entonces,
la cuenta la vamos a inicializar a cero porque ahora mismo en la
no tenemos ningún elemento nuestra cuenta. Y qué hacemos, queremos
contar. Entonces, para cada elemento en la lista
vamos a añadir un elemento, un ítem a nuestra cuenta. Entonces,
lo que hacemos es cuenta, actualizarlo, cuenta
más uno, vale. Y finalmente,
imprimiremos lo que tenemos en cuenta, vale. Ejecutamos esto, vemos
que el resultado es el mismo. Que ha pasado, cada vez, para cada
elemento de la lista aquí primero valía cero. Ha entrado con
el nueve y aquí dice con el nueve cuenta vale cero más uno. Con
el trece, uno más uno valdrá dos, tres, cuatro, cinco y seis.
Y al final, tiene, tenemos aquí el seis que queríamos. Si queremos
hacerlo más visual, podríamos hacer aquí un print.
Elemento estamos añadiendo es el
elemento y ocupa.
Esto lo hacemos con un efe print, para que nos lo formateé.
Entonces, para que sea más fácil de entender. El resultado final
es lo que tenemos en cuenta.
Ejecutamos esto aquí, vemos que para cada iteración nos salga
este mensaje. El elemento que estamos haciendo es el nueve igual
y ocupa el orden uno, ocupa el orden dos, el tres. Así, hasta que llegamos al seis
y el resultado final es seis. Y así, contaríamos los elementos
que tenemos en una lista y esto es todo.

49
Si quieres puedes descargar el texto de el Jupyter notebook utilizado. Para reproducir el proceso paso a
paso puedes hacer click con el botón derecho del ratón para descargar el Jupyter notebook y ejecutarlo en
local (recuerda usar "guardar enlace como" para guardarlo con extensión .ipynb para abrirlo luego con
Anaconda) o conectarte al Binder de la lección para ejecutarlo en la nube.

Python – Sumar valores (Video 28)


Video 28 Python – Sumar valores https://youtu.be/Oq90CSiFR9Q

Hola, este es el segundo vídeo sobre resolución de problemas


con bucles y en este, como hemos dicho en el vídeo anterior,
a la hora de resolver problemas en bucles tendremos que tener
en cuenta el flujo iterativo e inicialización antes
de entrar al bucle luego nuestro bucle iterativo y luego una
finalización. Esta estructura como dije en el vídeo anterior nos
ayudará a resolver estos problemas más fácilmente.
En este vamos a sumar los valores de los elementos de una lista, aquí está.
Vale, para sumar los valores de una lista en Python tenemos
la función sum que le das una lista y nos devuelve la
suma pero que ¿Cómo lo haríamos si no tuviéramos esta función
sum? Como dije en el vídeo anterior si bien normalmente
vamos a poder usar la función sum para sumar los valores
es saber cómo resolver esto con un bucle luego nos ayudará a
resolver otros problemas más fácilmente.
Bien, como hemos dicho tenemos primero una inicialización
suma es igual a cero porque ahora mismo no tenemos ningún
 valor y vamos a asumir que la suma de valores va a dar cero
en el caso de que no haya ningún valor ¿Vale? Entonces para
cada elemento en la lista vamos a hacer algo y lo que es, es
a la variable suma añadirle el valor del elemento de suma
es igual a suma más elemento.
Al final hacemos un print de suma y ejecutamos esto, vale. El resultado
es el mismo porque lo que ha hecho ha sido ir a y cada uno
de los elementos ir añadiendo a la variable suma su valor
entonces  teníamos un cero le hemos añadido nueve,
luego un trece, luego dos, luego el siete, luego el ciento veinticuatro
y luego le hemos restado cinco. Una de las cosas que podemos
hacer es por ejemplo si quisiéramos hacer la
suma pero solamente de los valores enteros positivos de la
lista. Entonces este menos cinco querríamos convertirlo al
valor positivo a más cinco y esto con la función suma no es
posible pero al hacerlo nosotros podríamos este elemento ponerle un
abs, nos  devolverá el valor absoluto del elemento y al
ejecutarlo vemos que en lugar de restar cinco aquí teníamos
ciento cincuenta y cinco y el restandole cinco nos daba el
ciento cincuenta, le hemos sumado cinco y ciento cincuenta y cinco
más cinco pasa a ser ciento sesenta. Podemos ver esto haciendo
50
un print en cada una de las ejecuciones y decimos vamos
por a añadir el elemento,
elemento y el resultado parcial es
esto es un fstring así que tener empezar por f
y dejamos el resultado final.
Cuando ejecutamos todo esto vemos que nos va diciendo vamos a añadir
el elemento 9, 12, 2, 7, 124,
-5 porque aquí le hemos dicho el elemento y no abst
del elemento y si os dais cuenta hemos pasado de ciento
cincuenta y cinco cientos sesenta y queremos, podemos poner aquí
abs elemento. Haber,
he puesto el paréntesis donde no es esto de aquí
contamos y ahora sí nos dice cinco y cinco más ciento cincuenta
y cinco, ciento sesenta. Esto no lo podríamos hacer con la función
sum pero lo podemos hacer con nuestro bucle for.
Esto es todo.

Puedes usar el Jupyter lab del vídeo anterior

Python – Calculando medias (Video 29)


Video 29 Python – Calculando medias https://youtu.be/0gWi4F1OGAw

Hola, este es el tercer video sobre cómo resolver problemas típicos con bucle. Como
he dicho en los vídeos anteriores a la hora de resolver un problema con un bucle for es
importante tener una parte de inicialización donde inicializamos los valores

51
de las variables que vamos a usar dentro del bucle. Luego, tendremos
nuestra iteración donde haremos algo repetitivamente y por
último una finalización, donde tendremos un resultado final.
En este ejercicio vamos a ver cómo calcular las medidas de
los valores de una lista.
En el caso, el caso más típico es que tenemos una lista con
estos elementos y vamos a calcular la media. La media final
es la suma de los valores dividido por su longitud. Ejecutamos
esto. Nos dan veinticinco que es la media que tendríamos al
sumar todos estos valores y dividir entre el número de elementos.
Vale, que como habíamos visto anteriormente es ciento cincuenta
entre seis. ¿Pero como lo haríamos sin tener sum ni len? Pues, bien.
Si os dais cuenta, lo que tenemos aquí es una función, de la
función suma la función len. Son dos funciones interactivas
lo que hacen es por un lado contamos
los elementos que tiene el, la lista. Y por otro lado, los sumamos
vamos a inicializar una variable cuenta y una variable suma
para luego poder hacer esta división. Vale, entonces qué es
lo que hacemos para cada elemento en la lista
cuenta es igual a cuenta más uno.
Suma es igual a suma más elemento. De este modo, la
variable cuenta va contando cuántos elementos tenemos en lista.
Y la variable suma va añadiendo el valor del elemento a la
variable suma. Al terminar el bucle, dentro de las variables
suma y cuenta tendremos, como he dicho aquí el número de elementos
y aquí la suma. Que es justo lo que tenemos aquí la suma y
el número de elementos. Pues en la finalización,
fuera del bucle podemos decir que la resultado sea suma partido por
cuenta. Pues ejecutamos esto, nos da el mismo veinticinco que
teníamos aquí. Entonces, podemos como hemos hecho anteriormente

52
dejarnos unos mensajes para ver que lo que está sucediendo
en cada ejecución. El valor,
el elemento que estamos introduciendo
es elemento.
Actualmente vamos por el elemento
número, cuenta.
Nos faltaría saber el resultado parcial de la suma es, lo que
tengamos en suma.
De este modo, cada vez tendremos en el bucle aparte de realizar
esta suma veremos estos tres valores. Si volvemos a ejecutar
vemos que nos ha añadido una línea por cada iteración. En total seis,
seis por tres dieciocho líneas. No nos dice el elemento que estamos
introduciendo, en que interacción estamos y el resultado parcial
de la suma. Y como vamos sumando. Igual que vimos para el ejercicio
anterior en el cual contábamos, sumamos los elementos podemos
hacer lo mismo aquí. Si nosotros quisiéramos sacar la media
de los valores positivos. Simplemente cambiando esta suma
por el valor absoluto de elemento.
Ejecutando, el resultado final en lugar de ser veinticinco,
pasa a ser veintiséis coma seis, seis período. ¿Por qué? Porque
el resultado final de la suma al pasar esto absoluto pasa a
ser ciento sesenta. Y al dividirlo entre seis da este resultado.
Y esto es todo sobre cómo calcular la media con un bucle for.

Puedes usar el Jupyter lab del vídeo anterior

Python – ¿Existe elemento? (Video 30) https://youtu.be/zbviWnlJizY


Video 30 Python – ¿Existe elemento?

Hola, este es el cuarto de vídeo sobre cómo resolver problemas


típicos con bucles, como he dicho en los videos anteriores es
importante cuando intentemos resolver un problema con un flujo
iterativo tener una fase inicialización, donde inicializaremos
las variables de control, la fase del bucle donde
haremos nuestro proceso repetitivo y una fase finalización
normalmente fuera del bucle donde veremos el resultado de lo
que hemos hecho.
El ejercicio que vamos a ver es ver si existe un elemento dentro de una lista,
y como en todos los ejercicios anteriores tenemos nuestra lista
y tenemos una función int que le podemos preguntar si un elemento
está dentro de la lista, esto es muy útil porque nos devuelve
true o false si el elemento existe, vale, pero cómo lo haríamos
sin usar int, bien, y aquí pondremos nuestra respuesta.
Pues lo primero que tenemos que hacer en la etapa de inicialización es
crearnos una variable de control existe
y la inicializaremos a no existe, a false, de este modo no tendremos
53
que estar cambiando, si dentro del bucle no existe simplemente
devolveremos este valor y ya lo tenemos, vale,
y qué es lo que vamos a hacer, comprobar
para cada elemento si un valor existe, qué valor,
en este caso queremos comprobar este número, el siete entonces
vamos a ver el valor es igual a siete, ese es el valor que queremos
comprobar, otra cosa que podemos hacer es simplemente dentro
del bucle comprobar contra el siete, pero poniendo aquí una
variable, luego podemos modificar esto, modificaríamos la funcionalidad
de nuestro bucle y buscaríamos otro elemento, vale, entonces vamos
a inicializar el bucle para cada elemento
dentro de la lista, vamos a hacer algo y en este caso lo que
vamos a hacer es, si el elemento es igual igual al valor,
entonces existe pasa a ser true, vale,
esto de aquí cuando lo ejecutemos vamos a hacer un print
de existe al final, como  fase de finalización cuando lo ejecutamos
vemos que nos devuelve true si el valor en lugar de un siete ponemos
un once que no existe, nos da false, bien,
y esto está funcionando correctamente, un problema que tenemos
aquí es que como solamente queremos saber si un elemento existe
en la lista y una vez ha terminado no queremos continuar con
el bucle, tenemos una una palabra de control, que es un break,
o break, que al añadirla dentro de la condición en la que se cumple
nuestra condición esto hará que en lugar de repetir el bucle
para todos los elementos, cuando hayamos encontrado el elemento
que estamos buscando se salga del bucle, entonces por ejemplo,
si el número que estamos buscando es el trece,
esto entraría con el primer elemento de la lista que es un
nueve, comprobaría si es igual a valor, como no es igual saltaría
hasta fuera del bloque vemos que los bloques,
vemos el, el bloque for que es este de aquí y luego tenemos
esta comprobación, el contenido el la comprobación en el caso
afirmativo, entonces, si esto no se cumple todo esto se salta
y volvemos al principio, si esto se cumple se ejecuta esto, aquí
pondríamos un true y saltaríamos fuera del bucle, vale, lo
hacemos así ejecutamos, el resultado va a ser el mismo lo único
que sí aquí hacemos un
estamos en el elemento, elemento
y añadimos esta, este print dentro de cada iteración del bucle
y ejecutamos, vemos que al poner el break solamente estamos entrando
en el nueve y en el trece y nos salimos, en cambio si quitamos
el break a pesar de que hemos encontrado, en este ya la habríamos
encontrado y esto vale true, el sigue buscando
cuándo no querríamos tener el break, pues cuando aparte de saber
si existe quisiéramos contar cuántos elementos iguales a ese
número hay en la lista, por ejemplo, si nuestra lista tuviéramos
esta de aquí y queremos contar cuántos elementos, pues podemos
54
crearnos una variable cuenta igual a cero,
vale, entonces aquí aparte de existe igual a true, podemos hacer
cuenta es igual a cuenta más uno, vale, y aquí podemos hacer print
existe y cuenta, al ejecutar esto vemos que nos dice true, que
sí que existe y hay uno, como tenemos un trece podemos inicializar
esto poner otro trece aquí, vale,
he puesto dos coma,
y cuando ejecutamos esto nos dice true y un dos, porque ha entrado
y ha encontrado los dos treces, y esto sería todo sobre cómo buscarse
un elemento existe dentro de una lista.

Puedes usar el Jupyter lab del vídeo anterior

Python – Mayor y Menor (Video 31)


Video 31 Python – Mayor y Menor https://youtu.be/62Drqh-zC3o
Hola este es el último vídeo sobre resolución de problemas típicos con buques. Como
he dicho en todos los vídeos anteriores cuando intentamos resolver un problema con
un bucle es importante definir una inicialización de unas variables de control luego
ejecutar nuestro bucle y tener una finalización.
Estas tres zonas bien definidas nos facilitan la resolución de este problema.
Vale y en este vídeo vamos a ver cómo definir el elemento
mayor y menor de una lista.
Entonces en el caso de python tenemos las funciones max y min
cuando ejecutamos esto nos devuelven en nuestra lista el
mayor y el menor pero como siempre queremos saber cómo lo
haríais sin usar la función max y min vale, para esto lo
primero que haremos es inicializar dos variables una para comprobar
el mayor la vamos a inicializar a none
y otra para el menor que vamos a inicializar también a none,
porque inicializamos a none y no a cero o un valor muy bajo
un valor muy alto porque como veis nuestra lista tiene valores
positivos y valores negativos, si pusiéramos, si
tuviéramos una lista por ejemplo sólo con valores negativos
y en mayor pusiéramos un cero que sería el valor mayor de
la lista cuando hagamos la comprobación que ahora veremos
que, como, como funciona vale y haremos un ejemplo de esto para
que veáis lo que pasa.
Para cada elemento en la lista vamos a hacer dos comprobaciones
primero ver if mayor igual a none por menor es igual a none,
esto en un principio por lo que vamos a hacer a continuación
no sería necesario, así es más estándar para el resto de
ejecuciones que hacemos dentro de este, de esta primera comprobación
que es inicializar mayor o igual a elemento
y menor igual elemento. Vale, de este modo cuando
entreguemos en la lista el primer elemento será el que vayamos
55
a poner como mayor y menor, no habremos inicializado aquí ningún
valor sino que lo inicializaremos aquí dentro de la lista
en la primera iteración vale. Ese, esto es en el resto de casos
cuando no estamos por la primera iteración sino en todas las
demás, es cuando vamos a hacer las comprobaciones.
Si el elemento es mayor que mayor en este caso vamos a actualizar
el valor que tenemos dentro de nuestra variable,
de nuestra variable mayor, entonces mayor
pasa a ser igual a elemento
vale
y if elemento es menor menor,
menor pasa a ser igual al elemento.
Si os dais cuenta esto no lo hemos puesto en un else porque
puede ser que se cumpla esta y no está o al revés dependiendo
de como este la lista. Lo normal es que se cumpla
una o la otra pero no tiene por qué ser así,
además hemos puesto mayor exclusivo, podríamos poner mayor
o igual pero no sería necesario porque en el caso de que sea
mayor o igual en el caso igual ya lo tendríamos guardado y
no nos haría falta vale y por último ya fuera del bucle haríamos
un print de mayor,
y un print de menor, preguntaríamos esto y vemos que nos devuelve
nuestro ciento veinticuatro y nuestro menos cinco.
Ahora vamos a añadir un trozo de código y vamos a crear
una lista nueva y lista negativa
y vamos a poner todo números negativos menos cinco, menos diez,
menos doscientos, menos
treinta por ejemplo y aquí en lugar de none que habíamos puesto,
ponemos un cero en cada uno de ellos y esto es uno de los errores
más típicos, el no tener esta inicialización al no tener
una inicialización dentro de la lista usando el primer elemento
de la lista sino que dar por hecho mayor o menor es igual a
cero lo que sucede es que cuando lo ejecutamos con una lista
negativa como es está de aquí,
y ejecutamos.
Vemos que nos da un error que dice lista negativa
no está definida porque no he ejecutado esta línea de aquí,
ejecutamos esto luego ejecuto esto y vemos que nos dice cero
para mayor y menos doscientos para menor pero el valor mayor
de nuestra lista sería el menos cinco vale
deshacemos esto que hemos hecho aquí
y aquí volvemos a dejar, deshacemos un poco más
aquí esto está bien y esto sería la resolución que habíamos
dado y que pasamos la lista negativa aquí para cada elemento
dentro de la lista negativa inicializada mejor el primer elemento
y luego tenemos nuestra comprobación y ejecutamos vemos que
sí que nos da correctamente menos cinco y menos doscientas.
56
Es importante que en la inicialización estemos dando valores
que luego no están corrompiendo los datos que vamos a hacer en
nuestra comprobación.

Puedes usar el Jupyter lab del vídeo anterior

Práctica 4.1 Números pares e impares concatenados

Resumen
En el módulo hemos tratado de forma práctica como resolver problemas simples
usando bucles iterativos y decisiones. Hemos visto como clasificar números en pares o
impares, encontrar números divisibles por uno dado, contar elementos, sumar valores
o calcular medias de una lista, ver si existe un elemento concreto o encontrar el mayor
o el menor valor de la lista.

Módulo 5 - Estructurando y reutilizando código


Introducción
Bienvenidos al módulo sobre funciones, módulos y paquetes.

El módulo incluye cuatro prácticas, un examen de prueba y un examen de módulo. Si


no has solicitado el certificado no podrás acceder al contenido evaluable, con lo que no
tendrás acceso a las prácticas evaluables ni al examen de módulo, aunque puedes
descargarte el fichero máster con todas las prácticas de la sección de recursos de la
página inicial del curso y realizarlas sin que sean evaluadas.

El tiempo estimado para completar este módulo son 4 horas y el tiempo de visionado
de los vídeos alrededor de 25 minutos.

En el módulo introduciremos el concepto de función como mecanismo de reutilización


de código y veremos cómo pasarle parámetros a una función y hacer que devuelva
resultados. También veremos como agrupar las funciones en módulos y paquetes para
estructurar nuestro código y para incorporar código de otros programadores con
facilidad. Acabaremos viendo la notación orientada a objetos que podemos usar en
Python para llamar a ciertas funciones.

En las cuatro prácticas del módulo crearemos funciones para imprimir la frase "Hola
Mundo", para concatenar cadenas o contar palabras y crearemos un módulo con
constantes que podamos reutilizar.

Python – Las Funciones I (Video 32) https://youtu.be/_ZX8kFFeuvE


Video 32 Python – Las Funciones I

Hola en este vídeo vamos a hablar sobre las funciones en python.


Sofrie la cebolla es algo que en una receta de cocina solamente
tiene que decir sofríe la cebolla y tú ya sabes que es lo que
57
tienes que hacer, lo mismo pasa con las funciones en python
en lugar de hacer cada vez una serie de instrucciones simplemente
le dices estas instrucciones son una suma y luego
python sabe hacer la suma, vamos a verlo con un ejemplo de cómo
funciona una función. Vale primero le explicamos a python que es
lo que queremos que haga, en nuestro caso devolver el resultado
de sumar tres y cinco vale, al ejecutar esto simplemente estamos
definiendo, explicándole a python como se suman los valores tres
y cinco y qué es lo que queremos que haga, si os dais cuenta este
bloque de aquí lo hemos ejecutado pero no ha hecho nada simplemente
hemos escrito, hemos guardado que al ejecutar esto tenemos que
sacar por pantalla el resultado es tres más cinco,
el valor de tres más cinco luego lo, y luego lo haces
para llamar a una función pondremos el nombre que hemos dado
a la función y entre paréntesis los parámetros, esto lo veremos
en el siguiente vídeo, cuando ejecutamos esto python por dentro
lo que está haciendo es llamar a esta función y ejecutar el
bloque que haya dentro de la función todas las instrucciones que
hayamos puesto dentro de ese bloque se ejecutarán cuando ya
hagamos esta llamada, si os dais cuenta aquí no hemos hecho nada
en cambio aquí es donde hemos dicho el resultado es ocho, además
podemos añadir toda la funcionalidad que queramos ejecutar
igual que hacemos con bloques de Jupyter igual tendría en
un bloque Jupyter y añado que puedo hacer es más cinco más
cuatro hacer un print de un texto,
luego, puedo luego hacer una división entre cero para que de
un error y lo ejecuto todo esto y él hace el tres más cuatro
nos escribe el texto y da este error, todo esto lo podríamos
poner dentro de una función
primero explicamos qué es lo que queremos que haga
veis, y lo método todo dentro de un bloque, al ejecutar esto
no hará nada luego más adelante en otro trozo del código
podríamos llamar a mi función, y hará exactamente lo mismo que
habíamos hecho antes en el bloque de Jupyter sin necesidad
de hacer cada una de las líneas, añadirlas,
veis ha vuelto a poner el texto después de sumar tres más
cuatro y nos ha dado el mismo error de división, esto es muy
útil cuando tenemos que repetir las mismas tareas una y otra
vez con por ejemplo sofreír la cebolla en lugar de sofreír, de
cada vez tener que explicarle tiene que cortar la cebolla,
echarle aceite a la sartén, pues simplemente le decimos cómo funciona
una vez y luego lo único que tengo que decirle es mi función
y volverá dar el error de división entre cero que le hemos dicho
que ejecute, esto es todo.

Si quieres puedes descargar el texto de el Jupyter notebook utilizado. Para reproducir el proceso


paso a paso puedes hacer click con el botón derecho del ratón para descargar el Jupyter
58
notebook y ejecutarlo en local (recuerda usar "guardar enlace como" para guardarlo con
extensión .ipynb para abrirlo luego con Anaconda) o conectarte al Binder de la lección para
ejecutarlo en la nube.

Python – Las Funciones II (Video 33) https://youtu.be/HCKH1SdLNFg


Video 33 Python – Las Funciones II

Hola. Este es el segundo vídeo sobre las funciones y vamos a profundizar un poco
más en este concepto.
En primer lugar, tenemos que tener en cuenta que las funciones deben de ser vez
versátiles. En el ejemplo que vimos en el vídeo anterior donde le pedíamos que sumar
a tres más cinco, la función lo único que sabía hacer era sumar tres y cinco.
Aquí tenemos...
Aquí tenemos nuestra función del ejercicio anterior que cuando la llamábamos
suma3y5 lo único que va a hacer es decir el resultado es ocho pero los parámetros nos
darán la versatilidad que necesitamos ¿Qué son los parámetros? Pues en lugar de
tener la función suma3y5 podríamos tener la función suma donde tenemos el sumando
uno y el sumando dos estos dos parámetros que hemos definido aquí son los valores
con los que podemos llamar a nuestra función y podemos variarlos en cada llamada.
Estas variables que tenemos aquí luego las podemos usar dentro de
la función. Entonces aquí lugar de tres más cinco podemos
poner sumando uno y sumando dos
entonces nuestra función suma3y5 pasa ser suma
de tres y cinco porque una cosa que nos dé versatilidad y otra
cosa es que queramos usarla, entonces al ejecutar esto el resultado
es el mismo pero sin lugar de un cinco pusiéramos un siete
el resultado debe ser diez y así es.
Cuidado con los contextos. Como vimos con la parte
de intentación en los bloques, por un lado estarán las variables
globales las que están definidas fuera de las funciones y
luego están las variables que están dentro del contexto de
la función dentro del contexto de del bloque. Cada bloque intentado
tiene su propio contexto y las variables que se crean dentro
de ese bloque solamente están accesibles dentro de ese bloque.
Como por ejemplo, aquí definimos esta variable global que tiene
un siete ¿Vale? Y aquí en el contexto de la función
tenemos este bloque de aquí.
Que vemos que aquí tenemos una variable que es igual a siete y tenemos
varios pins donde intentamos hacer a una variable global a una
variable y a un parámetro ¿Vale? Ejecutamos esta definición
primero le decimos que es lo que quiere hacer y
ahora lo llamamos ¿Vale? Y vemos que nos imprime la variable global
que hemos definido antes valía siete porque como está fuera
sí que podemos acceder a ella dentro de la función,
luego el valor de la variable local de siete y por último
el parámetro con el que hemos llamado la función vale parámetro

59
¿Vale? pero que pasa estas estas dos variables tanto parámetro
como variable que está dentro del contexto de la función
no están accesibles desde fuera entonces si nosotros intentamos
acceder a ellos de forma independiente vemos que la variable
global sí que podemos acceder pero tanto si intentamos acceder
a la variable como parámetro nos va a dar errores porque nos
dice que no están definidas. Estas dos variables no existen
fuera de la función. Tened mucho cuidado con esto.
Además en el caso de las variables globales, por ejemplo, esto
de aquí para para si nosotros tenemos una función
mi función global ¿Vale?
y queremos hacer algo con esta variable global que no sea leerle
el valor y mostrarlo. Nuestra variable global se llamaba
variable global ¿Vale? Vamos a coger aquí,
nosotros aquí podríamos poner lo que habíamos hecho print
el valor de la variable global y como hemos dicho está accesible
en modo lectura fuera de la función. Si esto lo lo definimos y
luego lo ejecutamos mi función global
vemos que nos devuelve siete ¿Qué pasa si queremos modificar
el valor de esa variable dentro de nuestra función? Tendríamos
que antes de hacer el intento de modificación coger el
nombre de la variable, variable global
y ponerle un modificador delante que es global
así estamos indicándole a nuestra función que esta variable
global que vamos acceder aquí viene de fuera y queremos modificarla.
Entonces aquí podríamos hacer variable global es igual a
es igual a variable global más tres.
¿Vale? lo guardamos, ejecutamos y vemos que tenemos un diez pero
no sólo tenemos un diez sino que esta variable global ha modificado
el valor que teníamos aquí arriba ¿Qué pasa si volvemos a
llamar a esta función? Pasamos a tener un trece porque esa
esa variable la teníamos definida fuera y la estamos actualizando
cada vez que llamamos a la función si lo volvemos a ejecutar tendremos
un dieciséis y así cada vez.
El return algo muy importante que tenemos que tener en cuenta
es muchas veces nuestras funciones lo que estamos haciendo es
imprimir por en pantalla unos resultados, unos textos pero a veces
queremos devolver un valor para hacer más cosas con este valor.
Nosotros por ejemplo si aquí tenemos el número que es la
suma de tres y seis y hacemos print del número
nos muestra un nueve. Si aquí en lugar del print del número usemos
número vemos que nos dice que el out de la función está
porque para Jupyter todo el bloque trabaja como si fuera
una función que estamos ejecutando es este nueve, vale ¿Qué
pasa? Si nosotros quisiéramos luego con ese nueve hacer cosas
en este caso no pasa nada porque lo tenemos dentro de esta
variable pero ¿Qué pasaría si yo quitara esto
60
y quitara esto?
Va a ser el mismo, el nueve, pero no lo tenemos guardado dentro
de ninguna variable. No podemos acceder a eso a no ser que volvamos
a ejecutar nuestra función suma ¿Vale? Para hacerlo con una
función nuestra y tener esto dentro una variable lo que tenemos
que usar es la palabra clave return. Esta palabra clave lo que
hace es al finalizar la función lo que pongamos dentro de
la palabra clave lo devolverá y lo podemos guardar dentro
de una variable. Aquí definimos nuestra función suma y vemos
como habíamos hecho en el ejemplo anterior tenemos el sumando
a y el sumando b guardamos la suma dentro del total y esto es
lo que devolvemos con return, entonces si hacemos suma de cinco
y siete y lo asignamos a número y hacemos print de número
nos tendría que devolver un doce. Cosas que tenemos que tener
en cuenta con return es que cuando llegamos al return
se finaliza la ejecución de la función entonces si aquí
tuviéramos más de cosas como por ejemplo un print
esto me gusta que saliera y esto lo definimos
cuando ejecutamos esto vemos que el print esto me gustaría
que saliera no se va a ejecutar nunca porque está detrás
de un return además en la medida de lo posible queremos,
debemos de tener un solo return por función si tenemos varios
caminos va a base de ifs o fors o cualquier cosa que vayan
devolviendo valores una una opción que no es muy elegante
tener un return en cada final del camino que nos
devuelva un valor o otro pero es más difícil de controlar que
si simplemente tenemos un solo return al final
que nos devuelva el valor resultado y lo que vamos haciendo
es en una variable ir guardando los cambios de valor, de esta
forma es más fácil de controlar porque el programa siempre
va a ejecutarse del principio al fin la función se va a ejecutar
siempre de principio a fin y esto nos control nos servirá
para evitar problemas como este y luego además se pueden volver
a devolver varios datos separados por coma por ejemplo aquí
este return total además podríamos devolver
mi mensaje, veis separados por coma, entonces aquí el número
podría poner número coma mensaje entonces lo que hemos hecho ha sino en
la variable número guardar el total y en la variable mensaje
guardar mi mensaje entonces cuando hagamos print número podemos hacer
también aquí print mensaje
y al ejecutar
número mensaje es igual a más de cinco y siete
¿Por qué? Porque no he definido esto, perdón. Vale, ejecutar. Ahora sí. No entendía
el error y era porque no habíamos guardado el cambio aquí
ahora vemos que bien en número tengo el doce y el mensaje tengo
mi mensaje esto es así se puede hacer pero yo no lo recomiendo
porque puede pasar que luego nosotros tengamos más adelante
61
simplemente este trozo de código, nuestra función suma la
tengamos en otro sitio o la estemos usando de otra librería y
nosotros aquí en mensaje tenemos esto pero ¿Qué pasa si tenemos
esto? y ejecutamos vemos nuestro print la función ha funcionado normal
y vemos que dentro de número tenemos la tupla doce y mi mensaje.
Es más difícil de controlar el resultado que
y es más difícil de manejar. Cuando queramos hacer esto en
lugar de devolverlo como una tupla así lo conveniente es crear
un objeto que tenga cada uno de los elementos que queramos
devolver y tratarlo de forma independiente dependiendo del
tipo de objeto y cada uno de los elementos que queramos volver.
Y esto es todo. Muchas gracias.

Si quieres puedes descargar el texto de el Jupyter notebook utilizado. Para reproducir el proceso


paso a paso puedes hacer click con el botón derecho del ratón para descargar el Jupyter
notebook y ejecutarlo en local (recuerda usar "guardar enlace como" para guardarlo con
extensión .ipynb para abrirlo luego con Anaconda) o conectarte al Binder de la lección para
ejecutarlo en la nube.

Python – Los módulos. (Video 34) https://youtu.be/W-MGji06dE4


Video 34 Python – Los módulos.

Hola en este vídeo vamos a hablar sobre los módulos en Python.


Igual que vimos en uno de los dos vídeos anteriores como las funciones serán recetas
en Python. Los módulos son libros de recetas, conjuntos de recetas que están
organizadas por, en dentro de un módulo, un libro y estas recetas vamos a poder
acceder a ella fácilmente accediendo a todas las que tienen del libro.
No sé si recordáis que cuando estuve explicando son, las constantes, la librería math
para sacar el valor de pi. Para usar esta librería, en la librería matemática de Python
necesitamos importar esta librería con el comando import. Entonces, import y la librería
queremos usar y una vez hemos hecho esto ya podemos usar todas las funcionalidad
de esa librería, de ese módulo. Entonces, podemos usar el comando help para ver las
funciones y constantes que vienen con la librería. Y si os dais cuenta que nos dice el
nombre de la librería y distintas funciones que podemos usar. Como veis casi todos
son funciones matemáticas.
Entonces, una vez ya tenemos el módulo del libro de recetas podemos usar las recetas
de otros. Por ejemplo, podemos calcular el coseno de pi y para ello simplemente
tenemos que llamar a la función coseno de math. Y a la constante pi que está
declarada dentro de math. No tenemos que crear nuestra propia función coseno, ni
nuestra propia función pi. Podemos usarla que han hecho otros, no tenemos que
reinventar la rueda. Pero a veces el módulo no está. Por ejemplo, si intentamos
importar orange
tres, vemos que nos da un error el ModuleNotFound. Estos
errores ocurren cuando estamos intentando importar un módulo
que en nuestra versión de Python, en una instalación de Python
no está instalado. Y hay distintas formas de instalarlo. Uno
62
de ellos es con el gestor de paquetes anaconda.
Anaconda cuando nosotros aquí tenemos environments
y dentro en environments tenemos el entorno que tenemos activado. Este
de aquí, el base. Veis aquí, pone instalada y son todos los
módulos que tiene instalados este entorno, aquellos que podemos
usar. Si veis en not installed, os salen distintos módulos
en este caso no están instalados: Glueviz, orange tres, rstudio.
Si queremos instalar orange tres para poder usar, pues seleccionaríamos
y le diríamos apply aquí. Otra forma de instalarlos
es usando conda. Nosotros desde aquí podemos abrir un terminal.
En este terminal podemos acceder a la funcionalidad anaconda
desde el terminal, con la palabra conda. Y veis que nos da una serie
de opciones. Para instalar un paquete, simplemente sería conda install
y el nombre del paquete, en este caso orange tres.
Lo ejecutáramos esto instalaría el paquete, luego podemos
hacer. Si veis tenemos más opciones como hemos hecho conda
nos da todas las opciones y todas las cosas que podemos hacer.
Con conda list nos muestra los paquetes que hay
en el entorno y con conda uninstall se pueden desinstalar
paquetes y update y upgrade sirven para actualizarlo.
Y por último, y no por ello menos importante podemos
instalar módulos usando pip.
Cuando nosotros instalábamos Python y sobre todo en otros entornos que
no tienen conda vienen con una librería se llama
pip y es muy similar a conda como gestor de paquetes y podemos
hacer pip install o pip list. Por ejemplo, con pip list esto
nos mostrará la lista de paquetes que tenemos instalado, todos
ellos con su número de versión. Si queremos a instalar un
paquete en concreto pip install, el nombre del paquete y el
número de versión. Todo esto es muy útil para cuando queremos
instalar un módulo o un paquete que no tenemos disponible.
Esto es todo sobre la gestión de módulos y paquetes.

Si quieres puedes descargar el texto de el Jupyter notebook utilizado. Para reproducir el proceso


paso a paso puedes hacer click con el botón derecho del ratón para descargar el Jupyter
notebook y ejecutarlo en local (recuerda usar "guardar enlace como" para guardarlo con
extensión .ipynb para abrirlo luego con Anaconda) o conectarte al Binder de la lección para
ejecutarlo en la nube.

Python – Los paquetes y espacios de nombres. (Video 35)


https://youtu.be/0n_LDDEA0l4
Video 35 Python – Los paquetes y espacios de nombres.

Hola en este vídeo vamos a hablar sobre los paquetes y espacios


de nombre en Python. Como vimos en el vídeo anterior, por un lado
63
están las funciones que son común recetas. Y luego
están los módulos que son libros de recetas y los paquetes
que son estanterías llenas de libros de recetas.
Y una cosa que tenemos que tener claro es los espacios de nombre.
Tú cuando quieres ver una receta es importante saber
que la receta es la de un libro en concreto o la de otro. Porque
a lo mejor dos libros tienen la misma receta sobre cómo hacer
una hamburguesa pero no las dos van a ser igual, no las dos
te van a gustar igual. Y no es lo mismo una hamburguesa como
veis aquí que una hamburguesa en otro restaurante.
Normalmente un módulo que es un archivo punto py y que tienen
la funcionalidad que queremos tener que es nuestro libro de
recetas. Pues es simplemente como podemos ver aquí un ejemplo. Este
tenemos, hemos escrito un libro de recetas punto py. En el cual,
hemos definido una constante de gravedad nueve coma ocho y
una función suma que tiene dos parámetros y devuelve el valor
de la suma. Esto sería un ejemplo de un módulo muy sencillo
que habríamos hecho nosotros y queremos tener varios módulos
para organizar nuestros distintos libros de recetas.
Entonces, necesitamos crear una carpeta, como por ejemplo esta
que llamado estantería. Y si veis esta carpeta empieza con
un archivo que tiene dos guiones bajos, init, los guiones bajos
punto py. Ese archivo no hace falta que tenga nada, pero ese
archivo le está diciendo a esta carpeta que es un paquete. Entonces,
Python cuando vea ese archivo sabe que tiene tratarlo como
un paquete y que todos los módulos que están aquí dentro
pertenecen a ese paquete. Entonces, nosotros igual que hacíamos
import del del módulo podemos hacer import del paquete y lo
que nos traeremos serán todos los libros de recetas que están
dentro del paquete.
Organizando nuestro código. Todo el sistema de
módulos, paquetes, funciones es importante tener más o menos
claro cómo funciona porque cuando nosotros empezamos a trabajar
con proyectos más grandes.
Lo normal es tener una estructura de módulos, paquetes y subpaquetes
organizando según la funcionalidad que tengan para facilitarnos
cómo trabajar. Pues aquí, por ejemplo,
estoy usando el libro de recetas dos, que es el módulo que
teníamos. Y el libro de recetas uno de la estantería.
Entonces, yo puedo ver que es esta, esta variable CONST que hay
en el libro de recetas dos y esta variable CONST que hay en el
libro de recetas uno de la estantería. Si os dais cuenta, aunque
se llaman igual no contienen lo mismo, esto es lo que decía
de las hamburguesas hace un momento. Entonces, cuando nosotros
vamos a organizar nuestro código en un proyecto más grande
lo normal es tener por un lado una fuente de, para una carpeta source.
Donde vamos a tener todos nuestros scripts una carpeta assets
64
o de imágenes donde tendremos las imágenes, los archivos
de traducción y dentro de esta carpeta de fuente lo normal es
en organizar por carpetas según la funcionalidad.
Por ejemplo, aquí en este ejemplo tenemos funciones auxiliares
donde tengo auxiliares matemáticas y para trabajar con fechas,
paquetes de visualización para las gráficas y las plantillas,
paquetes de datos con todas las transacciones de datos y luego
tengo un módulo principal que es el que ejecutamos cuando
ejecutamos nuestro script. De esta forma, organizándolo así
luego para mí es mucho más fácil encontrar algo cuando falla.
Porque es exactamente pues está fallando una
gráfica pues que tengo que venir aquí y no tengo que recorrerme
un solo archivo muy grande con todo el contenido. Y esto no
facilita nuestro trabajo mucho.
Esto es todo en este vídeo.

Si quieres puedes descargar el texto de el Jupyter notebook utilizado. Para reproducir el proceso


paso a paso puedes hacer click con el botón derecho del ratón para descargar el Jupyter
notebook y ejecutarlo en local (recuerda usar "guardar enlace como" para guardarlo con
extensión .ipynb para abrirlo luego con Anaconda) o conectarte al Binder de la lección para
ejecutarlo en la nube.

Para esta práctica, si trabajáis en local, tendréis que descargar (pulsando el botón derecho del
ratón) en el directorio de trabajo de python los
ficheros libroderecetas.py, libroderecetas1.py y libroderecetas2.py  (no os olvidéis de cambiarle la
extensión a .py en todos) y crear la carpeta estanteria en el mismo directorio, copiando dentro los
ficheros libroderecetas1.py y libroderecetas2.py y creando en ella un fichero sin contenido con
nombre __init__.py (con 2 barras bajas delante y detrás de init).

Si al principio de curso habéis descargado el paquete máster con todos los notebooks del curso,
los ficheros estarán en el paquete.

Python - Funciones desde objetos. (video 36) https://youtu.be/voFG9pF9X-g


Video 36 Python – Funciones desde objetos.

Hola. En este vídeo vamos a hablar sobre funciones desde objetos una de las cosas
que podemos hacer en Python es que las variables sean las que llaman a las
funciones. Esto vamos a verlo ahora.
Luego y otra de las cosas que se pueden hacer es encadenar llamadas de variables
ahora mismo veremos un ejemplo de cómo sucede esto. Por ejemplo, yo tengo mi
texto
en el que guardo "el perro de san roque no tiene rabo"
como el texto es de tipo string, de tipo cadena, será lanzamos
la ayuda de las cadenas vemos aquí que tiene una serie de
funciones, entre esta funciones, por ejemplo, la función title
lo que hace es poner el principio de cada palabra en mayúsculas
 y aquí puedo hacer string punto title y mi texto
pero tal y como está tal y como funciona Python como mi texto
65
también es un string puedo llamarlo directamente el punto
title desde mi texto y hacer mi texto punto que title el resultado
va a ser el mismo que hacer string punto title
con mi texto. Si os dais cuenta "El Perro De San Roque No Tiene Rabo"
le ha puesto también las mayúsculas. Si yo quitara esto
desaparecen las mayúsculas, ¿vale?
¿Qué se puede hacer con esto? Aparte de aportarnos nuestro
código mucho porque si os dais cuenta de esto de aquí a esto de
aquí hemos reducido un poquito y se ha hecho mucho más simple
nos permite encadenar llamadas porque ¿Qué pasa? Esto que tenemos
aquí en mi texto punto title también es una cadena lo que nos
está devolviendo esto es una cadena como veis aquí que empieza
y acaba en comillas entonces nosotros podemos encadenar llamadas
por ejemplo las cadenas también tienen una función que se
llama replace que lo veremos más adelante que sirve para sustituir
unas palabras por otras y entonces yo puedo cambiar San por
Mister y poner y lanzar y esto también genera
una cadena entonces tendríamos esta función que crea un string
y a esa string le llamamos el title lo vemos por partes primero
vemos que haciendo el repalce éste que he dicho dice "el perro
de mr roque que no tiene rabo" pero a esto le puedo poner justo
después title entonces le añade las mayúsculas podría seguir
poniendo puntos ya llamando y encadenando funciones de llamadas
siempre y cuando el parámetro de entrada de esas funciones
seguirá siendo un tipo de string.
Y esto es una de las formas que podemos utilizar
para trabajar con funciones en Python. Esto es todo.

Si quieres puedes descargar el texto de el Jupyter notebook utilizado. Para reproducir el proceso


paso a paso puedes hacer click con el botón derecho del ratón para descargar el Jupyter
notebook y ejecutarlo en local (recuerda usar "guardar enlace como" para guardarlo con
extensión .ipynb para abrirlo luego con Anaconda) o conectarte al Binder de la lección para
ejecutarlo en la nube.

Práctica 5.1 Función holamundo()


Práctica 5.2 Función miconcatena()
Práctica 5.3 Función cuentapalabras()
Práctica 5.4 Módulo constantes

Resumen
En el módulo hemos introducido el concepto de función como mecanismo de
reutilización de código y cómo pasarle parámetros a una función y hacer que devuelva
resultados. También hemos visto como agrupar las funciones en módulos y paquetes
para estructurar nuestro código y para incorporar código de otros programadores con

66
facilidad. Finalmente hemos tratado la notación orientada a objetos que podemos usar
en Python para llamar a ciertas funciones.

Módulo 6 - Trabajando con texto en Python


Introducción
Bienvenidos al módulo sobre cadenas de texto.

El módulo incluye cuatro prácticas (dos que cuentan para el progreso del curso y otras
dos que no), un examen de prueba y un examen de módulo. Si no has solicitado el
certificado no podrás acceder al contenido evaluable, con lo que no tendrás acceso a
las prácticas evaluables ni al examen de módulo, aunque puedes descargarte el
fichero máster con todas las prácticas de la sección de recursos de la página inicial del
curso y realizarlas sin que sean evaluadas.

El tiempo estimado para completar este módulo son 5 horas y el tiempo de visionado
de los vídeos alrededor de 36 minutos.

En el módulo hablaremos de las cadenas de texto, de cómo se almacenan en memoria


y de cómo pueden manipularse. Veremos como extraer un trozo de una cadena, cómo
encontrar una cadena en otra (por ejemplo, una palabra en una frase) y como
manipularla con diversas funciones que nos permiten convertirla a mayúsculas o
minúsculas, dividirla en varios trozos o quitar los espacios del principio y del final, por
ejemplo. Finalmente hablaremos de los códigos de caracteres y de la importancia de
manejarlos correctamente a la hora de trabajar con ficheros de texto.

En las cuatro prácticas del módulo crearemos funciones para cambiar todas las
apariciones de primera letra de una frase por otra, concatenar dos cadenas cambiando
parte de ellas, insertar una cadena en el medio de otra o cambiar las mayúsculas por
minúsculas en una cadena.

Python - ¿Qué son las cadenas de texto? (video 37)


https://youtu.be/qt6VOKfXTFg

¿Qué son las cadenas de texto? Durante todo el curso hemos usado
cadenas de texto y hemos estado hablando de ellas de forma
un poco por encima sin llegar a profundizar en
esto. En este vídeo vamos a hablar sobre ellas.
Aquí lo tengo, las cadenas por ejemplo en el vídeo
anterior hablábamos sobre el refrán el perro de San Roque no
tiene rabo y lo que hacía esa, esa cadena de texto que
empieza por comillas dobles al principio al final.
Esto es un conjunto de caracteres uno detrás de otro encadenados
que se guardan dentro de una variable. Si os dais cuenta, pueden
empezar por comilla doble o por comilla sencilla.
Este otro, es otra cadena de texto porque Ramón Rodríguez
se lo ha robado, terminando el refrán. Una de las operaciones más
67
comunes que se hacen con cadenas de texto es concatenar las,
poner una detrás de la otra. Para ello se usa el símbolo más.
Entonces, podemos tener la variable refrán que teníamos con
el perro de San Roque no tiene rabo y luego porque Ramón Rodríguez
se lo ha robado. Entonces, esto completaría nuestro refrán.
Pues si nosotros vemos que es lo que dentro del refrán.
Vemos que pone el perro se San Roque no tiene rabo porque Ramón
Rodríguez se lo ha robado. Si os dais cuenta que me he puesto una, un
mensaje con un comentario cuidado con los espacios.
Esto es porque si os dais cuenta, aquí no hay ningún espacio
igual no acaba tampoco hay ningún espacio. Es símbolo más
no añade nada en medio de las dos cadenas simplemente coge
una cadena y al final añade la otra entonces si nosotros queremos
que estén separadas tendremos que o bien poner espacios o
bien usar otro, otro comando que no sea simplemente la concatenación
con más. Vale, otra cosa muy importante sobre las cadenas es
que cuando nosotros estamos trabajando con cadenas en Python
muchas veces pasa como vemos aquí que las líneas de código son
muy largas. Esto en esta pantalla que tiene buena resolución
se va a ir bien pero si tuviéramos la mitad de espacio esto
empezaría a descuadrarse y no sabríamos dónde empieza la línea
donde acaba la línea y esto es un problema en Python porque
saber dónde empiezan y acaban las líneas es muy importante
para saber dónde estamos y qué estamos haciendo. Entonces,
la contrabarra nos ayuda organizarnos como pone este título.
Nosotros esta frase de el perro de San Roque no tiene rabo porque Ramón Rodríguez
se lo ha robado, esto es un refrán típico en España. Lo
podemos separar en varias líneas de código usando la contrabarra.
Si os dais cuenta, aquí tengo un trozo de cadena, contrabarra otro
trozo de cadena, contrabarra otro trozo de cadena. Entonces, con
esto puedo añadir saltos de línea dentro de mi declaración
de la cadena. Cada trozo tiene su principio y su fin con comillas
y nosotros le indicamos a Python con esta contrabarra de que lo
que va a debajo es la continuación de esta cadena. Entonces,
si yo ejecuto esto.
Y hago así. Vemos que a pesar de que está en varias líneas para
Python sigue siendo una sola línea, porque esto es simplemente
una forma organizarnos. Entonces, cuidado con, es muy importante
tener cuidado con añadir texto después de las contrabarras.
Por ejemplo, si yo aquí añado un espacio
y ejecutó. Veis que nos dice unexpected character después de
la línea continuation character. Esto quiere decir que ha
encontrado caracteres que no esperaba justo después de esta
por barra que es para él el carácter de continuación,
continuation character. Y borramos los espacios que ha añadido
aquí. Y vuelvo a poner la contrabarra, solamente quiero borrar
los espacios, vuelve a funcionar. Entonces, cualquier carácter que
añadamos después de las contrabarras serán problemáticas.
También, la junta de barra nos permite jugar con indentación.
68
Esto quiere decir que nosotros podríamos hacer algo como esto
después de cada contrabarra la siguiente línea empezarla
por donde queramos y no tendríamos que tener en cuenta el
sistema indentación de Python. Esto funciona perfectamente,
a pesar de que funciona yo recomiendo no hacerlo.
Es útil saberlo porque muchas veces queremos por ejemplo,
echar un poco para tras la identación de este trozo respecto
al principio del, de la declaración. Si por ejemplo, lo que tenemos
aquí es muy largo y luego la cadena hace que todo se descuadre
mucho hacia la derecha. Imaginaros que toda la cadena
en lugar de empezar aquí,
empezará a esta altura. Vamos perdiendo mucho espacio de código
y además estamos echando todo el código a la derecha lo cual
no nos es cómodo. Nos permite jugar en este sentido
y podemos por ejemplo, organizarnos así aprovechando mejor
el espacio. Pero, no os recomiendo que tengáis unas líneas un
poco más a la derecha, otras más a la izquierda. Porque luego
cuando estéis mirando el código será complicado.
¿Y si queremos añadir saltos de línea? Os acordáis de esto que
hemos hecho de que lo añadido como una sola línea. En Python
tenemos dentro de las cadenas el carácter barra ene, que nos
permite añadir saltos de línea.
Entonces, si yo declaró esto y lo imprimo, vemos que donde hemos
puesto un barra ene nos añadir un salto de línea. En este
caso el barra ene lo hemos hecho coincidir con el final
lo cual nos ha permitido formatearlo como nosotros
queríamos. Otra forma de trabajar con cadenas en multilinea es
usar las tres comillas. Y esta, pero estas tres familias tener mucho
cuidado porque al principio y al final ponemos tres comillas.
Todo lo que hay dentro será una cadena, pero todo lo que hay
dentro es todo lo que hay dentro. Si nosotros formateamos con
tabulados aquí dentro ese formateado, luego aparecerá también
en la cadena. Porque tanto los espacios como los tabulados que
pongamos aquí Python lo va a reconocer como parte de la cadena.
Los saltos de línea también, entonces teniendo en cuenta eso
y teniendo un poco de cuidado el sistema de tres
comillas nos ayuda a simplificar mucho el uso de cadenas de
muchas líneas. Pero hay veces, que no nos es útil porque nos
descuadraría mucho el código y esto es todo sobre cadenas.
Si quieres puedes descargar el texto de el Jupyter notebook utilizado. Para reproducir el proceso
paso a paso puedes hacer click con el botón derecho del ratón para descargar el Jupyter
notebook y ejecutarlo en local (recuerda usar "guardar enlace como" para guardarlo con
extensión .ipynb para abrirlo luego con Anaconda) o conectarte al Binder de la lección para
ejecutarlo en la nube.

Python - Trabajando con cadenas. (video 38)


https://youtu.be/F0nyW8Buqck
Hola, a continuación vamos a hablar sobre trabajando con cadenas. En el vídeo
anterior las presentado las cadenas, vimos algunas de las funcionalidades más
69
básicas que tenía como la concatenación y cómo declarar cadenas de una línea o con
muchas líneas. Pero hay veces que queremos acceder a parte de la cadena o hacer
cosas con ella como por
ejemplo, cambiarla por un cordón.
Os acordáis de nuestro refrán el perro de San Roque no tiene rabo.
Lo hemos acortado un poco para que sea más corto yo hablando. Una de las
funciones principales que usaremos muchas veces es la función len, a la cual le
ponemos dentro el nombre de la cadena o la lista de caracteres.
Entonces, esto nos dice cuál es la longitud de la cadena treinta y nueve caracteres.
Desde aquí hasta el final hay treinta y nueve letras una detrás de otra, incluyendo los
espacios. Podemos acceder a cualquiera de estos caracteres
eligiendo el, el orden en el que está. Por ejemplo, empezando
por cero la e sería el cero,
el uno, el espacio este es el dos y así hasta el treinta y
nueve. ¿Hasta el treinta y nueve? Ahora veremos.
Si veis yo con refrán y entre corchetes el cero accedo a la e.
Pero, entre refrán y entre corchetes treinta y nueve me
un error. Este error dice el índice de la cadena está
fuera del rango. Esto es porque si bien la cadena tiene treinta
y nueve elementos empezamos a contar por el cero el treinta
y nueve realmente está justo después de estos puntos está
fuera de la cadena. El último elemento de la cadena es treinta
y nueve menos uno el treinta y ocho. Esto nos va a mostrar un punto.
Otras cosas que se puede hacer con los corchetes es mostrar
trozos de la cadena. Por ejemplo, usando los dos puntos en medio.
Entonces, corchete el principio del trozo que queremos buscar,
el índice dos puntos y el final del trozo que queremos buscar.
Si os dais cuenta aquí estamos viendo los diez primeros caracteres
de la cadena el perro de. Podemos empezar en el diez y el veinte
san roque, san roqu. Y esto está asumiendo
que este es el principio y este es el final. Si no ponemos nada,
esto va a ser el principio de la cadena el cero.
Podéis pensar que no es muy útil, pero si no podemos
nada aquí esto va a considerarlo el final de la cadena. Entonces
esto va a ir del veinte hasta el final. Es mucho más útil,
porque cero va a ser siempre cero, pero al final no tenemos
por qué hacer un len de la cadena restarle uno y ponerlo ahí
podemos dejarlo en blanco. Otra de las cosas que podemos hacer,
es con el menos diez lo que estamos diciendo es que coja desde
el principio hasta el final menos los diez últimos caracteres.
Por eso el perro de San Roque no tien y se ha comido los diez
últimos caracteres. Lo otro que podemos hacer es, empezar
diez caracteres hasta el final con esta combinación de aquí.
Con el menos diez le decimos que queremos desde los diez últimos
caracteres y no poniendo nada hasta el final.
Esto nos pone esto de aquí. Esto son formas de acceder a distintos
trozos de la cadena.
70
Si quieres puedes descargar el texto de el Jupyter notebook utilizado. Para reproducir el proceso
paso a paso puedes hacer click con el botón derecho del ratón para descargar el Jupyter
notebook y ejecutarlo en local (recuerda usar "guardar enlace como" para guardarlo con
extensión .ipynb para abrirlo luego con Anaconda) o conectarte al Binder de la lección para
ejecutarlo en la nube.

Python -Funcionalidad de las cadenas. https://youtu.be/NkjBwEP1z-w

Hola, seguimos con la serie de videos sobre trabajar con cadenas.


En este vamos a ver funcionalidad de las cadenas.
Cuando hablamos sobre funcionalidad es que podemos hacer con las cadenas
aparte de acceder a trozos de cadena o definir las. Cosas más
complejas que se pueden hacer. Entonces, seguimos con nuestra
cadena de ejemplo, el refrán. Y vemos que podemos acceder a funcionalidad
más compleja y podemos ver que funcionalidades usando el comando
help. Pero si os dais cuenta cuando usamos el sobre el
sobre el refrán sobre nuestra variable refrán nos dice no
hay documentación de Python para esto. Sino podéis usar
help sin nada o help str porque yo considero que lo que
quieres hacer es esto. Porque como él ha reconocido que es una
cadena nos da ese aviso. Hacemos help str y aquí nos
da toda la funcionalidad que tenemos en las cadenas. Además, aquí
en la documentación de Python, en este enlace de aquí lo cual
vale abajo en en el vídeo. Podéis hacer a toda
la documentación de todas las funcionalidades que vamos a
ver ahora y alguna más. Pero estás son las más usadas.
Punto lower se usa para pasarlo toda a minúsculas. Si os dais
cuenta la cadena original la e del perro y la
ese y erre de San Roque venía mayúscula, con punto lower lo
que hemos hecho ha sido pasarlo todo a minúscula. Al contrario
con punto upper lo pasamos toda mayúsculas.
Con punto capitalize lo que hace es poner en mayúscula la primera
letra de la línea en este caso solamente la e.
Luego, tenemos replace, esta la vais a usar mucho seguramente que sirve
para sustituir lo que pongamos en la primera, en el primer parámetro
todas las apariciones de lo que se ponga el primer parámetro
por lo que pongamos en el segundo parámetro. Entonces,
si lo hacemos así ahora el perro de San Roque si tiene rabo.
Con find lo que nos hace es buscar una palabra
o una o un carácter y nos indica en qué posición de la cadena
está. Por ejemplo, aquí con Roque lo que nos está diciendo es
que esta cadena, este trozo de cadena sí que está dentro de
de la cadena refrán y empieza en el carácter dieciséis. Si nos
acordamos del video anterior nosotros podríamos hacer, refrán
desde el 16 hasta el final. Y esto veis empiezan en Roque que es exactamente
71
esto es lo que nos ha encontrado. Y luego aquí,
el final pusiéramos dieciséis más la longitud
de Roque.
Esto es algo que hace mucho. No exactamente así, pero veis estamos
cogiendo exactamente el trozo de cadena que pertenece al
desde el principio hasta lo, lo que ocupe nuestro trozo de cadena
Luego tenemos find con roque minúscula y esto nos devuelve
un menos uno. Cuando devuelve un menos uno quiere decir que
este trozo de cadena no lo ha encontrado. Esto es porque Python
distingue en el find las mayúsculas de las minúsculas. Una de
las cosas que podemos hacer y haremos cuando estemos buscando
algo es pasarlo todo a minúsculas. Entonces, haremos
refrán punto lower punto find de roque
y ahora si nos devuelven el 16. Si queremos asegurarnos, como esto
es una cadena lo normal es aquí ponerle otro punto lower.
Nos sigue devolviendo dieciséis pero independientemente de
lo que hay aquí. Pero lo habremos pasado todo minúsculas haya estado
en minúsculas no tendremos problemas de no lo encontrado porque
había una mayúscula en medio. Luego si os dais cuenta, aquí al final
de los puntos hay unos espacios, esos espacios para algunas
cosas son problemáticos porque hacen que se te rompan algunas
cosas. Lo veremos en unos vídeos más adelante de ejercicios y
para quitar esos espacios tanto al principio como al final
tenemos la función strip. Esta función strip lo que hace
es quitar esos caracteres, esos espacios, algunos saltos de línea
del principio y el final de la cadena. Y la función split
lo que hace es partir la cadena en palabras. Si os dais cuenta,
esto me ha creado una lista con una palabra para cada elemento
de la cadena. Esto es también muy, muy útil para cuando nosotros
por ejemplo, quisiéramos contar palabras. Podríamos hacer un
split y luego contar las palabras que dentro de la cadena.
Pero el split permite un parámetro, en este caso usado no. Pero podemos
usar cualquier elemento de nuestra cadena. Entonces, en este
caso si ponemos split con el no. Lo que hace es escoger este,
estos caracteres que hemos usado como elemento de split los
quita de la cadena y parte la cadena en ese punto. Entonces,
si os dais cuenta tenemos este trozo de cadena aquí.
El no desaparece porque es nuestro carácter de split y
luego tenemos este trozo de cadena en este otro lado.
Esto es muy útil para hacer una serie de operaciones cómo
organizar las cadenas o ,por ejemplo, si queremos buscar fechas
y tenemos un campo dice fecha dos puntos. Pues podemos hacer una
split coger todo lo que es fecha dos puntos, ponerlo por un lado
y lo que viene después suele ser la fecha. Esto se hace mucho. Y esto
es todo sobre este tema.

72
Si quieres puedes descargar el texto de el Jupyter notebook utilizado. Para reproducir el proceso
paso a paso puedes hacer click con el botón derecho del ratón para descargar el Jupyter
notebook y ejecutarlo en local (recuerda usar "guardar enlace como" para guardarlo con
extensión .ipynb para abrirlo luego con Anaconda) o conectarte al Binder de la lección para
ejecutarlo en la nube.

Python - Extraer trozos de una cadena. (video 40)


https://youtu.be/DoD0rdBEePI
Hola en este vídeo vamos a ver cómo extraer trozos de una
cadena, esto es un ejercicio muy común a realizar en python
y mejor verlo con un ejemplo.
Aquí tengo un ejemplo
y el ejercicio nos dice así, estamos trabajando una serie de
datos los cuales vienen almacenados en cadenas del tipo categoría
dos puntos, valor numérico como por ejemplo esta de aquí dato
del problema y tenemos el peso, dos puntos y un valor numérico
ochenta y dos coma tres.
Nos pide el, el enunciado crea una función que usando el método
find obtenga la posición del carácter dos puntos y en el return
devuelva un float con el valor contenido tras dicho carácter.
Vale aquí tenemos una declaración de una función con
tu código aquí que lo tendremos que rellenar, aquí tengo
un puede probarlo aquí que esto si lo ejecutamos ahora mismo
nos da un error porque esta función no la hemos definido, podemos
definir y ahora no hará nada
y dice si lo ha hecho bien la siguiente instrucción no debería
dar errores, si lanzamos esto vemos que ahora mismo nos dice
ejercicio incompleto está dando errores, vale.
Pero vamos a ver que es lo que tenemos, nosotros dice encuentra valor
dato y tenemos que usando el método find, find, obtener la posición
del carácter dos puntos vale, lo primero que vamos a hacer
es buscar la posición es igual a dato.find con el carácter dos puntos,
aquí hago un return que puede, de posición
esto lo defino y esto lo ejecuto, ahora vemos que esto nos está
devolviendo un cinco, la posición de los dos puntos es cinco.
Ya hemos hecho la primera parte del ejercicio,
sigamos; Y en el return devuelva un float con el valor contenido
tras dicho carácter vale, el valor contenido tras dicho carácter, valor
es igual a dato
dato y tenemos el contenido tras dicho carácter. Esto quiere
decir, que vamos a partirlo a partir de la posición
¿vale? Entonces, vamos en lugar de devolver esto, vamos a, en lugar
de devolver posición, vamos a devolver valor,
lo guardamos, lo ejecutamos. Nos dice dos puntos ochenta y dos coma
tres. Claro, dice tras dicho carácter exposición más uno.
Lo guardamos,  lo volvemos a ejecutar, ochenta y dos coma tres. Un último
punto que dice es y en el return devuelve un float. Aquí estamos
73
devolviendo un string, una cadena. Por último, lo tenemos que hacer es valor
es igual a float de valor. Lo volvemos a guardar, lo ejecutamos y nos devuelve
un ochenta y dos coma tres ¿vale? Nos dice, si los has hecho
bien, la siguiente instrucción no debería de dar errores. Ejecutamos esto
y vemos que nos dan ningún error, entonces esto quiere decir
que tenemos el ejercicio correcto y con esto lo habríamos hecho.

Si quieres puedes descargar el texto de el Jupyter notebook utilizado. Para reproducir el proceso


paso a paso puedes hacer click con el botón derecho del ratón para descargar el Jupyter
notebook y ejecutarlo en local (recuerda usar "guardar enlace como" para guardarlo con
extensión .ipynb para abrirlo luego con Anaconda) o conectarte al Binder de la lección para
ejecutarlo en la nube.

Los códigos de caracteres https://youtu.be/lN1TzBB4QWA


Hemos incluido este vídeo de otro de nuestros cursos para explicaros el concepto de código de
caracteres.

En esta unidad vamos a hablar de cómo se representan los caracteres


en la memoria de los ordenadores. Realmente el texto
es diferente de los números, porque el texto es una
convención humana, en el cual hay un número finito o determinado
de representaciones de letras y de números que combinamos
para expresarnos. Lo bueno de esto es que como hay un
número finito de caracteres, que es como se llama cada
una de estas letras y números, pues podemos utilizar una tabla
de traducción, que nos diga pues la a a se escribe en
binario uno uno cero uno, la be se escriben binario tal, lo malo
es que pueden haber muchas tablas distintas pueden haber confusiones
al recuperar datos con una tabla que no sea la adecuada.
La tabla más empleada, la más digamos extendida, es el
código ASCII, que es de las siglas en ingles de American
Standard Code for Information Interchange. Es un código que
se desarrolló para las comunicaciones telegráficas y como
en el telégrafo se utiliza punto raya, punto raya, y todas
las letras se representan con puntos y rayas, además de
un tamaño fijo, que son un siete bits, o sea
siete puntos o siete rayas, una combinación de siete
puntos y rayas, fue muy sencillo traducir este código
a binario para usarlo en un ordenador. Aquí tenéis una tabla
de todos los caracteres que se pueden representar en
ascii, que como son siete bits podemos representar ciento veintiocho
caracteres diferentes y aquí están ordenadas para que
en se entiendan mejor los grupos, en este en esta tabla
tenéis en la parte más el alejada de mi tenéis
un grupo de cuatro bits y en la parte de arriba otro grupo
de tres bits, de los tres bits que faltan, ¿porqué?. Pues porque
ahora vamos a ver que de los primeros treinta y dos combinaciones
74
que son los primeros, los tres primeros bytes
de más a la izquierda, 000001, son caracteres
de control caracteres de control que no son imprimibles, se
utilizan por ejemplo para el retorno de carro, o sea para que
vuelva al principio de línea al cambiar de línea, para el cambio
de línea, para el principio de un fichero, son caracteres de
control, luego tenemos que los números
qué es lo siguiente que que vemos con 00011
y luego las otras cuatro cifras se utilizan porque con
esas representamos los números, con los últimos
cuatro bits del código ascii, se representa el valor numérico
de la cifra. Luego tenemos que las letras mayúsculas y minúsculas
solamente difieren en un bit, unas empiezan por
100 y las otras empiezan  por 110,
y luego los cuatro últimos bits corresponden a la mayúscula
o minúscula.
Cambiamos de código, hay otro código que ya cada vez se usa
menos pero que durante un tiempo se usó bastante, que es el
EBCDIC que es un código que inventó IBM para
trabajar con las tarjetas perforadas, que se
utilizaron para programar las primeras, los primeros ordenadores.
Se utilizaba por ejemplo en los main frames, en los ordenadores
de empresa grande de IBM, sistema 360
y básicamente las letras se representaban en tres bloques
como podéis ver ahí en la pantalla y los números siguiendo
el mismo criterio de ascii, mantenían los primeros bits
el valor del número, pero la codificación era algo distinta.
El problema de estos códigos es que son capaces de representar
muy pocos carácteres, el ascii que tenía siete bits, ciento veintiocho
caracteres distintos y que tenía ocho bits, doscientos
cincuenta y seis, esto no es suficiente para incluir
todas las variedades idiomáticas de los distintos
lenguajes que utilizamos los humanos, simplemente en español
no se pueden poner ni los acentos, ni la ñ, ni
la interrogación, un montón de caracteres que son los que
luego dan problemas al convertirse porque la mayor parte
de los códigos de caracteres, los básicos, las letras
y los números, siguen la misma codificación, la de ascii, pero
en cuanto te sales de esos primeros ciento veintiocho ya la
codificación es distinta. Bien, para intentar poder representar
todos los idiomas del mundo se inventó el único de unicode,
es otra tabla de caracteres otro juego de caracteres ampliado
que permite representar todos los idiomas del mundo.
Es un código que es independiente de lenguaje o sea tiene
tablas para los distintos lenguajes como ahora veremos y
tiene espacio suficiente para codificar cualquier lenguaje
del mundo, como veis aquí podéis ver pues en alfabeto
75
occidental, también tenemos en chino, no se
será indonesio, el de en medio, coreano, también el cirílico,
tenemos todo. Bien las características de unicode es que es
universal es uniforme y es único, o sea cada carácter tiene
una codificación única en el código unicode, en cualquiera
de las versiones que haya cada carácter tiene su codificación
única y tiene, y hay unas longitudes de carácter establecidas
de forma uniforme. ¿Cómo se organiza esto?. Unicode tiene tres
de codificaciones principales: UTF-8 es una de ellas,
también UTF-7 y UTF-8 es la que se utiliza normalmente
en la web, los navegadores web suelen
 tener las páginas web codificadas en UTF-8, entonces
por ejemplo aquí podéis ver una página de wikipedia y
en la parte más alejada de mi veréis que
tiene distintos nombre de idiomas con distintos juegos de caracteres,
esto está hecho con unicode.
¿Cómo se codifican los caracteres en unicode? Pues la particularidad es
que tiene una longitud variable, o sea hay caracteres que se
codifican con un byte, que serían digamos los correspondientes
al ascii, son iguales en todos lados, hay caracteres que se codifican
con dos bytes, que son pues las lenguas romance, el griego,
el cirílico, el árabe, todo eso cabe con dos bytes, con la estructura
que veis ahí. Hay unos bits dedicados a indicar
que es una estructura de dos bytes y luego el resto para cada
uno de los caracteres. Ya a el chino, el coreano y el japonés,
que tiene más caracteres, utilizan tres bytes
y algunos caracteres adicionales que
no son de ningún de estos idiomas, utilizan cuatro bytes como
podéis ver en la pantalla siguiente esquema.
Aquí tenéis algunos ejemplos, de por ejemplo de
de representaciones pues el euro, el dólar,
distintas monedas, cómo se codifican, pues con un byte,
con dos bytes, con tres bytes y con cuatro bytes,
y con esto termino.

Ejemplo códigos de caracteres https://youtu.be/5jL1a6H2w8g

Hemos incluido este vídeo de otro de nuestros cursos para que veáis un ejemplo simple de la importancia
de los códigos de caracteres al trabajar con ficheros de texto.

Hola, hemos visto que los juegos de caracteres lo que hacen es traducir
un conjunto de letras a un código binario para que el ordenador
pueda trabajar con ellos y vamos a ver por qué son tan importantes
y cómo nos afecta. Bien aquí tenemos un fichero que es punto
csv que es texto separado por comas, que es un formato
habitual de intercambio de datos en la red. Bien vamos
a abrirlo y el botón derecho del ratón vamos a abrirlo con
76
un editor de texto que se llama notepad plus plus, notepad++,
que es bastante potente, bueno aquí tenéis el fichero,
vamos a ponerlo en pantalla completa, fijaos que están los textos
separados por coma, aqui están los distintos campos y aquí
tenemos un campo de texto, que veis de la atracción gravitatoria
del sol y la luna, la combustión de combustible, la elevada temperatura,
físico, etcétera. Bien esto si nos vamos aquí, a codificación
vemos que el notepad++, que es muy listo, ha detectado
que es UTF sin BOM, este es el que el juego de caracteres
que está usando. ¿Qué pasa si le decimos que es ansi?.
Que es el de Windows, el juego de carácteres de Windows, utf-8 se
suele utilizar mucho en internet y ansi es el de Windows,
fijaos que las letras normales están igual, porque las
mayúsculas, minúsculas, no acentuadas normales y los números,
comparten el mismo código en la mayor parte de los juegos
de caracteres que se usan hoy en día, pero los acentos fijaos
que la o, se ha cambiado, luego la i de físico también, ¿qué pasa?
Que no ha sabído interpretar ansi los acentos,
los bytes que lo representa son distintos en ansi
que en utf, conclusión que si guardáramos esto así ahora
esto ya estaría destruido, ya no nos serviría, este fichero
ya no podríamos trabajar con él, podemos aquí en
notepad++, podríamos, primero decimos que es utf-8
y podríamos cambiarlo, podríamos convertirlo en ansi esto
nos podría servir para meterlo después en un programa que
sólo entiendan ansi,  ¿porqué?. Pues por ejemplo mirad esto, mirad
que pasa si ahora cojo esto y le hago doble clic para que lo abra
el Excel, el Excel lo abre, no sabe interpretarlo bien, para ello
voy a decirle que sí que me interprete bien diciendo aquí
en datos tengo una aplicación que es texto en columnas y le
digo que están delimitados por comas, me va a poner en columnas
de manera mucho más bonita que está y aquí veo que
me ha puesto la o acentuada con una a, i de físico la i de
 químico, todo esto ya no se puede recuperar, si guardamos
este fichero los acentos ya están corrompidos, ¿cómo lo tendríamos
que hacer?. Pues vamos a cerrar este fichero,
cerramos, no guardamos nada, abrimos un archivo nuevo
y ahora importamos con la herramienta importar, está aquí en
datos obtener datos externos, desde el texto
y aquí nos va a decir, aquí en descargas tenemos el mismo
fichero, pero ya nos va a dar la opción, fijaos aquí tenemos los
mismos datos, le decimos que son delimitados porque van separados
por comas como os he dicho, aquí ya lo tenemos, veis que ya me
los está poniendo bien, pero el campo de texto sigue estando
mal. ¿Porqué?. Porque Windows, perdón Excel no es tan listo
como el notepad++ y no detecta, y él cree que es el juego
de caracteres de Windows, Windows ANSI, fijaos lo tenemos aquí,
77
pero si aquí le decimos, fijaos que cantidad de juegos de caracteres,
el MSDOS, luego hay un montón de Árabe hay Centroeuropeos,
Bálticos, Chinos..., vámonos aquí abajo, aquí tenemos  el Europeo Occidental
one, aquí está que mos hemos pasado, el utf-8. Si cogemos
utf-8, fijaos que ya están los acentos bien representados,
si ahora le digo siguiente, con comas, muy bien y le digo que finalizar,
en vez de doce le voy a decir que me lo ponga
aquí en el A1, para que se ponga bien bonito y fijaos que
él ya me lo sabe hacer, me lo pone por campos y aquí están los acentos
bien representados, ¿Qué hubiera pasado si yo, si Excel no
tuviera la opción de interpretar a mano el juego de
caracteres?. Pues tendríamos que haber hecho un paso intermedio
que sería por ejemplo, y lo voy a enseñar, si yo ahora le digo esto
que la codificación la convierta a ANSI
y me lo guarde, con control s, ahora me vengo aquí, perdón que
me he equivocado de tecla, y le doy doble clic para que me habla
Excel y aunque sigue estando si las comas, fijaos que
aquí los acentos ya están bien, si ahora selecciono la columna
me voy a datos y le digo texto en columnas como he hecho antes
y le digo delimitados, con comas, finalizar fijaos que ya...,
esto con Excel no hace falta porque podíamos haber hecho dentro
de excel, pero un programa que sólo entienda ANSI, pues tendríamos que
haberle convertido juego de caracteres a priori para que lo
interpretará y con esto termino.

Códigos de caracteres en Python https://youtu.be/pBTcPb-Cgkg

Vamos a ver cómo trabaja Python o cualquier otro lenguaje de programación con el
texto, cómo se almacena cualquier carácter de texto carácter puede ser una letra, un
número, un símbolo...
Fijaos que la letra 'a', que le vamos a guardar la variable letra, vamos a darle aquí a
run y luego usamos el comando ord que nos da el código de esa letra, realmente lo
que está guardando el lenguaje de programación en memoria es un número que
representa esa letra en el juego de caracteres que está utilizando. En este juego de
caracteres el número noventa y siete representa la letra 'a' minúscula. Si cambiamos a
la 'a' mayúscula y ejecutamos otra vez esta celda vemos que el código de la 'a'
mayúscula es sesenta y cinco. Si ponemos el carácter 1 pues vemos que el código es
cuarenta y nueve o si ponemos el carácter de exclamación, veremos que el código es
treinta y tres. Bien, también podemos hacer lo contrario, podemos obtener la letra
correspondiente a un número de código si pinchamos aquí y le damos a run, vemos
que el sesenta y cinco es la 'a' mayúscula y pues cualquier otro carácter por ejemplo si
ponemos ochenta y nueve pues es la y griega mayúscula.
Bien también podemos ver todos los códigos de los caracteres de una cadena, por
ejemplo la cadena el perro de roque, utilizamos un for, for letra en cadena y print el
número de esa letra, el código que corresponde a esa letra.

78
Si os fijáis aquí hemos añadido el print, una coma y un end igual a espacio para que en
vez de sacarnos un número por línea nos los ponga todo en la misma línea, de esta
forma podemos cambiar el comportamiento de print y que en vez de cada vez
que imprima acabe con un salto de línea, pues acabe con otro
carácter, en este caso hemos puesto un espacio, de esta forma
como ya le he puesto run pues fijaos que tengo aquí
la 'e' mayúsculas el sesenta y nueve la 'l' minúscula el ciento
ocho el espacio treinta y dos la 'p' el ciento doce, la 'e'
minúscula el ciento uno y así todos los caracteres de la
cadena. Y quiero acabar comentando que podemos utilizar esta
forma de almacenar los caracteres para encriptar un mensaje,
de una forma muy sencilla con una encriptación por desplazamiento
que también se conoce como cifrado césar, aquí tenéis el
enlace de wikipedia, porque lo utilizaba César el emperador
para cifrar sus mensajes en vez de con el código de caracteres del
el ordenador como en este caso, utilizaba el número de letra
en el alfabeto. Fijaos que aquí tenemos la cadena 'el perro
de roque' y vamos a crear una cadena codificada con un desplazamiento
de cinco. La cadena codificada la empezamos vacía y luego para
cada letra dentro de la cadena la cadena codificada sería
igual a la cadena codificada que teníamos antes más el carácter
correspondiente al código de la letra más el desplazamiento.
Y aquí tenemos la cadena decodificada, aquí he metido codificación
y decodificación en el mismo programa, aquí vemos que para
cada letra en la cadena ya codificada, de acuerdo, la cadena
decodificada será la cadena decodificada más el carácter
correspondiente al código de la letra menos el desplazamiento
porque aquí estamos deshaciendo lo que habíamos hecho en
la cadena codificada, aquí ya lo tenemos hecho, voy a darle
run para que lo veáis, fijaos que la cadena original es 'el perro
de roque' si desplazamos cinco todos los caracteres nos
queda esto y si con esta cadena volvemos a desplazar menos
cinco volvemos a tener el perro de roque. Si cambiamos el código,
o sea el la cantidad de caracteres que nos desplazamos a siete
veréis que la cadena de en medio cambia, veis aquí tenemos
otra codificación pero como sabemos que nos hemos desplazado
siete nos volvemos a desplazar menos siete y volvemos a obtener
el original con esto hemos visto cómo trabaja Python con los
códigos de caracteres.

Si quieres puedes descargar el texto de el Jupyter notebook utilizado. Para reproducir el proceso


paso a paso puedes hacer click con el botón derecho del ratón para descargar el Jupyter
notebook y ejecutarlo en local (recuerda usar "guardar enlace como" para guardarlo con
extensión .ipynb para abrirlo luego con Anaconda) o conectarte al Binder de la lección para
ejecutarlo en la nube.

79
Práctica 6.1 Función cambiaprimera()
Práctica 6.2 Función concatenamal()
Práctica 6.3 Función enelmedio() (no evaluable)

En este apartado os proponemos un ejemplo práctico para que podáis practicar lo aprendido.

Este ejercicio es autoevaluable y no cuenta para la calificación del curso.

Hemos creado una instancia en la plataforma Binder, que permite crear y ejecutar de forma
remota código sin necesidad de crear un usuario. Podéis acceder al entorno de desarrollo en
Binder pinchando en el logo que aparece a continuación.

Binder (mybinder.org)

Si habéis instalado Python y queréis realizar la práctica en vuestro entorno local también podéis
hacerlo. Tenéis que descargar el siguiente fichero comprimido y descomprimirlo en una carpeta
de vuestro ordenador.

fichero

Ejercicio - Jupyter Notebook (mybinder.org)

Las instrucciones para realizar la tarea están en el mismo fichero de la práctica.

Práctica 6.4 Función cambiamayus() (no evaluable)


En este apartado os proponemos un ejemplo práctico para que podáis practicar lo aprendido.

Este ejercicio es autoevaluable y no cuenta para la calificación del curso.

Hemos creado una instancia en la plataforma Binder, que permite crear y ejecutar de forma
remota código sin necesidad de crear un usuario. Podéis acceder al entorno de desarrollo en
Binder pinchando en el logo que aparece a continuación.

Binder (mybinder.org)

Si habéis instalado Python y queréis realizar la práctica en vuestro entorno local también podéis
hacerlo. Tenéis que descargar el siguiente fichero comprimido y descomprimirlo en una carpeta
de vuestro ordenador.

fichero

Las instrucciones para realizar la tarea están en el mismo fichero de la práctica.

80
Resumen
En el módulo hemos tratado las cadenas de texto, cómo se almacenan en memoria y
cómo pueden manipularse. Hemos visto como extraer un trozo de una cadena, cómo
encontrar una cadena en otra (por ejemplo, una palabra en una frase) y como
manipularla con diversas funciones que nos permiten convertirla a mayúsculas o
minúsculas, dividirla en varios trozos o quitar los espacios del principio y del final.
Finalmente hemos hablado de los códigos de caracteres y de la importancia de
manejarlos correctamente a la hora de trabajar con ficheros de texto.

Módulo 7 - Los ficheros de texto en Python


Introducción

El módulo incluye una práctica que no cuenta para el progreso del curso, un examen
de prueba y un examen de módulo. Si no has solicitado el certificado no podrás
acceder al contenido evaluable, con lo que no tendrás acceso a las prácticas
evaluables ni al examen de módulo, aunque puedes descargarte el fichero máster con
todas las prácticas de la sección de recursos de la página inicial del curso y realizarlas
sin que sean evaluadas.

El tiempo estimado para completar este módulo son 4 horas y el tiempo de visionado
de los vídeos alrededor de 32 minutos.

En el módulo hablaremos de cómo se almacena el texto en ficheros, de las distintas


formas que tiene Python de abrir un fichero de texto y de las funciones y métodos
necesarios para cargar el contenido del fichero en variables, moverse por el fichero de
texto y escribir en él. También veremos un ejemplo práctico de cómo afecta la
selección del código de caracteres al abrir el fichero.

En la práctica del módulo crearemos una función para extraer una palabra de un
párrafo concreto de un fichero de texto.

Python - Trabajando con archivos. https://youtu.be/EVaLPEy8pWc

Hola, en este vídeo vamos a hablar sobre cómo trabajar con archivos en python. Qué
hemos visto hasta ahora, hasta ahora en el curso hemos visto la entrada de datos,
usando el comando input le pedíamos a un usuario que introdujera datos a nuestras
aplicaciones, también hemos visto la salida de datos, principalmente hemos usado
print para mostrar nuestra resultados por pantalla, luego hemos estado usando la
memoria del del equipo tanto cuando hemos declarado instrucciones, hemos declarado
funciones, hemos declarado variables, guardábamos esos valores dentro de una
variable, los modificamos realmente estábamos usando la memoria del ordenador y al
mismo tiempo estábamos usando el procesador cuando ejecutábamos nuestro nuestro
intérprete era el procesador el que estaba interpretando línea línea y ejecutando su
contenido, y estas han sido nuestras piezas hasta ahora, pero realmente hay muchas
más en el lego que es python, hay acceso a bases de datos, hay acceso a vídeos, hay
81
acceso a elementos online y además hay elementos acceso a archivos, los archivos
son distintas cosas realmente es lo que contiene los datos en el equipo, tanto los
vídeos, como los audios, como los textos y en el curso vamos a hablar sobre cómo se
trabaja con los documentos de texto, qué es un archivo documento de texto, para
python es un conjunto de líneas con cadenas dentro de cada una de esas líneas, es
muy fácil de trabajar con ellos y es muy fácil de recorrerlos, lo veremos en el siguiente
vídeo y veréis como es muy fácil y muy cómodo.

Si quieres puedes descargar el texto de el Jupyter notebook utilizado. Para reproducir el proceso


paso a paso puedes hacer click con el botón derecho del ratón para descargar el Jupyter
notebook y ejecutarlo en local (recuerda usar "guardar enlace como" para guardarlo con
extensión .ipynb para abrirlo luego con Anaconda) o conectarte al Binder de la lección para
ejecutarlo en la nube.

Para esta práctica, si trabajáis en local, tendréis que descargar (pulsando el botón derecho del
ratón) en el directorio de trabajo de python el fichero ejercicio.csv (no os olvidéis de cambiarle la
extensión a .csv).

Python - Documentos de texto https://youtu.be/z_bVqFIb88A

Hola en este vídeo vamos a ver cómo trabajar con documentos de texto,
en el medio anterior explicamos un poco que eran los documentos
de texto para Python, que eran un conjunto de líneas, y
dentro de cada línea habían cadenas de texto, y ahora vamos
a ver cómo se trabaja con ellos en Python,
para ello me he preparado este archivo, donde tengo este documento ejercicio
csv, que es este de aquí como veis es un csv con
unos datos de alguien que se ha ido guardando, lo que hacía
cuando, el ejercicio que hacía. Si nosotros quisiéramos acceder
a esos datos desde Python sería tan fácil, ¿cómo? pues usando el
comando open, el nombre del archivo con la ruta completa si
no estamos en la misma carpeta que el archivo, y opcionalmente
un modo de apertura, esto lo veremos ahora mismo.
Esto nos guardar aquí un manejador de archivo, con el cual
podemos hacer cosas, una de las cosas que más fáciles de utilizar
es simplemente llamar al comando read, lo que hará es
todo el contenido y convertirlo en una cadena, esta cadena la
podríamos guardar en una variable, y a hacer las operaciones
que estábamos haciendo con cadenas hasta ahora. Si os dais
cuenta los saltos de línea, lo que ha hecho ha sido poner los
barra ene que hablamos, cuando estuvimos hablando de las cadenas
esto sería. Algo muy importante es cuando nosotros abramos
un archivo y estemos trabajando con él, pasa como cuando estamos
abriendo un archivo de texto o un documento con el word si
luego lo queremos abrir con otra cosa, va a dar
problemas porque ya no tiene abierto otra aplicación, realmente
cuando estamos haciendo el open, lo estamos abriendo nuestra
82
aplicación que es Python, si esto se quedará
abierto luego no podríamos abrirlo con otra aplicación o
podrá hacer cosas con él. Es importante que cuando terminamos
de trabajar con el archivo lo cerremos, para eso usaremos el comando
close, si os dais cuenta si intento acceder al contenido del archivo después
del close, nos va a decir estás intentando hacer una operación
de entrada salida con un archivo cerrado, no nos permite, no nos
lo permite hacer, en cambio, ese archivo ahora mismo está libre
para que lo haríamos con un excel o lo habrían con cualquier
otra cosa y lo pudiera modificar.
Como os he dicho este este erre de aquí es opcional y pero
hay distintos modos de apertura, si nosotros lo quitáramos
realmente sería lo mismo que tenerlo con el real erre que
es modo de lectura, y ahora vamos a ver los distintos modos modos
de apertura que hay son estos de aquí, como veis hay algunos
que empiezan por r, que son de lectura, y son lectura normal,
lectura en modo binario, por ejemplo, cuando queremos abrir un
archivo de vídeo de audio, lo abriríamos con lectura modo
binario, lectura y escritura el esto es lo mismo pero para binarios,
estos de escritura, empiezan por uve doble se os veis tenemos
los mismos modos, lo único que esto no nos van a permitir escribir
dentro del archivo, y por último tenemos los de agregar, estos
modos de agregar contenido, lo que hacen es abrir un archivo
y irse al final del archivo es como un modo de escritura
lo único que empiezarás, empezarás al final del archivo, ¿vale?
y veamos algunos métodos del objeto archivo, del objeto fail
entonces, para esto lo que vamos a hacer es dentro del de la
variable archivo guardo un manejador de archivos con el open
mismo archivo de ante y en modo lectura ¿vale? entonces dentro
de la variable contenido, archivo punto read y lo voy a mostrar
en pantalla con print y por último lo cierro para poder usarlo
más adelante o volverlo a labrir o abrirlo con otra cosa.
¿Vale? si os dais cuenta esto cuando he hecho el print, me ha
mostrado una línea detrás de otra, porque Python por detrás
lo que ha hecho ha sido cuando ha hecho el Open
y en el read todos los saltos de línea me ha puesto un
barra ene, entonces aunque la cadena entera era como esta de aquí
arriba, cuando hacemos el print nos la muestra así.
Si os dais cuenta al aquí al final hay otro salto de línea
ese salto de línea, lo incluye el propio print
si ponemos varios prints, uno detrás de otro de trozos de archivos
habran saltos de línea, porque tendremos los saltos de línea
del read y los saltos de línea del print, esto lo veremos más
adelante cómo quitarlos. En un ejemplo
¿vale? de hecho lo vamos a ver ya, otro que tenemos es el read line
como he dicho esto es un manejador, un manejador lo que hace es
simplemente está apuntando al principio del fichero y está
83
esperando órdenes, cuando nosotros le decimos read lo que hace
es coger desde el principio hasta el final del archivo y volcarlo
todo en una variable, pero nosotros podemos hacer read line y esto
lo que hace es ir yendo línea a línea, entonces cada vez que ejecutamos
read line, le una línea y la guarda y la devuelve para
que hagamos con ella lo que queramos, en este caso guardarlo en una variable
entonces en línea cero, guardamos la primera línea y en línea
uno, guardamos la siguiente si luego hacemos un print, tanto de
línea cero como de línea uno, si ejecutó esto aquí se ve más
claro de los saltos de línea que decía antes, porque por un
lado tenemos el salto de línea que tenemos aquí por el read
line, y por otro lado tenemos el salto de línea del print.
Cuando estuvimos hablando de las cadenas vimos una función
que era strip que no servía para quitar el final de las cadenas
aquellos caracteres invisibles, como los espacios, o los saltos
de línea, si no quisiéramos tener estos saltos de línea aquí
lo que tendríamos que hacer, es a esta línea de aquí que viene con salto
de línea hacerle una strip,
lo mismo para la de abajo
esto lo ejecutamos ahora, vemos que hemos quitado los saltos
de línea esto que está hablando todo el rato.
Otra cosa se va a hacer con los read lines es recorrer
el archivo dentro de un bucle for, para cada línea en el archivo
punto read lines hacer un print de la línea.
Esto si os dais cuenta nos está mostrando el archivo igual que
antes, pero lo hemos recurrido línea línea esto cuando el
archivo es muy pequeño alomejor no tiene sentido pero cuando
tenemos archivos de cientos de megas intentar hacer un
punto read, como esta de aquí arriba es inma, es querer matar al
ordenador, entonces haremos trabajaremos con trozos de línea
algo más manejable para que no saturar al al equipo simplemente
con la lectura del archivo. Los saltos de línea que aparecen
aquí, una vez más, los podemos arreglar con el punto strip.
El tell, el tell nos dice en qué posición del archivo estamos
ahora mismo, entonces si yo aquí abro el archivo
cuando hacemos un archivo punto tell, esto lo que nos está llevando
es, diciendo en qué punto del archivo estamos ahora mismo nos
dirá cero, porque está en el primer carácter del archivo.
Después de hacer un read line, cuando hagamos el punto tell nos
dirá la posición del archivo que estará que es pues justo
al final de la última línea, entonces ejecutando esto nos
dice cero veintiséis que es los caracteres
este de aquí y este de aquí.
Cuando decidamos el siguiente read line eso se iría moviendo, nosotros
podemos saber en qué está en qué punto estamos
con ese tell con el length del archivo podríamos saber el tamaño
del archivo total, y entonces podríamos hacer cosas como poner
84
una un porcentaje de progreso de procesado el archivo. Otra
de las cosas que podemos hacer, es saltar a un punto en concreto del archivo,
por ejemplo, si nosotros hacemos un read, lo que estamos haciendo
realmente es recorrer todo el archivo, entonces
si yo hago un read y hago un tell, si os dais cuenta nos dice que estamos
aquí, al final del archivo, luego hacemos un seek y nos vamos
a otra vez al principio. Esto nos podría servir, por ejemplo,
vuelvo a abrir el archivo
vale y hago un archivo, archivo punto
read y lo ejecuto, luego me añado otro trozo de código y vuelvo a hacer
digo punto read,
no nos devuelve nada porque esto ya está al final del archivo
y al hacer el read no está devolviendo nada, si quisiéramos
volver a leer el archivo entero tendríamos que primero hacer
un seek, irnos al principio luego ya podríamos volver a leer el archivo
y vuelve a funcionar. Acordaros como siempre de hacer archivo punto
close al terminar,
luego cuando en el siguiente vídeo trabajaremos sobre la escritura
y veremos el close, esto es todo en este parte del vídeo.

Puedes usar el Jupyter lab del vídeo anterior

Python - Documentos de texto II

Hola, en este vídeo vamos a seguir viendo cómo trabajar con documentos de texto en
Python. En el vídeo anterior nos quedamos justo antes de trabajar con la escritura de
archivos lo hemos acordado así para hacer más fácil el acceso a esta parte en
concreto del vídeo. Como veis aquí el archivo lo he abierto con esta extensión con este
formato w+.
Los tipos de apertura de, los modos de apertura de archivos los explican el vídeo
anterior y el w+ es escritura lectura, escritura y lectura sobreescribe archivo si existe y
crea un archivo si no existe. Entonces, esto lo que hace nos permite leer y escribir y
además escribe crear un archivo si no existe que es nuestro caso si os dais cuenta el
archivo no existe.
Nosotros lo que hacemos es abrir el archivo en modo escritura luego con el comando
write escribimos la cadena que queremos escribir y luego el comando close nos lo
cerrará.
Ejecutamos esto aquí ha aparecido prueba escritura punto extensión el archivo que
hemos creado y como veis tiene la nueva cadena en el archivo, vale. Si nosotros
volviéramos a ejecutar esto el archivo resultante, el archivo que tenemos que es
prueba escritura punto extensión, tiene exactamente lo mismo ¿Por qué es esto?
Porque lo hemos abierto con el con el w que es escritura y el + esto lo que ha hecho
ha sido volver
a abrir el archivo porque ya existía y desde el principio lo primero que ha hecho ha sido
escribir esto empezando desde el cero porque el manejador de archivo está el principio
del archivo. Como es exactamente la misma cadena nuestro archivo no ha cambiado
para nada. Si aquí le pusiéramos una a por ejemplo, lo volviéramos ejecutar, así, esto
85
lo actualizo veis esto ha cambiado completamente el principio del archivo porque
estábamos aquí y hemos empezado a escribir desde aquí ¿Qué pasa si quisiéramos
escribir a continuación al final del archivo? Pues en lugar de abrirlo con el modo w, lo
tendríamos que abrir con el modo a por ejemplo, así que es open de añadir esto hace
exactamente lo mismo pero aquí el puntero del manejador archivo en lugar de estar al
principio está al final del archivo, entonces es cuando nosotros escribimos y lo que
estamos haciendo es añadir líneas al final.
Si quisiéramos que empezará justo abajo lo que tendremos que hacer pues es añadirle
un salto de línea aquí.
Esto cada vez que lo ejecutamos nos va a ir añadiendo nuevas líneas
con este texto, ¿Veis?
Esto está en el archivo que estamos escribiendo.
Cuando estemos trabajando con archivos por cómo funcionan
los sistemas operativos hay veces que cuando nosotros hagamos
el write el escribir la cadena que estemos escribiendo no siempre
aparezca automáticamente en el archivo. Esto que estamos haciendo
aquí como el procesador está ocioso en este caso
lo escriben enseguida, pero hay veces que el proceso está haciendo
el procesador está haciendo muchas otras cosas estamos en
un servidor, estamos trabajando con un archivo muy complejo
y no le da tiempo a escribir cada una de las líneas.
Entonces cuando nosotros hacemos realmente esto ¿Vale?
realmente está este orden de escritura no se
ejecuta de forma definitiva hasta que nosotros cerremos el
archivo. Si nosotros el archivo lo mantenemos abierto y estamos
haciendo otras operaciones de escritura estas no siempre van
a estar disponibles aquí, en este caso si os dais cuenta no
lo ha añadido todavía hasta que una de dos o cerremos el archivo
y entonces le forzamos a hacer todas las escrituras o usemos
el comando flush que esto lo que hace es decirle a Python lo que
tienes en el buffer de escritura guardarlo todo el archivo
entonces todos los writes que hayamos acumulado se volcarán
al archivo y modificarán el archivo como hemos hecho el flush
vemos que tenemos la cadena para flushear, antes no estaba y justo
después de esto sí. Como siempre al finalizar de trabajar
un archivo es conveniente cerrarlo
y respecto a este es conveniente cerrarlo muchas veces es un
problema porque nosotros aquí hacemos un open, hacemos una
serie de operaciones y al final lo cerramos mientras
todo va bien no hay un ningún problema siempre y cuando nos acordemos
de cerrar pero hay veces que esto puede fallar
hemos visto cómo hacer control de errores con el try y el
catch pero hay veces que es mucho más cómodo usar with open.
With open lo que nos hace es decir esto es una
apertura normal del archivo, este es el manejador que vamos
a usar de archivo o sea exactamente lo mismo que esto de aquí
pero al hacerlo dentro de un with cuando falle algo de aquí
86
se saldrá fuera y cerrará correctamente el archivo siempre
pase lo que pase dentro y este manejador de archivo solamente
estará disponible dentro de este entorno.
Como vimos en los vídeos anteriores esto de aquí, esto es
como si fuera un if o un for y todo y mientras estemos aquí
dentro podremos trabajar con el archivo y una vez nos salgamos fuera
dejaremos de tener este archivo disponible.
Entonces si yo ejecuto esto
vemos que el primer print nos muestra el read
pero este print que está fuera del open del with open nos da un error
de el archivo está cerrado. El archivo está cerrado si aquí
hiciéramos cualquier cosa que diera error el archivo estaría
cerrado también correctamente no no nos lo habíamos dejado
abierto aunque el programa se hubiera finalizado incorrectamente
y esto es todo sobre el trabajar con archivos.

Puedes usar el Jupyter lab del vídeo anterior

Python - Ejercicios con documentos I https://youtu.be/a1j2vEm9RJw

Hola, en esta serie de vídeos vamos a ver algunos ejercicios muy básicos cuando
documentos en python y qué mejor unos ejemplos para verlos. Veamos el primer
ejemplo de ejercicio es contar las líneas de un archivo, combina todo lo que hemos
aprendido para contar las líneas que tiene el archivo ejercicio csv. Archivo ejercicio csv
es este que tenemos aquí, con una serie de líneas, el editor de archivos ya nos dice
cuántas líneas tiene, pero queremos hacerlo con python, lo primero que vamos a hacer
es abrir el archivo y de volcarlo en manejador, manejador es igual open, el nombre del
archivo ejercicio .csv. Es importante saber que podemos hacer el archivo así porque
estamos directamente en la misma carpeta que el archivo si no tendríamos que poner
la ruta completa como solamente queremos contar podemos poner aquí o una r o no
deja poner nada porque lo abriremos en modo lectura.
Vale, aquí dice combina todo lo que hemos aprendido para contar las líneas, cómo
hicimos para contar el número de elementos de una lista, lo que hacíamos era un
bucle for y ese bucle for si os acordáis tenía una, una inicialización, el bucle y luego
una finalización entonces lo primero que vamos a hacer es cuenta igual a cero, la
inicialización, entonces para cada línea en el manejador es igual a cuenta más uno
este bucle irá recorriendo líneas y al final nos dirá cuántas líneas tiene.
Vale y por último pues pondremos un mensaje con el resultado, print el mensaje; El
documento ejercicio .csv tiene cuenta, líneas esto lo voy a hacer con un efe string que
lo usado otras veces acordaros esto es como las cadenas normales lo único que nos
permite con las llaves estas poner el valor de una variable, ejecutar un trozo de python
y mostrarlo, entonces si ejecuto esto nos dice el documento ejercicio punto csv tiene
noventa y una líneas, este sería el primero de los ejercicios.

Si quieres puedes descargar el texto de el Jupyter notebook utilizado. Para reproducir el proceso


paso a paso puedes hacer click con el botón derecho del ratón para descargar el Jupyter
87
notebook y ejecutarlo en local (recuerda usar "guardar enlace como" para guardarlo con
extensión .ipynb para abrirlo luego con Anaconda) o conectarte al Binder de la lección para
ejecutarlo en la nube.

Para esta práctica, si trabajáis en local, tendréis que descargar (pulsando el botón derecho del
ratón) en el directorio de trabajo de python el fichero ejercicio.csv (no os olvidéis de cambiarle la
extensión a .csv).

Python - Ejercicios con documentos II (video 48)


https://youtu.be/LJiHTB7bVN4

Hola, vamos a seguir viendo ejercicios con documentos y como


en el anterior lo vamos a ver con un ejemplo.
Este es el ejercicio anterior y veamos qué es lo que nos dice el
enunciado, encontrar palabras en un archivo, modifica el ejercicio
anterior para que nos muestre la pantalla, en pantalla aquellas
aquellas en las que aparece la palabra run, esto es una errata
aquí querrían poner aquellas líneas
no tiene ningún problema si durante el curso encontráis alguna
errata de este tipo, avisadnos y nosotros lo cambiaríamos
enseguida vale, aquí nos dice modifica el ejercicio anterior
así que vamos a coger el código del ejercicio anterior y
veamos qué es lo que tendremos que hacer, lo que queremos es que
nos muestre en pantalla aquellas líneas que aparece la palabra
run, entonces ya no necesitaremos contar líneas esto no nos hace
falta no vamos a tener una finalización porque queremos mostrar
todas las líneas en las que aparece la palabra run y como podemos
saber qué líneas tiene la palabra run pues lo que podemos
hacer es con un if la palabra run está dentro de la línea
en la que estamos ahora mismo, hacer cosas, esas cosas no son
otras que hacer un print de la línea, si os dais cuenta con estas simples
cuatro líneas del código lo que hemos hecho ha sido abrir
un archivo y filtrar todas aquellas líneas de aquí que tengan
run, running en este caso pero como el python lo
único que va a estar buscando es el trozo run si aparece run
o running nos va a mostrar, entonces si ejecutamos esto es aquí
nos está mostrando todas las líneas en las que aparecen running,
que empiezan por run, si quisiéramos quitar los saltos
de línea acordaros como siempre que esto es porque al,
al acceder a la línea nos está añadido un salto de línea
y el print nos añade otro, si lo quisiéramos quitar con una strip
aquí lo evitaríamos y nos quedaría mucho más compacto el
resultado y este sería el segundo ejercicio.

Puedes usar el Jupyter lab del vídeo anterior

88
Python - Ejercicios con documentos III https://youtu.be/CGty8OsR_X8
Hola seguimos con los ejercicios con documentos como siempre,
con un ejemplo. Veamos aquí seleccionando archivos, modifica
el primer ejercicio para que nos permite seleccionar qué archivo
que hemos utilizar al contar las líneas usando el comando
input, pues como queremos modificar el primer ejercicio lo primero
que haremos será coger el código del primer ejercicio
y copiarlo donde pone tu código aquí,
y nos dice modifica el primer ejercicio para que nos permita
seleccionar qué archivo queremos utilizar al contar las líneas
usando el comando input, no se si os acordais pero el comando input nos
permitía pedir al usuario un dato que en este caso va a ser
el nombre del archivo. El nombre archivo
a ser igual a input y lo, le preguntaremos al usuario algo
como por ejemplo, introduce el nombre del archivo
que quieres utilizar.
Vale entonces para utilizar este archivo, borraremos hasta aquí
y que usaremos lo que nos devuelve el usuario nombre archivo.
Lo ejecutaremos y vemos que aquí nos hace una solicitud introduce
un nombre de archivo que quieres utilizar, nosotros podemos hacer como antes,
ejercicio punto csv. Vale el documento ejercicio
csv tiene noventa y una líneas, un detalle aquí este mensaje
no lo hemos modificado si queremos que esto cambie dependiendo
del nombre del archivo tendremos que borrar esto de aquí,
aquí poner nuestro nombre archivo, entonces ahora bien por
ejemplo cogiéramos uno de los libros de recetas que estábamos
utilizando antes libro de recetas punto py
libro de recetas punto py, el documento libro de recetas punto pe y
tiene seis líneas y esto sería todo en este segundo, tercer ejercicio.

Puedes usar el Jupyter lab del vídeo anterior

Python - Ejercicios con documentos IV(video 50)


https://youtu.be/_K3jjCp24pM

Hola, este es el cuarto ejercicio con documentos que vamos a


ver en nuestro curso de python. Como siempre
lo vamos a ver con un ejemplo. Veamos que es lo que nos dice aquí,
protección de errores, modifica el ejercicio anterior para
evitar errores si el usuario escribe mal el nombre del archivo
cuando falle mostraremos un mensaje que diga, no se ha encontrado el
archivo, nombre del archivo, si os dais cuenta ya os estoy poniendo
este formato para que luego lo uséis como esto de aquí, como un
f string, vamos a copiar nuestro código anterior
lo pegamos aquí, si lo ejecutamos esto
y a lo que se refiere este ejercicio es que hasta ahora yo he puesto
89
el libro de recetas punto pi y he puesto ejercicios punto csv,
son archivos existían pero si pusiera cualquier cosa punto
cualquier cosa, ese archivo no existe y nos va a dar un
error file not found error y este error es el que queremos
evitar, lo queremos evitar aquí realmente porque es la funcionalidad
del script que es simplemente contar las líneas que tiene un
archivo, pero si este error ocurrirá en un programa más largo
más grande este error pararía el interprete de python daría
un error y se acabaría nuestro programa,
pero podemos simplemente como vimos en el control de errores
poner un try al principio
un except al final,
en el except cuando pase esto le ponemos el mensaje que nos está
diciendo el enunciado dentro de un print
y entre comillas, entre comillas he dicho
el mensaje que hemos copiado,
igual no lo hemos copiado, bueno, tardo menos en escribirlo
no se ha encontrado el archivo
nombre archivo y para que todo esto esté dentro del try, acordaos
que tenemos que poner una tabulación para que está inyectado dentro
del bloque, así haciéndolo así, todo este bloque try estaría
abriendo solicitando el usuario, el nombre del archivo intentando
abrir el archivo con el open y
haciendo nuestra cuenta de archivo y al finalizar el print,
ejecutamos esto
y ponemos ejercicio.csv el documento ejercicio.csv
 tiene noventa y una líneas, pero si como antes ponemos
cualquier otra cosa,
en lugar de dar un error, nos dice no se ha encontrardo el nombre o el
archivo, nombre de archivo. Si oss habéis dado cuenta durante estos
cuatro ejercicios no he hecho un manejador punto close en ningún
momento, es importante que lo hagáis siempre y cuando el
script no vaya a acabar con el manejado punto close, en ese caso
podemos evitarlo porque al cerrar python, el escrip automáticamente
el cerrará el el archivo así pues es importante para todos
los ejercicios que he hecho, si quereis subir nota
cerrar los manejadores de archivo antes de acabar, entonces
esto añadiríamos a todos, y esto ya es para nota,
eso sería todo el último ejercicio.

Puedes usar el Jupyter lab del vídeo anterior

Trabajando con códigos de caracteres en ficheros en Python (video 51)


https://youtu.be/zuDRsf0oUhI

Vamos a ver qué pasa si cargamos un fichero de texto.


90
Hemos definido esta función que se llama párrafo que nos va a
devolver un número de párrafo, entonces le asignamos el manejador
fichero el contenido del fichero de texto quijote.txt,
luego leemos en una variable texto ese contenido, dividimos
en distintos párrafos por salto de línea con el .split
este. Luego como hay líneas en blanco ponemos este bucle while
que va a eliminar todos los párrafos que no tengan contenido,
todas las líneas en blanco y luego le asignamos al párrafo
seleccionado, a esta variable, el número de párrafo seleccionado
por este parámetro. Bien, luego cerramos el fichero y devolvemos
el párrafo seleccionado y vamos a ejecutar esta función con
el párrafo ocho. Le damos aquí a
correr, a run, y fijaos que nos ha cargado el párrafo pero
las letras mayúsculas y minúsculas han salido bien, y los
caracteres como la coma y tal, normales, bien pero en cuanto
hay acento, ponérsele, sí, duró, incluso si hubiera alguna ñ han
salido mal. ¿Porqué? Pues porque el fichero quijote txt
está codificado en UTF-8, usa ese código de
caracteres, y aquí estamos ejecutando jupyter labs en Windows
que utiliza el Python que tiene nuestro Windows instalado y Windows
trabaja con ANSI. Entonces, para evitar esto ¿que vamos a hacer?
Para evitar esto vamos a utilizar una función
de codificación. Vamos a decirle al, asignar al manejador fichero
el contenido de quijote txt que la codificacion es UTF-8.
Entonces fijaos que, si yo aquí hago, la función es exactamente
igual sólo que añade la codificación en el momento de abrir
el fichero. Yo le doy aquí a correr y fijaos que aquí los acentos
sí, ponérsele, duró, salen perfectamente. ¿Qué pasaría si comentamos,
poniendo una almohadilla, y descomentamos esta otra? Pues que
al abrirlo con ANSI, que es de Windows, como el fichero es
UTF-8, fijaos que salen los acentos igual de mal que salían
antes. Vamos a probarlo al revés, tenemos un fichero que hemos
codificado como ANSI. Que lo tenemos guardado con la codificación
ANSI, que sería el fichero quijoteansi txt y aquí
le decimos que lo abra como ANSI. Le damos aquí al run. Fijaos
que los acentos se cargan perfectamente. Bien, ¿qué pasaría
si le decimos que lo abra como UTF-8 a algo que es ANSI?
Si comentamos esta línea y descomentamos está y la ejecutamos.
Pues aquí directamente da un error único. De aquí ni siquiera
se cargan los acentos mal sino que nos da un error de unicode
porque no es capaz de leer el contenido que está codificado
con ANSI como UTF-8. Bien, ¿cuál es la conclusión de todo
esto? La conclusión de todo esto es que os tenéis que acostumbrar
a manejar las codificaciones a la hora de cargar ficheros de
texto para trabajar con ellos y tenéis que abrir cada fichero
con su codificación adecuada. ¿Porqué? Porque una vez hemos abierto
un fichero mal, osea, una vez hemos abierto un texto con la
91
codificación incorrecta esto no se puede arreglar. Entonces
tenemos que arreglarlo desde el origen, tenemos que cargar la
codificación correcta para que funcione bien.

Si quieres puedes descargar el texto de el Jupyter notebook utilizado. Para reproducir el proceso


paso a paso puedes hacer click con el botón derecho del ratón para descargar el Jupyter
notebook y ejecutarlo en local (recuerda usar "guardar enlace como" para guardarlo con
extensión .ipynb para abrirlo luego con Anaconda) o conectarte al Binder de la lección para
ejecutarlo en la nube.

Práctica 7.1 Extraer palabras de párrafos de un fichero (no evaluable)


En este apartado os proponemos un ejemplo práctico para que podáis practicar lo aprendido.

Este ejercicio es autoevaluable y no cuenta para la calificación del curso.

Hemos creado una instancia en la plataforma Binder, que permite crear y ejecutar de forma
remota código sin necesidad de crear un usuario. Podéis acceder al entorno de desarrollo en
Binder pinchando en el logo que aparece a continuación.

Binder (mybinder.org)

Si habéis instalado Python y queréis realizar la práctica en vuestro entorno local también podéis
hacerlo. Tenéis que descargar el siguiente fichero comprimido y descomprimirlo en una carpeta
de vuestro ordenador.

fichero

Resumen
En el módulo hemos tratado cómo se almacena el texto en ficheros, las distintas
formas que tiene Python de abrir un fichero de texto y las funciones y métodos
necesarios para cargar el contenido del fichero en variables, moverse por el fichero de
texto y escribir en él. También hemos visto un ejemplo práctico de cómo afecta la
selección del código de caracteres al abrir el fichero.

92
Lista de videos

Problemas en la instalación
https://www.anaconda.com/products/individual si existe problemas en la instalación pueden
seguir este video es de mucha ayuda. https://www.youtube.com/watch?v=V-6AxVwJZbs

Urls de descarga de los masters

https://github.com/leosamu/pythonMoocCompanion/archive/master.zip

93
https://github.com/leosamu/pythonMoocProblems/archive/master.zip

94

También podría gustarte