0% encontró este documento útil (0 votos)
1 vistas

Programación Python w PITOP

El documento presenta un curso de formación en programación y electrónica utilizando el lenguaje Python, dirigido por el ingeniero Hugo Contreras Camacho. Se abordan conceptos fundamentales de Python, como variables, tipos de datos, funciones, y se introducen herramientas como la Raspberry Pi para facilitar el aprendizaje práctico. Además, se incluyen ejercicios y consideraciones importantes para el desarrollo de habilidades en programación.
Derechos de autor
© © All Rights Reserved
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
1 vistas

Programación Python w PITOP

El documento presenta un curso de formación en programación y electrónica utilizando el lenguaje Python, dirigido por el ingeniero Hugo Contreras Camacho. Se abordan conceptos fundamentales de Python, como variables, tipos de datos, funciones, y se introducen herramientas como la Raspberry Pi para facilitar el aprendizaje práctico. Además, se incluyen ejercicios y consideraciones importantes para el desarrollo de habilidades en programación.
Derechos de autor
© © All Rights Reserved
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 272

Formación en programación

y electrónica en lenguaje
Python
Ingeniero en Mecatrónica
Hugo Contreras Camacho

Contacto:
[email protected]

2
Objetivo General

Brindar bases solidas en programación, implementando


el lenguaje de alto nivel Python, de una forma practica y
gradual, desde el tratamiento básico de variables hasta
el desarrollo de aplicaciones funcionales.

3
¿Qué es la Raspberry?

La Raspberry Pi es una computadora de bajo costo y con un tamaño


compacto, del porte de una tarjeta de crédito, puede ser conectada a un
monitor de computador o un TV, y usarse con un mouse y teclado estándar.
Es un pequeño computador que funciona con un
sistema operativo Linux el cual permite que
personas de todas las edades puedan explorar la
computación y aprender a programar lenguajes
como Scratch y Python.

4
5
Consideraciones importantes

Consideraciones:

No quedarse con dudas, pregunta siempre que sea necesario.


Exponer sugerencias y comentarios sobre los temas.
Durante la presentación, las imágenes del código cambiaran
colores, fondos y formas de ejecución

6
Introducción a Python

Python es un potente lenguaje de programación creado por Guido


Van Rossum en 1991 y es popular tanto entre los principiantes como
entre los desarrolladores más expertos.

• Es totalmente gratuito
• Python es apto para todas las plataformas
• Sus aplicaciones no se limitan en un área en concreto

7
Introducción a Python

Características:

Propósito general: Apps celulares, videojuegos, desarrollo web,


apps e escritorio, etc.

Multiplataforma: Windows, Linux, Mac.

Orientado a Objetos: La programación orientada a objetos está


soportada en Python y ofrece en muchos casos una manera
sencilla de crear programas con componentes reutilizables.

8
Introducción a Python

Ventajas.

Lenguaje de código abierto.


Sintaxis.
Fácil y simple de entender.

9
Introducción a Python

Usos y aplicaciones de Python:


Desarrollo de aplicaciones web.
Desarrollo de inteligencia artificial.
Desarrollo de ciencia de datos.
Desarrollo de videojuegos.
Desarrollo de aplicaciones móviles.

10
Abrir una consola

Es posible trabajar con Python desde una consola de


comandos, para esto se debe escribir la palabra “python”.

11
Números y Operadores aritméticos 12
Requisitos previos

Lenguaje Python Editor de código

13
Función Print

Una función de Python predefinida, es la función Print.

Print imprime en la consola del usuario un dato tipo texto, el cual deberás
introducirlo entre comillas simples o dobles para estructurarlo, de esta
manera Python lo reconocerá como dato tipo texto.

Ejemplo:

14
Variables

En programación, las variables se definen como espacios


de memoria, en la cual se puede almacenar diferentes tipos
de datos.

15
Variables

Ejemplos de variables en Python.

Variables Tipo de dato que contiene

Y = 34 Entero (int)

X = 9.3 Decimal (float)

Color = “rojo” Cadena de caracteres (string)

Encendido = True Booleana (bool)

16
Variables

Una gran ventaja de Python en comparación con otros tipos de


programación es no requiere declaración al inicio del programa.

Declaración de variables en C

Int x;

Float z;

String color;

Bool abrir = true;


17
Tipos de datos

Un tipo de dato es la propiedad que determina qué tipo de


valor puede tomar, las operaciones que se le pueden aplicar y
cómo es representado internamente por el computador.

18
Características de las variables

Las variables tienen ciertas reglas para que Python las pueda
reconocer correctamente:

• No pueden contener espacios


• No pueden empezar con un numero
• El único símbolo compatible es el guion bajo
• No pueden ser palabras reservadas

19
Usar variables en editor de código

Para mostrar variables o hacer operaciones desde el editor de


código, es necesario escribirlas dentro de un print.

20
Tipos de datos

Números enteros.

El tipo int (del inglés integer, que significa «entero») permite


representar números enteros.

Los valores que puede tomar un int son todos los números
enteros:

1, 2, 5, 24, 456, -45, -876, -5, 34

21
Tipos de datos

Números reales.

Los números reales, en programación son llamados float, estos


permiten representar números con punto decimal:

1.5, 3.4, 5.4, 213.45, -12.67

22
Tipos de datos

Números reales.

Los números reales literales se escriben separando la


parte entera del decimal con un punto. Las partes entera
y decimal pueden ser omitidas si alguna de ellas es
cero:

23
Tipos de datos

Números reales.

Tipos de datos. Otra representación es la notación


científica, en la que se escribe un factor y una potencia de
diez separados por una letra “e”.

24
Tipos de datos

Valores Booleanos.

Los valores booleanos son 2 (True y False).

25
Tipos de datos

Cadena de caracteres.

A los valores que representan texto se les llama strings, se define en


Python como str.
Los strings literales pueden ser representados con texto entre
comillas simples o comillas dobles:

26
Tipos de datos.

Cadena de caracteres.

La ventaja de tener dos tipos de comillas es que se puede


usar uno de ellos cuando el otro aparece como parte del
texto:

27
Tipos de datos

Cadena de caracteres.

Es importante entender que los strings no son lo mismo


que los valores que en él pueden estar representados:

28
Tipos de datos

Cadena de caracteres.

Los strings difieren en mayúsculas y minúsculas, y la


tecla espacio también es considero un carácter:

29
Comentarios

En programación, un comentario es texto en el código, el


cual no realiza ninguna acción. Estos comentarios sirven
para que como programador, sepamos que esta pasando
en cada parte de nuestro código.

Si se comenta código, este dejara de funcionar al


momento de ejecutar el programa completo.

30
Comentarios

Comentar varias líneas

Comentar una línea


31
Ejercicios con variables

Suma 3 variables tipo entero


Suma 2 variables tipo String (nombre y apellido)
Declarar e imprimir una variable de tipo bool.
Realiza una operación implementando variables tipo int y
float.

32
Resultado del ejercicio con variables 33
Imprimir datos en un print

Todos los datos en un print, deben ir divididos por un signo.


Existen 2 principales formas de imprimir estos datos.

Con un signo de suma

Con una coma


34
Imprimir datos en un print

La diferencia es que el signo de suma intenta hacer una


operación con los datos, si se usa con strings, los va a
concatenar, si se usa con enteros, va a hacer la operación
de suma. Por esto, no se puede utilizar el signo de suma
para diferentes tipos de datos.

35
Errores

Error de tipo de dato

Todos los errores tienen la misma estructura:


• La línea en la que está el error
• El nombre del error
36
• Una descripción del error
Errores

Error de indentación

37
Flujo de programación

El flujo de programación es la forma en la que Python lee las


líneas de código al momento de ejecutar un programa.

Lo hace de arriba hacia abajo, y de izquierda a derecha.

38
Indentación

En un lenguaje informático, la indentación es lo que la


sangría al lenguaje humano escrito (a nivel formal).

39
Indentación

No todos los lenguajes de programación, necesitan de una


indentación, se estila implementarla, a fin de otorgar mayor
legibilidad al código fuente.

Pero en el caso de Python, la indentación es obligatoria, ya


que de ella, dependerá su estructura

40
Indentación

Una indentación de 4 (cuatro) espacios en blanco, indicará


que las instrucciones indentadas, forman parte de una
misma estructura de control.

41
Ejemplo de código indentado y sin indentado

42
Identado Sin identar
Palabras reservadas en Python

En todos los lenguajes de programación existen una serie de


palabras que son exclusivas del lenguaje, es decir que son
palabras reservadas.

Python posee una lista de palabras reservadas pequeñas que


no deben ser utilizadas para otro propósito que no sea el que
Python les ha dado

43
Palabras reservadas en Python

¿Como identificar si una palabra es reservada?

Al momento de escribirla en el IDLE nos daremos cuenta


que cambia de color automáticamente, esto nos indicara
que solo puede ser usada por el interprete, es importante
mencionar que el IDLE diferencia entre mayúsculas y
minúsculas.

44
Palabras reservadas en Python

Tabla de palabras reservadas en Python 3.


Palabra reservada Significado

False Valor booleano

None Representa un valor nulo

True Valor booleano

And Operador lógico

As Se utiliza para crear un alias al importar un modulo

Break Se utiliza en el interior de los bucles for y while para


alterar su comportamiento normal
45
Class Se usa para definir una nueva clase definida por el
usuario
Palabra reservada Significado

Continue Se utiliza en el interior de los bucles for y while para alterar


su comportamiento normal
Def Se usa para definir una función definida por el usuario

Del Para eliminar un objeto

Elif Se usa en declaraciones condicionales, igual ‘else’ e ‘if’

Else Se usa en declaraciones condicionales, igual ‘else’ e ‘if’

Expect Se usa para crear excepciones, qué hacer cuando ocurre


una excepción, igual que ‘raise’ y ‘try’
Finally Su uso garantiza que el bloque de código dentro de él se
ejecute incluso si hay una excepción no controlada
For Generalmente lo usamos cuando sabemos la cantidad de
veces que queremos que se ejecute ese bucle
From Para importar partes específicas de un módulo

Global Para declarar una variable global. 46

If Se usa en declaraciones condicionales, igual ‘else’ y ‘elif’


Palabra reservada Significado

Import Para importar un módulo

In Para comprobar si un valor está presente en una lista, tupla, etc.

Is Se usa para probar si las dos variables se refieren al mismo


objeto.
Lambda Para crear una función anónima

Nonlocal Para declarar una variable no local

Not Operador lógico

Or Operador lógico

Pass Es una declaración nula en Python. No pasa nada cuando se


ejecuta. Se utiliza como marcador de posición.
Raise Se usa para crear excepciones, qué hacer cuando ocurre una
excepción, igual que ‘except y ‘try’
Return Se usa dentro de una función para salir y devolver un valor.
47
Try Se usa para crear excepciones, qué hacer cuando ocurre una
excepción, igual que ‘raise’ y ‘except
Palabra reservada Significado

While Se usa para realizar bucles.

With Se usa para simplificar el manejo de excepciones

Yield Se usa dentro de una función al igual que ‘return’,


salvo que ‘yield’ devuelve un generador.

48
Funciones de entrada y salida de datos

Funciones Print e Input

Las siguientes funciones forman parte del repertorio de


funciones predefinidas de Python, estas tienen acciones
precisas a ejecutar de acuerdo a su descripción, la mayoría de
ellas son funciones paramétricas. Mas delante se explicara este
tema mas claramente.

49
Función Print

Una función de Python predefinida, es la función Print.

Print imprime en la consola del usuario un dato tipo texto, el cual deberás
introducirlo entre comillas simples o dobles para estructurarlo, de esta
manera Python lo reconocerá como dato tipo texto.

Ejemplo:

50
Función Input

La función Input() le permite al desarrollador obtener datos introducidos por


medio del teclado para poder implementarlos en su programa, por lo
regular, el dato recibido debe ser almacenado en una variable, el dato
recibido es siempre de tipo texto.

Ejemplo:

51
Función Input

Además en la con la función input() podemos imprimir texto en la consola igual


que con la función print() para hacer mas intuitivo el programa.

Ejemplo:

52
Conversión de tipos

Por defecto, la función input entiende que el dato introducido es una cadena,
aunque se escriba un numero. Si se requiere hacer operaciones se producirá un
error.
Para evitarlo debemos convertir el dato al tipo que necesitemos. Esto se hace
de la siguiente manera:

53
Función Input

Cabe recalcar que la manera de trabajar de la función


input(), es que al momento de usarla, cuando sea leída por el
programa en ejecución, el flujo de lectura se detendrá hasta
que se introduzca el valor por medio del teclado.

54
Ejercicio entrada y salida de datos

Obtener 5 cadenas de datos de entradas con la función input() donde


solicites por medio del teclado y consola:

Nombre Apellido Edad Sexo Día de nacimiento

Posteriormente imprime en consola un texto utilizando las variables


almacenadas.

Resultado esperado:

55
Solución 56
Funciones

Definición.

Una función es un conjunto de líneas de código que realizan una tarea


repetitiva y puede retornar un valor. Para fines prácticos una función permite al
programador y a cualquier persona que lea el código y que tenga nociones en
programación comprender fácilmente el funcionamiento del mismo.

Existen funciones con parámetros y funciones sin parámetros. Un parámetro es


un dato que puede influir en el comportamiento de una función

57
Funciones

Es importante mencionar que por lo regular, una función se


debe definir al inicio del código.

Definición de una función sin parámetros en Python.

Asignación de variables

Definición de función

Cuerpo de la función

58
Manda a llamar a la función
Ejemplo

59
Funciones

Definición de una función con parámetros en Python.

Asignación de variables

Definición de función

Cuerpo de la función

Entrada de datos en variables

Manda llamar la función

Resultado 60
Funciones predefinidas.

Función abs()
Devuelve el valor absoluto de un número. El argumento puede ser un entero
normal o largo o un número de coma flotante. Si el argumento es un número
complejo, se devuelve su módulo.

61
Funciones predefinidas

Función Range()

Crea un rango de números que va desde n hasta n - 1. Todos serán positivos,


en caso de colocar un numero negativo como argumento dentro del paréntesis,
al imprimirlo se mostrara una lista vacía.

62
Funciones predefinidas

La función range puede ser de 2 argumentos: range(m,n), creando una lista que
empieza desde m, y termina en n – 1.

También puede ser de 3 argumentos: range(m,n,p), creando una lista que


empieza de m y acaba antes de superar o igualar a n, aumentando los valores
de p en p. Si p es negativo, los valores disminuyen de p en p.

63
Funciones predefinidas

Función Max()

Determina el valor máximo entre un grupo de números.


Ejemplos:

64
Funciones predefinidas

Función Min()

Determina el valor mínimo entre un grupo de números.


Ejemplos:

65
Funciones predefinidas

Función Sum()

Suma el valor total de una lista de números

Ejemplos:

66
Funciones predefinas

Función round()

Redondea un dato numérico con decimales al mas próximo. El criterio para


redondear numero es que la parte decimal sea mayor o igual que 0.5

Ejemplos:

67
Bucle While

Bucle While

Un bucle while permite repetir la ejecución de un grupo de instrucciones


mientras se cumpla una condición (es decir, mientras la condición tenga el
valor True).

La sintaxis del bucle while es la siguiente:

68
Bucle While

La ejecución de esta estructura de control while es la siguiente:

Python evalúa la condición:


• si el resultado es True se ejecuta el cuerpo del bucle. Una vez ejecutado el
cuerpo del bucle, se repite el proceso (se evalúa de nuevo la condición y, si es
cierta, se ejecuta de nuevo el cuerpo del bucle) una y otra vez mientras la
condición sea cierta.
• si el resultado es False, el cuerpo del bucle no se ejecuta y continúa la
ejecución del resto del programa.

La variable o las variables que aparezcan en la condición se suelen llamar


variables de control. Las variables de control deben definirse antes del bucle while
y modificarse en el bucle while.

69
Tipos de comparaciones para condicionales

Simples: solo una evaluación en la sentencia.

Símbolo Significado Ejemplo Resultado

== Idéntico que 5 == 7 False

!= Distinto que Rojo != Verde True

< Menor que 8 < 12 True

> Mayor que 12 > 7 True

<= Menor o igual que 12 <= 12 True

>= Mayor o igual que 4 >= 5 False


70
Ejercicio ejemplo

Obtener el siguiente resultado en consola utilizando el bucle while:

71
Bucle While

Resultado del ejercicio:

72
Bucle While

Otra ventaja del bucle while es que el número de iteraciones no está definida
antes de empezar el bucle, por ejemplo porque los datos los proporciona el
usuario. Por ejemplo, el siguiente ejemplo pide un número positivo al usuario
una y otra vez hasta que el usuario lo haga correctamente:

Código Consola de Python

73
Bucles While

Bucles infinitos
Si la condición del bucle se cumple siempre, el bucle no terminará nunca de
ejecutarse y tendremos lo que se denomina un bucle infinito. Aunque a veces es
necesario utilizar bucles infinitos en un programa, normalmente se deben a
errores que se deben corregir.

74
Bucle While

Por desgracia, es fácil programar involuntariamente un bucle infinito, por lo que es


inevitable hacerlo de vez en cuando, sobre todo cuando se está aprendiendo a
programar.

Estos son algunos ejemplos de bucles infinitos: El programador ha olvidado modificar


la variable de control dentro del bucle y el programa imprimirá números 1
indefinidamente:

75
Bucle While

Los bucles infinitos no intencionados deben evitarse pues significan perder el


control del programa. Para interrumpir un bucle infinito, hay que pulsar la
combinación de teclas Ctrl+C. Al interrumpir un programa se mostrará un
mensaje de error similar a éste:

76
Estructuras de control

Una estructura de control permite que un programa continúe su flujo


de lectura de acuerdo al cumplimiento de una condición determinada
por el programador.

El flujo de lectura de un código en Python se ejecuta de la siguiente


manera:
• De arriba hacia abajo.
• De izquierda a derecha.

77
Condicional IF

Sirve para verificar si una variable de tipo bool, int, float o string se iguala o
cumple con un dato especificado por el programador, a esto se le llama
Sentencia, el valor que devuelve es un booleano (True o False)

78
Condicional IF

If simple.
Estructura:
Si el dato de comparación 1 es igual al dato de comparación 2, realizara la
acción descrita en el cuerpo del IF, si no se cumple continuará con su flujo de
lectura del programa.

79
Condicional IF

If / Else.
Estructura:
Si el dato de comparación 1 es igual al dato de comparación 2,
realizara la acción descrita en el cuerpo del IF, si no se cumple
realizara lo que se describe en el cuerpo ELSE, else se puede
interpretar como ”en caso contrario”.

80
Condicional IF

Múltiples condicionales if.

Descripción:
• Si el dato de comparación 1 es igual al dato de
comparación 2, realizara la acción descrita en el cuerpo
del IF
• Si el dato de comparación 1 es menor o igual al dato de
comparación 2, realizara la acción descrita en el cuerpo
del ELIF1
• Si el dato de comparación 1 es mayor o igual al dato de
comparación 2, realizara la acción descrita en el cuerpo
del ELIF2
• Si no cumple ninguna condición, realizara la acción
descrita en el cuerpo del ELSE
81
Ejemplo de condicionales

Crea un archivo nuevo en el IDLE de Python en el cual definirás 1


variable tipo entero, llamada edad, será comparada con una constante
por medio de una condicional if.

• Si es mayor que 18: deberá imprimir un mensaje que diga mayor de


edad.
• Si es menor que 18: deberá imprimir un mensaje que diga menor de
edad.
• Si no cumple ninguna sentencia: imprimirá tu nombre

82
Bucle For

Un ciclo for nos permiten ejecutar una o varias líneas de código de


forma iterativa, conociendo un valor especifico inicial y otro valor final.
Se define de la siguiente manera:

El valor de conteo final se define por una lista, el numero de


elementos de una lista, será la cantidad de iteraciones de un ciclo for.
Los ciclos for en Python se implementan mas en listas y diccionarios.
83
Bucle For

Ejemplo de bucle for:

Este ejercicio analiza la cantidad de alumnos que ingresan en un aula, el limite


máximo es de 100 personas, sin embargo entraran 9 grupos los cuales no se
conoce la cantidad exacta de cada uno de ellos, por lo tanto el bucle for se
ejecutara 9 veces solicitando se ingrese el numero de personas de cada grupo:

En caso de que el cupo se llene le programa se detendrá antes, e imprimirá un


mensaje de “cupo lleno”

84
Bucle For

Código del ejemplo.

Como podemos notar al ingresar el numero de personas del segundo grupo el


programa se detuvo.
85
Tipos de comparaciones para condicionales IF

Simples: solo una evaluación en la sentencia.

Símbolo Significado Ejemplo Resultado

== Idéntico que 5 == 7 False

!= Distinto que Rojo != Verde True

< Menor que 8 < 12 True

> Mayor que 12 > 7 True

<= Menor o igual que 12 <= 12 True

>= Mayor o igual que 4 >= 5 False


86
Tipos de Comparadores para condicionales if.
Dobles: 2 evaluaciones en la sentencia.

Símbolo Ejemplo Explicación Resultado

And 5 == 7 and 7 < 12 False and False False

And 9 < 12 and 12 > 7 True and True True

And 9 < 12 and 12 > 15 True and False False

Or 12 == 12 or 15 > 12 True or False True

Or 7 > 5 or 9 < 12 True or True True

Xor 4 == 4 xor 9 > 3 True o True False

Xor 4 == 4 xor 9 < 3 True o False True 87


Dudas de los temas anteriores

88
Calculadora

Se tiene que crear en Python una calculadora con todo lo que hemos visto hasta
el momento, la calculadora deberá cumplir con las siguientes características:

• Desplegar un menú con las opciones de operaciones disponibles


• 4 operaciones disponibles (suma, resta, multiplicación y división)
• Cada operación en una función

Opcional:
• Después de la operación volver a preguntar al usuario que opción quiere
• Pedirle al usuario los números a operar

89
Try-Except-else

Se puede utilizar una declaración try-except para envolver programas completos o


solo partes determinadas del código para interceptar e identificar errores. Si se
produce un error dentro de la declaración try, se emite una excepción y luego se
ejecuta el código de la declaración except.

Utilizar una declaración except básica es la forma más básica de tratar los errores.

90
Try-Except-Finally

Funciona muy similar al ejemplo anterior lo único que cambia es el Finally por el
else, esto quiere decir que siempre se ejecutará el código que haya en el finally,
tanto si se produce error como sino.

91
Manejo de errores con tipo de error

Si queremos «afinar» un poco más y queremos mostrar mensajes


personalizados al usuario o ejecutar código cuando se produce un error
específico, de algún tipo concreto, también podremos hacerlo con Python.

92
Capturar cancelación de programa (Control + C)

También podemos capturar la posible cancelación (Cierre forzado) de un


programa por el usuario. Cuando se pulsa la combinación de teclas Control
+ C en un programa de línea de comandos, se abortará la ejecución del
programa. Python permite capturar este cierre «forzado» para hacer
cualquier operación antes del cierre, para cancelar el cierre forzado o para
mostrar algún mensaje al usuario.
Explicamos cómo hacerlo con un sencillo ejemplo:

93
Listas

Es una estructura de datos que sirve para representar un


conjunto ordenado de elementos (números, cadenas, listas).

Son útiles para poder modelar datos compuestos pero cuya


cantidad y valor varían a lo largo del tiempo.

Las listas se delimitan por corchetes ([ ]) y los elementos se


separan por comas.

94
Listas

Las listas pueden contener elementos del mismo tipo:

Enteros y flotantes

Cadenas de datos

95
Listas

Las listas pueden contener elementos del diferente tipo:

Números Enteros y Cadenas de caracteres.

96
Listas

Además se pueden crear listas a partir de otras listas.

Ejemplo:

97
Listas

Como se vio en el ejemplo anterior podemos crear listas a


partir de otras listas, a esto se le conoce como anidamiento, y
en este caso se refiere a la cualidad de agrupación de una o
varias listas dentro de una lista principal.

Ejemplo:

98
Listas

Una lista que no contiene elementos se denomina lista vacía. Al momento de


mostrar sus valores en la consola de Python se mostrara solo 2 corchetes
vacíos.

Cuando definimos una lista, podemos hacerlo utilizando variables en lugar de


colocar directamente los elementos en los espacios de la lista.

Ejemplo:

99
Listas

Es importante saber que a diferencia de una variable a la cual solo le


podemos asignar un dato de cualquier tipo, en la lista podemos tener
cualquier numero de elementos. Es por ello que para visualizar solo
uno en especifico debemos colocar entre corchetes el numero del
elemento deseado.

Este numero se le conoce como índice, y comienza desde cero.

10
0
Listas

En caso de colocar un numero mayor en el índice a la cantidad de


elementos que contiene una lista, la consola de Python nos
devolverá como resultado un mensaje de error.

101
Listas

Si conocemos el elemento y deseamos saber es su posición en la


lista podemos utilizar el método index(), este nos devolverá un valor
tipo entero, este método se escribe de la siguiente manera.

10
2
Listas

Para obtener una lista a partir de la lista original, se utiliza la


notación de rangos, como en las otras secuencias.

Ejemplo:

Para obtener la lista que contiene sólo a quién se inscribió


en segundo lugar podemos escribir:

10
3
Listas

Ejemplos:
Para obtener la lista que contiene al segundo y tercer inscritos
podemos escribir:

Para obtener la lista que contiene al primero y segundo inscritos


podemos escribir:

10
4
Listas

Una característica importante de las listas es la capacidad de


reemplazar los elementos de la misma, a esto se le conoce como
mutación.

Para esto debemos colocar el nombre de la lista y entre corchetes


(índice) colocar el numero del lugar del elemento a reemplazarse,
además de la asignación del nuevo elemento:

Lista original. Mutación del elemento 1 “89211”.

10
5
Listas

Como ya sabemos, Python cuenta una


cantidad extensa de funciones
predefinidas. La función len() nos
permite saber la cantidad de elementos
de una lista.

Otra función mas, útil con listas es


append() nos permite agregar un
elemento al final de la lista

10
6
Listas

La función insert() nos permite


agregar un elemento en cualquier
espacio de la lista.

Otra función mas, útil con listas es


remove() nos permite eliminar un
elemento de la lista
10
7
Listas

Si ejecutamos la función remove() y existen 2 valores que


sean idénticos en la lista, solo eliminara el primero
encontrado.
Ejemplo.

10
8
Listas

Además en caso de eliminar un elemento de la lista usando la


función remove() y este no existiera, la consola de Python
retornara un error.
Ejemplo.

10
9
Listas

Búsqueda de elementos en una lista.

En el caso de desear buscar cierto elemento dentro de una


lista podemos hacerlo con el siguiente método.

110
Listas

Para desplegar todos los valores de una lista, es necesario iterar en


ella utilizando el bucle for.
Su sintaxis es la siguiente

Elemento es la variable que toma el valor del elemento dentro del


iterable en cada paso del bucle. Este finaliza su ejecución cuando se
recorren todos los elementos.
Es muy frecuente usar el bucle for para iterar sobre los elementos de
listas, tuplas o diccionarios. 111
Listas

Ejemplos:

Lista de nombres

Lista de combinada: nombres y números

112
Listas

En Python, las listas, las tuplas y las cadenas son parte del conjunto
de las secuencias. Todas las secuencias cuentan con las siguientes
operaciones:

113
Tuplas

Python cuenta con una gran variedad de tipos de datos que permiten
representar la información según cómo esté estructurada.

Una tupla es una secuencia de valores agrupados.


Una tupla sirve para agrupar, como si fueran un único valor, varios
valores que, por su naturaleza, deben ir juntos.

114
Tuplas

Una tupla puede ser creada poniendo los valores separados


por comas y entre paréntesis. Por ejemplo, podemos crear
una tupla que tenga el nombre y el apellido de una persona:

115
Tuplas

Los valores individuales de una tupla pueden ser recuperados


asignando a la tupla el argumento de posición entre corchetes
el cual es un numero entero, la posición se cuenta a partir de
0.

116
Tuplas

En caso de buscar un elemento en la tupla que no existe, la consola


retornara un error.

117
Tuplas

Una tupla es inmutable, esto quiere decir que no puede


cambiar su contenido, una vez que ha sido creada.

En caso de intentarlo la consola retornara un error como el


mostrado.

118
Tuplas

Al igual que con las listas en una tupla se puede conocer la


cantidad de elementos de la misma con la función len(), se
define con los siguientes argumentos.

119
Tuplas

Si a una variable se le asigna una secuencia de valores separados


por comas, el valor de esa variable será la tupla formada por todos
los valores asignados.

A esta operación se la denomina empaquetado de tuplas.

120
Diccionarios

En Python, un diccionario es una colección no-ordenada de valores


que son accedidos a través de una clave. Es decir, en lugar de
acceder a la información mediante el índice numérico, como es el
caso de las listas y tuplas, es posible acceder a los valores a través
de sus claves, que pueden ser de diversos tipos.

Las claves son únicas dentro de un diccionario, es decir que no


puede haber un diccionario que tenga dos veces la misma clave, si
se asigna un valor a una clave ya existente, se reemplaza el valor
anterior.
121
Diccionarios

No hay una forma directa de acceder a una clave a través de su


valor, y nada impide que un mismo valor se encuentre asignado a
distintas claves

La información almacenada en los diccionarios, no tiene un orden


particular. Ni por clave ni por valor, ni tampoco por el orden en que
han sido agregados al diccionario.

122
Diccionarios

Cualquier variable de tipo inmutable, puede ser clave de un


diccionario: cadenas, enteros, tuplas (con valores inmutables en sus
miembros), etc.

No hay restricciones para los valores que el diccionario puede


contener, cualquier tipo puede ser el valor: listas, cadenas, tuplas,
otros diccionarios, objetos, etc.

Nota: En otros lenguajes, a los diccionarios se los llama arrays


asociativos, matrices asociativas, o también tablas de hash.

123
Diccionarios

De la misma forma que con listas, es posible definir un


diccionario directamente con los miembros que va a
contener, o bien inicializar el diccionario vacío y luego
agregar los valores de a uno o de a muchos.

Para definirlo junto con los miembros que va a contener, se


encierra el listado de valores entre llaves, las parejas de
clave y valor se separan con comas, y la clave y el valor se
separan con “:”

124
Diccionarios

Para declararlo vacío y luego ingresar los valores, se lo


declara como un par de llaves sin nada en medio, y luego se
asignan valores directamente a los índices.

125
Diccionarios

Para acceder al valor asociado a una determinada clave, se


lo hace de la misma forma que con las listas, pero utilizando
la clave elegida en lugar del índice.

126
Diccionarios

Sin embargo, esto falla si se provee una clave que no está en el


diccionario. Es posible, por otro lado, utilizar la función get(), que
retorna el valor None si la clave no está en el diccionario, o un valor
por omisión que se establece opcionalmente.

127
Diccionarios

Existen diversas formas de recorrer un diccionario. Es


posible recorrer sus claves y usar esas claves para acceder
a los valores.

Es posible, también, obtener los valores como tuplas donde


el primer elemento es la clave y el segundo el valor.

12
8
Diccionarios

Para verificar si una clave se encuentra en el diccionario, es posible


utilizar la palabra reservada in

12
9
Diccionarios

Usos de los diccionarios en Python.

Los diccionarios son una herramienta muy versátil. Se puede


utilizar un diccionario, por ejemplo, para contar cuántas
apariciones de cada palabra hay en un texto, o cuántas
apariciones de cada letra.

Es posible utilizar un diccionario, también, para tener una


agenda donde la clave es el nombre de la persona, y el valor
es una lista con los datos correspondientes a esa persona.
13
0
Diccionarios

Usos de los diccionarios en Python.

También podría utilizarse un diccionario para mantener los


datos de los alumnos inscritos en una materia. Siendo la
clave el número de padrón, y el valor una lista con todas las
notas asociadas a ese alumno.

En general, los diccionarios sirven para crear bases de datos


muy simples, en las que la clave es el identificador del
elemento, y el valor son todos los datos del elemento a
considerar. 131
Conjuntos

El tipo set en Python es la clase utilizada por el lenguaje para representar


los conjuntos. Un conjunto es una colección desordenada de elementos
únicos, es decir, que no se repiten.

Para crear un conjunto, basta con usar el constructor de la clase set() y


pasarle como argumento un objeto iterable (como una lista, una tupla,
una cadena …).

13
2
Conjuntos

Ejemplo creación de conjuntos

13
3
Conjuntos

En realidad, en Python existen dos clases para representar


conjuntos: set y frozenset. La principal diferencia es que set es mutable, por lo que
después de ser creado, se pueden añadir y/o eliminar elementos del conjunto.
Por su parte, frozenset es inmutable y su contenido no puede ser modificado
una vez que ha sido inicializado.
Para crear un conjunto de tipo frozenset, se usa el constructor de la
clase frozenset():

13
4
Conjuntos

Dado que los conjuntos son colecciones desordenadas, en ellos no se


guarda la posición en la que son insertados los elementos como ocurre en
los tipos lista o tupla. Es por ello que no se puede acceder a los elementos
a través de un índice.

Sin embargo, sí se puede acceder y/o recorrer todos los elementos de un


conjunto usando un bucle for:

13
5
Conjuntos

Para añadir un elemento a un conjunto se utiliza el método add(). También


existe el método update(), que puede tomar como argumento
una lista, tupla, string, conjunto o cualquier objeto de tipo iterable.

13
6
Conjuntos

La clase set ofrece cuatro métodos para eliminar elementos de un conjunto.


Son: discard(), remove(), pop() y clear().

Discard(elemento) y remove(elemento) eliminan elemento del conjunto. La


única diferencia es que si elemento no existe, discard() no hace nada
mientras que remove() lanza la excepción KeyError.

Pop() es un tanto peculiar. Este método devuelve un elemento aleatorio del


conjunto y lo elimina del mismo. Si el conjunto está vacío, lanza la
excepción KeyError.

Finalmente, clear() elimina todos los elementos contenidos en el conjunto

13
7
Conjuntos

138
Conjuntos

Se puede usar la función len() para obtener el numero de elementos


contenidos en el conjunto

13
9
Conjuntos

Con los conjuntos también se puede usar el operador de


pertenencia in para comprobar si un elemento esta dentro del
conjunto.

14
0
Conjuntos

La unión de dos conjuntos A y B es el conjunto A ∪ B que contienen todos los


elementos de A y de B

En Python se utiliza el operador | para realizar la unión de dos o mas conjuntos.

También se puede usar la función unión()

141
Conjuntos

La intersección de dos conjuntos A y B es el conjunto A ∩ B que contiene


todos los elementos comunes de A y B.

En Python se utiliza el operador & para realizar la intersección de dos o mas


conjuntos.

También se puede utilizar la función intersection()

14
2
Conjuntos

La diferencia entre dos conjuntos A y B es el conjunto A \ B que contiene todos


los elementos de A que no pertenecen a B.

En Python se utiliza el operador - para realizar la diferencia de dos o mas


conjuntos.

También se puede utilizar la función difference()

14
3
Conjuntos

La diferencia simétrica entre dos conjuntos A y B es el conjunto que contiene los


elementos de A y B que no son comunes

En Python se puede utilizar el operador ^ para realizar la diferencia simétrica de


dos o mas conjuntos.

También se puede utilizar la función symmetric_difference()

14
4
Conjuntos

En Python dos conjuntos son iguales si y solo si todos los elementos de un


conjunto están contenidos en el otro. Esto quiere decir que cada uno es un
subconjunto del otro.

14
5
Conjuntos

Métodos principales de la clase set


Método Descripción

Add() Añade un elemento al conjunto

Clear() Elimina todos los elementos del conjunto

Copy() Devuelve una copia superficial del conjunto

Difference_update(iterable) Actualiza el conjunto tras realizar la diferencia


con el iterable
Discard(e) Elimina, si existe, el elemento del conjunto

Intersection(iterable) Devuelve la intersección del conjunto con el


iterable como un conjunto nuevo. 14
intersection_update(iterable) Actualiza el conjunto tras realizar la 6
intersección con el iterable
Conjuntos
Método Descripción

isdisjoint(iterable) Devuelve True si dos conjuntos son disjuntos

issubset(iterable) Elimina todos los elementos del conjunto

issuperset(iterable) Devuelve True si el conjunto es superconjunto


del iterable
pop() Obtiene y elimina un elemento de forma
aleatoria del conjunto
remove(e) Elimina el elemento del conjunto. Si no existe
lanza un error
symmetric_difference(iterable) Devuelve la diferencia simétrica del conjunto
con el iterable como un conjunto nuevo.
14
symmetric_difference_update(iterable) Actualiza el conjunto tras realizar la diferencia 7
simétrica con el iterable
Conjuntos

Método Descripción

union(iterable) Devuelve la unión del conjunto con el iterable como un


conjunto nuevo
update(iterable) Actualiza el conjunto tras realizar la unión con el iterable

14
8
Clases

En lenguajes orientados a objetos, como Python, las clases son una


forma para crear sus propios objetos. Los objetos son una
encapsulación de variables y funciones en una sola entidad. Los
objetos obtienen sus variables y funciones de las clases.

Aquí introducimos, además, la palabra reservada pass, que sirve para rellenar
un espacio que es requerido sintácticamente. En efecto, no tiene ninguna
función. Por lo que, por el momento, tenemos una clase de nombre Alumno que 14
está vacía. 9
Clases

Las clases pueden contener funciones. Para ello vamos a usar la misma
nomenclatura anterior, con la diferencia que esta vez todo nuestro código
estará indentado cuatro espacios o una tabulación, para indicar que
queremos ubicarlo dentro de la clase.

Todas las funciones definidas dentro de una clase deberán tener, al


menos, un argumento, que por convención se lo llama self y es una
referencia a la instancia de la clase. 15
0
Clases

Debemos crear una instancia de nuestra clase.

Al invocar a un método de la clase, no debemos indicar el


argumento self, ¡Python hace eso por nosotros! De hecho, en nuestro
ejemplo, self no es más que el objeto alumno. El código anterior es un
atajo para el siguiente.

151
Clases

Una clase también puede contener variables, a las que se conoce con el
nombre de atributos. Para crear atributos definimos un método especial
llamado __init__(), que es invocado por Python automáticamente siempre que se
crea una instancia de la clase (conocido también
como constructor o inicializador).

Definimos el método inicializador ya mencionado que, al igual que el resto, debe


llevar por primer argumento a self. Dentro de él creamos una variable
llamada nombre. Sin embargo, para que no se pierda una vez finalizada la 15
función y pueda ser accedida desde otros métodos de la clase (incluso por fuera 2
de la clase), la definimos como self.nombre
Clases

Claramente todos los alumnos que crearemos no tendrán el mismo


nombre. Por ello sería conveniente permitir que, al definir una
instancia, se pase como argumento el nombre del alumno y éste se
almacene en el atributo self.nombre.

Los argumentos del método __init__(), a partir del segundo, son requeridos
15
siempre que se quiera crear una instancia de la clase Alumno.
3
Herencias

La herencia es una herramienta fundamental


para la orientación a objetos. Permite definir
jerarquías de clases que comparten diversos
métodos y atributos. Por ejemplo,
consideremos la siguiente clase Rectangulo.

Supongamos, ahora, que necesitamos definir


otra clase Triangulo.

15
4
Herencias

Los códigos son muy similares, a excepción del método area(). Pero dado que el
método __init__() es el mismo, podemos abstraerlo en una clase padre de la
cual hereden tanto Rectangulo como Triangulo.

15
5
Herencias

Una misma clase puede heredar de varias clases (herencia múltiple);


en ese caso, se especifican los nombres separados por comas.

15
6
Sobre escritura de métodos

La Sobreescritura de métodos se refiere a la posibilidad de que una


subclase cuente con métodos con el mismo nombre que los de una
clase superior pero que definen comportamientos diferentes.

15
7
Fechas y Horas en Python

El módulo datetime incluye funciones y clases para hacer análisis,


formateo y aritmética de fecha y hora.

Datetime contiene funciones y clases para trabajar con fechas y


horas, por separado y en conjunto.

Para trabajar con el modulo se requiere importar de la siguiente


manera

15
8
Horas

Los valores de tiempo se representan con la clase time. Una


instancia time tiene atributos para hour, minute, second, y microsecond y
también incluye información de zona horaria.

Los argumentos para inicializar una instancia time son opcionales, pero es
poco probable que el valor predeterminado de 0 sea correcto. 15
9
Horas

Una instancia time solo tiene valores de tiempo, y no una fecha asociada con
el tiempo.

Los atributos de clase min y max reflejan el rango válido de de horas en un


solo día.

16
0
Horas

La resolución para time está limitada a micro segundos completos.

Los valores de coma flotante para microsegundos provocan un TypeError

161
Fechas

Los valores de la fecha del calendario se representan con la clase date. Las
instancias tienen atributos para year, month, y day. Es fácil crear una fecha que
represente la fecha actual usando el método de clase today().

16
2
Fechas

Al igual que con time, el rango de valores de fecha soportados puede ser
determinado usando los atributos min y max.

16
3
Fechas

Otra forma de crear nuevas instancias date usa el método replace() de


una date existente.

Este ejemplo cambia el año, dejando el día y el mes sin modificar.

16
4
Combinando Fechas y Horas

Usa la clase datetime para mantener los valores que consisten en


componentes fechas y componentes de tiempo. Al igual que con date, hay
varios métodos de clase convenientes para crear instancias datetime de otros
valores comunes.

Como era de esperar, la instancia datetime tiene todos los atributos de un


objeto date y un objeto time.

16
5
Combinando Fechas y Horas

Al igual que con date, datetime proporciona métodos de clase conveniente para
crear nuevas instancias. También incluye fromordinal() y fromtimestamp()

combine() crea instancias datetime de una instancia date y una instancia time

16
6
Zonas Horarias

Dentro de datetime, las zonas horarias están representadas por subclases


de tzinfo. Como tzinfo es una clase base abstracta, aplicaciones necesitan
definir una subclase y proporcionar implementaciones para algunos métodos
para hacerla útil.

datetime incluye una implementación algo ingenua en la clase timezone que


usa un desplazamiento fijo de UTC, y lo hace no admite diferentes valores de
desplazamiento en diferentes días del año, como dónde se aplica el horario de
verano, o donde el desplazamiento de UTC ha cambiado con el tiempo.

16
7
Zonas Horarias

Para convertir un valor de fecha y hora de una zona horaria a otra,


usa astimezone(). En este ejemplo, dos zonas horarias separadas 6 horas a
cada lado de UTC se muestran, y la instancia utc de datetime.timezone también
se usa como referencia. La última línea del resultado muestra el valor en la zona
horaria del sistema, adquirida por astimezone() sin argumento.

16
8
Lectura de archivos en Python

Al igual que en otros lenguajes de programación, en Python es


posible abrir ficheros y leer su contenido. Los ficheros o archivos
pueden ser de lo más variado, desde un simple texto a contenido
binario.

Para poder abrir un fichero de texto utilizaremos la función open()

16
9
Lectura de archivos en Python

Vamos a crear un archivo de texto (.txt) con el nombre “EjemploLectura.txt”


Con el siguiente contenido

17
0
Lectura de archivos en Python

Con el método open() ya tenemos el fichero abierto y listo para usar, podemos
imprimir su contenido con read(). El siguiente código imprime todo el fichero

171
Lectura de archivos en Python

Es posible también leer un numero de líneas determinado y no todo el fichero de


golpe. Para ello usamos la función readline(). Cada vez que se llama a la
función se lee una línea, una vez leído todas las líneas del archivo, la función ya
no devolverá nada.

17
2
Lectura de archivos en Python

Existe otro método llamado readlines(), que devuelve una lista donde cada
elemento es una línea del fichero.

17
3
Lectura de archivos en Python

De manera muy sencilla podemos iterar las líneas e imprimirlas por


pantalla.

17
4
Lectura de archivos en Python

Hasta ahorita solo hemos visto la función open() con tan solo un argumento
de entrada, el nombre del archivo de texto. Podemos usar un segundo
argumento que se trata del modo de apertura del archivo de texto.

‘r’: Por defecto, para leer el fichero.


‘w’: Para escribir en el fichero.
‘x’: Para la creación, fallando si ya existe.
‘a’: Para añadir contenido a un fichero existente.
‘b’: Para abrir en modo binario.

Por lo tanto lo estrictamente correcto si queremos leer el archivo seria hacer


lo siguiente:

17
5
Lectura de archivos en Python
Otra cosa que debemos hacer cuando trabajamos con ficheros en
Python, es cerrarlos una vez que ya hemos acabado con ellos.
Aunque es verdad que el fichero normalmente acabará siendo cerrado
automáticamente, es importante especificarlo para evitar tener
comportamientos inesperados.

Por lo tanto si queremos cerrar un fichero solo tenemos la función


close() sobre el mismo. Por lo tanto tenemos tres pasos:

1.- Abrir el archivo que vamos a usar, agregando el argumento “r”


2.- Usar el fichero para recopilar datos o procesar los datos que
necesitamos
3.- Cuando terminemos cerramos el archivo

17
6
Escritura de archivos en Python

Lo primero que debemos de hacer es crear un objeto para el fichero, con el


nombre que queramos, además del nombre se puede pasar un segundo
parámetro que indica el modo en el que se tratará el fichero.

‘w’: Borra el fichero si ya existiese y crea uno nuevo con el nombre indicado.
‘a’: Añadirá el contenido al final del fichero si ya existiese (append end Inglés)
‘x’: Si ya existe el fichero se devuelve un error.

Por lo tanto con la siguiente línea estamos creando un fichero con el


nombre datos_guardados.txt.

177
Escritura de archivos en Python

Ya hemos visto como crear el fichero. Veamos ahora como podemos añadir
contenido. Empecemos escribiendo un texto.

Si abrimos el fichero “datos_guardados.txt”, veremos que efectivamente


contiene una línea con “Contenido a escribir”.

17
8
Escritura de archivos en Python

Es muy importante el uso de close() ya que si dejamos abierto el archivo,


podríamos llegar a tener un comportamiento inesperado que queremos
evitar. Por lo tanto, siempre que se abre un archivo es necesario cerrarlo
cuando terminemos de utilizarlo

17
9
Escritura de archivos en Python

También podemos usar el método writelines() y pasarle una lista, este método
se encargara de guardar todos los elementos de la lista en el fichero.

18
0
Escritura de archivos en Python

Lo que se guarda es ManzanaPeraPlátano, todo junto. Si queremos que cada


elemento se almacene en una línea distinta, deberíamos añadir el salto de
línea en cada elemento de la lista como se muestra a continuación.

181
Escritura de archivos en Python

Podemos ahorrar una línea de código si hacemos uso de lo siguiente. En este


caso nos podemos ahorrar la llamada al close() ya que se realiza
automáticamente. El código anterior se podría reescribir de la siguiente
manera.

18
2
Expresiones regulares

Una de las tareas más utilizadas en la programación es la búsqueda de


subcadenas o patrones dentro de otras cadenas de texto.

Las expresiones regulares, también conocidas como 'regex' o 'regexp', son


patrones de búsqueda definidos con una sintaxis formal. Siempre que sigamos
sus reglas, podremos realizar búsquedas simples y avanzadas, que utilizadas en
conjunto con otras funcionalidades, las vuelven una de las opciones más útiles e
importantes de cualquier lenguaje.

Para su uso se importa el modulo re

18
3
Expresiones regulares

Métodos básicos

Re.search: busca un patrón en otra cadena

Como vemos, al realizar la búsqueda lo que nos encontramos es un objeto de


tipo Match (encontrado), en lugar un simple True o False. 18
4
En cambio, si no encuentra la palabra, no se devolvería nada (None)
Expresiones regulares

Podemos agregar una condicional a nuestra búsqueda sin ningún problema:

18
5
Expresiones regulares

Sin embargo, volviendo al objeto devuelto de tipo Match, éste nos


ofrece algunas opciones interesantes.

18
6
Expresiones regulares

re.match busca un patrón al principio de otra cadena:

18
7
Tkinter

Tkinter es la librería mas utilizada para crear interfaces gráficas en Pyhton.


Por defecto, viene instalada junto con el lenguaje, y puede ser utilizada desde
cualquier programa en Python.

Ventajas:

• Es multiplataforma, así que el mismo código funciona en Windows, Mac y


Linux.
• Los elementos visuales son renderizados usando los elementos nativos
del sistema operativo.
• Es ligero, y relativamente fácil de usar

18
8
Tkinter

El elemento principal de una interfaz de tkinter es la ventana (window). Las


ventanas son los contenedores en cada uno de los elementos de la interfaz.

Los elementos como cajas de texto, texto, botones, etc., se conocen como
widgets.

18
9
Tkinter

Para comenzar a utilizar Tkinter, lo primero que se debe hacer es importar la


librería.

Una ventana es una instancia de una clase de tkinter. Para crearla se hace
de la siguiente manera:

Si se ejecuta el programa aparecerá una nueva ventana, el diseño con el que


se ve dependerá del sistema operativo en que se ejecute.

19
0
Tkinter

Uno de los widgets que se pueden crear es el de texto (Label). Se crea


usando la clase tk.Label:

En la ventana del programa aun no se verá ningún cambio. Solo se creo un


widget label, pero aun no se añade a la ventana.
Hay muchas maneras de agregar widgets a las ventanas. Por ejemplo el
método .pack():

Cuando se usa el método .pack(), tkinter cambia el tamaño de la ventana a lo


mas pequeño posible para mostrar el widget.
191
Tkinter

De momento tkinter esta únicamente mostrando un texto, pero no le es


posible realizar acciones, como funcionamiento de botones, o interacciones
con el usuario. Para lograrlo, se debe hacer uso de mainloop(), el cual sirve
como administrador de eventos.

19
2
Tkinter

Cuando se crea un widget, es creado con los valores de personalización por


defecto, pero estos pueden ser modificados con parámetros.

Hay multiples colores permitidos, incluyendo:


• Rojo
• Naranja
• Amarillo
• Verde
• Azul
• Morado
La mayoría de colores html funcionan con tkinter. 19
3
Tkinter

También se pueden utilizar valores hexadecimales:

Las palabras background y foreground se pueden cambiar por bg y fg.

Otro parámetro es el de ancho y altura del texto:

El tamaño esta definido por unidades de texto. Ambos valores son el tamaño
del numero 0 con el tipo de letra por defecto del sistema actual.
19
4
Creando una ventana

.
Evitar modificar el tamaño
▪ resizable (se agrega antes del mainloop):

.
Agregar etiquetas

▪ Label (se requiere importar ttk)

.
Agregar etiquetas (método 2)
▪ Label (se requiere importar ttk)

. 1
9
Agregar botones
▪ Se agrega el botón:

Se le asigna una función para el manejo de su evento:

Nota: Las funciones deben agregarse antes del código principal


que las manda llamar. 199
.
Agregar botones
▪ Código completo:

200
.
Agregar botones
▪ Ventana antes y después de generado el evento (click):

201
.
Agregar una caja de texto
▪ Entry:

Modificamos la función del evento para que imprima el nombre


que se acaba de preguntar:

202
.
Agregar caja de texto
▪ Código completo:

203
.
Agregar caja de texto
▪ Ventana antes y después de generado el evento (click):

204
.
Objeto activo

▪ focus (se agrega antes del mainloop y nos define cual de


los objetos de la interfaz gráfica estará activo cuando se
arranque la interfaz:

.
Deshabilitar eventos

▪ configure:

206
.
Deshabilitar eventos
No se puede
▪ configure:
hacer click en el
evento

207
.
Listas desplegables
▪ Combobox:

208
.
Listas desplegables
▪ Combobox:

209
.
Botones de control
▪ Checkbutton:

210
.
Botones de control

▪ Checkbutton:

211
.
Botones para opciones
▪ Radiobutton (variables para colores):

212
.
Colores
▪ Lista de colores reconocidos por TK:

213
.
Botones para opciones
▪ Radiobutton:

214
.
Botones para opciones

▪ Radiobutton:

215
.
Botones para opciones
▪ Radiobutton:

Rabiobutton (rojo seleccionado):

216
.
Cajas de texto (varias líneas)

▪ Importar librería:

Insertar caja de texto:

217
.
Cajas de texto (varias líneas)
▪ scrolledtext:

218
.
Cajas de etiquetas

▪ LabelFrame - Permite ubicar varios componentes dentro de un


contenedor:

219
.
Cajas de etiquetas

▪ LabelFrame - Permite ubicar varios componentes dentro de un


contenedor:

220
.
Cajas de etiquetas

▪ Para colocar la posición de inicio del contenedor:

221
.
Barra de Menús
▪ Importar biblioteca:

Crear Menú:

222
.
Barra de Menús

▪ Pantalla con menús:

223
.
Barra de Menús
▪ Menú con una opción y submenús:

224
.
Barra de Menús
▪ Menú con 2 opciones y línea divisoria:

225
.
Barra de Menús
▪ Menú con 2 opciones:

226
.
Barra de Menús (salir)
▪ Evento salir (se modifica el menú para el manejo del evento):

Se agrega la función para el manejo del evento

227
.
Pestañas
▪ Ventana con pestaña:

228
.
Pestañas

▪ Ventana con dos pestañas:

229
.
Cajas de mensajes
▪ Importar librería para los mensajes (messagebox):

230
.
Cajas de mensajes

▪ Crear la barra de menús:

231
.
Cajas de mensajes

▪ Función para el manejo del evento:

232
.
Cajas de mensajes

233
.
Cajas de mensajes
▪ Función para el manejo del evento:

234
.
¿Qué es un GPIO?
General Purpose Input Output (GPIO) es un sistema de entrada y salida de
propósito general, es decir, consta de una serie de pines o conexiones que se
pueden usar como entradas o salidas para múltiples usos. Estos pines están
incluidos en todos los modelos de Raspberry Pi aunque con diferencias.

23
5
Pines del GPIO
Amarillo (2): Alimentación a 3.3V.
Rojo (2): Alimentación a 5V.
Naranja (26): Entradas / salidas de propósito general.
Pueden configurarse como entradas o salidas. Ten
presente que el nivel alto es de 3.3V y no son
tolerantes a tensiones de 5V.
Gris (2): Reservados.
Negro (8): Conexión a GND o masa.
Azul (2): Comunicación mediante el protocolo I2C
para comunicarse con periféricos que siguen este
protocolo.
Verde (2): Destinados a conexión para UART para
puerto serie convencional.
Morado (5): Comunicación mediante el protocolo SPI
para comunicarse con periféricos que siguen este 23
protocolo. 6
Todos los pines son de tipo "unbuffered", es decir, no disponen de buffers
de protección y puedes dañar la placa con un mal uso.

23
7
Existen 2 formas de numerar los pines de la Raspberry Pi, en modo BOARD o
en modo BCM.

En el modo BOARD, los pines se numeran de forma física por el lugar que ocupan
en la placa (representados por el color gris) viene siendo igual para todas las
versiones (comenzamos a contar desde arriba a la izquierda y finalizamos abajo a
la derecha)

En el modo BCM, los pines se numeran por la correspondencia en el chip


Broadcom (que es la CPU de la Raspberry Pi). Se usarán la numeración GPIO de
la placa.

Por este mismo motivo pueden encontrar 2 nomenclaturas a la hora de realizar las
prácticas de electrónica con Raspberry Pi, cuando nos refiramos al modo BOARD
o al modo BCM. A continuación mostramos una tabla de equivalencias. 23
8
23
9
24
0
¿Cómo conectar Python con GPIO en Raspberry
Pi?
Por defecto, Python viene instalado en el sistema operativo de Raspbian para
Raspberry Pi. Con lo cual si estás utilizando otro sistema operativo en tu placa y
no tienes la librería GPIO instalada correctamente, tendrán que instalarla
mediante comandos

Ejemplo de ello re realiza con el siguiente comando.

apt-get install idle

24
1
Al hacer uso de una sintaxis legible, la curva de aprendizaje es muy rápida, siendo de
este modo, uno de los mejores lenguajes para iniciarse en la programación en modo
texto.

Por ejemplo, si comparamos un código escrito en lenguaje de programación por


bloques como Scratch y el mismo código lo escribimos utilizando Python, vemos las
similitudes en las instrucciones.

24
2
Programar salidas GPIO

1- La librería con la que estaremos trabajando

2- Definir el modo de trabajo

3- Definir un GPIO como ENTRADA o SALIDA

4- Asumimos que el pin esta configurado como salida

5- Asumimos que el pin esta configurado como entrada

24
3
Configuración en programación

import RPi.GPIO as GPIO #Importar librería GPIO

GPIO.setmode(GPIO.BCM) #Especificar el modo de trabajo

GPIO.setup(2,GPIO.OUT) #Configurar los puertos que se usarán

GPIO.output(2,GPIO.HIGH) #Mandar corriente al pin


GPIO.output(2,GPIO.LOW) #Quitar corriente del pin

GPIO.cleanup() #Dejar de usar pines

24
4
Test del Pin GPIO

Conectar un led con una resistencia de 220 al GPIO 2 del Rasberry, hacer que el
programa pida una letra por teclado, si la letra es “a” encender el led, si la letra es
“b” apagar el led, si la letra es “z” finalizar el Programa, otra letra no hacer caso..

24
5
El programa quedaría de la siguiente forma

import RPi.GPIO as GPIO

GPIO.setmode(GPIO.BCM)

GPIO.setup(2,GPIO.OUT)

continuar = True
while continuar:
dato = input("Digite la letra de control: ")
if dato == "a":
GPIO.output(2,GPIO.HIGH)
elif dato == "b":
GPIO.output(2,GPIO.LOW)
elif dato == "z":
continuar = False
GPIO.cleanup()
24
print ("Fin del programa") 6
Librería Time

Import Rpi.GPIO as GPIO


Import time

print(“Bienvenido”)
time.sleep(3)
print(“Como te llamas?”)

24
7
Led intermitente

Conectar un Led al Pin GPIO2, hacer que el led parpadee


infinitamente, con Tiempo de encendido de: 400 ms
Y un tiempo de apagado de: 200ms

24
8
Encendido de 1 Led intermitente

Import Rpi.GPIO as GPIO


Import time

GPIO.setmode(GPIO.BCM)
GPIO.setup(2,GPIO.OUT)

try:
while true:
GPIO.output(2, True)
time.sleep(0.4)
GPIO.output(2, False)
time.sleep(0.2)

except:
print(“Fin del programa”)
24
GPIO.cleanup() 9
2 Led intermitente

Conectar un Led al Pin GPIO2 y otro al Pin GPIO3,hacer que los leds
parpadeen infinitamente, con tiempo de encendido de: 400 ms y un tiempo de
apagado de: 200ms

25
0
Encendido de 2 Leds intermitentes en forma de espejo

import RPi.GPIO as GPIO


import time

GPIO.setmode(GPIO.BCM)
GPIO.setup(2,GPIO.OUT)
GPIO.setup(3,GPIO.OUT)

try:
while True:
GPIO.output(2,GPIO.HIGH)
GPIO.output(3,GPIO.LOW)
time.sleep(0.4)
GPIO.output(2,GPIO.LOW)
GPIO.output(3,GPIO.HIGH)
time.sleep(0.2)
except:
print("Fin del programa")
25
GPIO.cleanup()
1
Led con Pulsador

Mientras el Pulsador se presione, el led debe de encender,


Si el pulsador no se presiona el led no enciende.

Led conectado el GPIO 2


Pulsador conectado al GPIO 20

25
2
Led con Pulsador

import RPi.GPIO as GPIO

GPIO.setmode(GPIO.BCM)
GPIO.setup(2,GPIO.OUT)
GPIO.setup(20,GPIO.IN)

ty:
while True:
if GPIO.input(20) == GPIO.HIGH:
GPIO.output(2,GPIO.HIGH)
else:
GPIO.output(2,GPIO.LOW)
except:
GPIO.cleanup()
print("Fin del programa")
25
3
Encendido y apagado de led con Botones
Gráficos
Conectar un led con una resistencia de 220 al GPIO 2 del Rasberry, hacer que el
programa pida un botón para encender, otro para apagar y tener un lector que nos
indique el estado del Led.

25
4
import tkinter etiqueta=tkinter.StringVar()
import RPi.GPIO as GPIO ---- etiqueta.set("Apagado")
importamos la libreria fm = tkinter.Frame(w)
fm.grid(row=0,column=0)
def apagar():
print("Apagar")
GPIO.output(2,GPIO.LOW) b1 = tkinter.Button(fm,text =
etiqueta.set("Apagado") "Apagar",command=apagar)
def encender(): b1.grid(row=1,column=0)
print("Encender") b2 = tkinter.Button(fm,text =
GPIO.output(2,GPIO.HIGH) "Encender",command=encender)
etiqueta.set("Encendido") b2.grid(row=1,column=1)
lb =
GPIO.setmode(GPIO.BCM) ---- tkinter.Label(fm,textvariable=etiqueta)
Definimos nuestro GPIO lb.grid(row2,column=0,columnspan=2)
GPIO.setup(2,GPIO.OUT)
GPIO.output(2,GPIO.LOW) w.mainloop()

w = tkinter.Tk() 25
5
Programación del semáforo en Python
En esta lección se va a construir y programar en Python un sencillo semáforo. Para la programación
podemos utilizar el editor de PYthon 3 (IDLE) o el IDE Thonny Python que viene instalado en Raspbian
para Raspberry Pi.

Lo primero que debemos hacer es importar las librerías a utilizar. A continuación se declara el tipo de
pin que vamos a utilizar y por último se procede a la programación.

Como hemos dicho que se va a realizar


un semáforo sencillo, bastará con crear
un bucle e ir activando y desactivando los
pines conectados a los led. En este caso
vamos a utilizar los pines 11, 13 y 15 de
nuestra placa de Raspberry Pi.
25
6
import RPi.GPIO as GPIO
import time

GPIO.setmode(GPIO.BCM)
GPIO.setup(11, GPIO.OUT)
GPIO.setup(13, GPIO.OUT)
GPIO.setup(15, GPIO.OUT)

while True:
GPIO.output(11, GPIO.HIGH)
GPIO.output(13, GPIO.LOW)
GPIO.output(15, GPIO.LOW)
time.sleep(5)
GPIO.output(11, GPIO.LOW)
GPIO.output(13, GPIO.HIGH)
GPIO.output(15, GPIO.LOW)
time.sleep(1)
GPIO.output(11, GPIO.LOW)
GPIO.output(13, GPIO.LOW)
GPIO.output(15, GPIO.HIGH)
time.sleep(5)

25
7
¿Qué es PWM?

La modulación por ancho de pulsos o PWM (pulse-width modulation) de una señal es una técnica en la
que se modifica el ciclo de trabajo de una señal periódica para controlar la cantidad de energía que se envía,
o dicho de otro modo, modificamos el tiempo de la señal para simular una señal analógica.

Consiste en generar una señal periodica(Periodo T), donde el tiempo estara en estado alto y el resto en
estado bajo.

0<=Ton<=T

DC = 100%*(Ton/T

TON Periodo 25
8
25
Ejemplo grafico 9
Manejo del PWM en un led

Pedir por teclado un valor(Duty Cicle) de 0 a 100, y eso colocarle al led conectado al Raspberry en el GPIO2.

26
0
import RPi.GPIO as GPIO

GPIO.setmode(GPIO.BMC)
GPIO.setup(2,GPIO.OUT)

pwm = GPIO.PWM(2,500)
pwm.start(0)

continuar = True
while continuar:
dato = input("Digite el nuevo DC: ")
if dato == "z":
continuar = False
else:
pwm.ChangeDutyCycle(int(dato))
pwm.atop()
GPIO.cleanup()
print("Fin del programa")
26
1
Control de un servomotor por PWM

Controlar por PWM un micro servo SG90 colocado en el GPIO 2, hacer que el pida el dc al usuario

26
2
import RPi.GPIO as GPIO

GPIO.setmode(GPIO.BCM)
GPIO.setup(2,GPIO.OUT)

pwm = GPIO.PWM(2,50)
pwm.start(2.5)

continuar = True
while continuar:
dato = input("digite el dc para el Servomotor: ")
if dato == "z":
continual = False
else:
pwm.ChangeDutyCycle(float(dato))
pwm.stop()
GPIO.cleanup()
print("Fin del programa")

26
3
Sensor Digital Ultrasónido HCSR04

• VCC – corriente. Conectado a la salida de 5 voltios de la placa

• GND – masa o tierra. Conectado a dicho pin en la placa.

• TRIG – conectado al pin digital de la placa encargado de enviar


el pulso ultrasónico.

• ECHO – conectado al pin digital que recibirá el eco de dicho


pulso

Trigger 10us

Tiempo t
Eco
D = v(m/s)*t(s)
2d = 340(m/s)*t(s)
2d = 340(100cm/s)*t(s) 26
2d = 3400(cm)*t 4
D = 1700*t(cm)
Calcular la distancia de un objeto en centímetros, el Trigger esta en el GPIO 2 y el
Echo en el GPIO 20

26
5
Formula

Duración = Distancia de regreso – Distancia de ida


Duración = Primer final – Pulso de inicio

# Considerando que la distancia fue recorrida 2 veces y que la velocidad del sonido es de 343 m/s.

Distancia = 34300 * duración / 2

26
6
import RPi.GPIO as GPIO
import time

GPIO.setmode(GPIO.BCM)
GPIO.setup(4,GPIO.OUT)
GPIO.setup(21,GPIO.IN)
GPIO.setup(4,GPIO.LOW)

try:
while True:
GPIO.output(4,GPIO.HIGH)
time.sleep(0.00001)
GPIO.output((4,GPIO.LOW)
t1 = time.time()

while GPIO.input(21) == GPIO.LOW:


t1 = time.time()

while GPIO.input(21) == GPIO.HIGH:


t2 = time.time()

t = t2-t1
d = 1700*t
print("Distancia: ",round(d,1),"cms")
time.sleep(0.2)
26
except: 7
GPIO.cleanup()
print("Fin del Programa")
Lectura DTH11 Con la Raspberry

Leer los valores de temperatura y humedad con el DTH11 e imprimirlos, conectar el DTH11 a pin GPIO 4

26
8
Instalar la libreria

Introducir los siguientes comandos en consola:

git clone https://github.com/adafruit/Adafruit_python_DHT.git

sudo su

cd Adafruit_python_DHT

sudo python3 setup.py install

26
9
Conexión

27
0
import Adafruit_DHT as dht

sensor = dht.DHT11

continuar = True
while continuar:
dato = input("Digite algo para leer el sensor: ")
if dato == "z":
continuar = False
else:
h,t = dht.read_retry(sensor,4)
print("T=",t," ,H=",h)
print("Fin del programa")

27
1
Por su atención

¡MUCHAS
GRACIAS!
27
2

También podría gustarte