100% encontró este documento útil (1 voto)
315 vistas105 páginas

Desarrollo de Aplicaciones en Python

Este documento presenta los conceptos básicos de Python y proporciona ejemplos de código para aplicarlos. Cubre temas como variables, tipos de datos, cadenas, colecciones de datos, condicionales, bucles, funciones, clases, módulos, manejo de errores y más. El objetivo es que los estudiantes adquieran conocimientos sobre algoritmos y estructuras de datos en Python para desarrollar habilidades en programación.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
100% encontró este documento útil (1 voto)
315 vistas105 páginas

Desarrollo de Aplicaciones en Python

Este documento presenta los conceptos básicos de Python y proporciona ejemplos de código para aplicarlos. Cubre temas como variables, tipos de datos, cadenas, colecciones de datos, condicionales, bucles, funciones, clases, módulos, manejo de errores y más. El objetivo es que los estudiantes adquieran conocimientos sobre algoritmos y estructuras de datos en Python para desarrollar habilidades en programación.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

ÍNDICE

I. APLICAR ELEMENTOS PARA EL DESARROLLO DE APLICACIONES DE


CÁLCULO.............................................................................................................. 1
1.1. RECONOCER Y APLICAR VARIABLES DE PYTHON .............................................. 1
1.2. CONVERSIONES ENTRE TIPOS DE DATOS .......................................................... 6
1.3. MANEJO DE CADENAS Y OPERACIONES ............................................................. 8
1.4. CREAR COLECCIONES DE DATOS ...................................................................... 12
II. DESARROLLAR APLICATIVO CON MANEJO DE PROGRAMACIÓN
LÓGICA Y FICHEROS ........................................................................................ 18
2.1. TRABAJAR CON CONDICIONALES Y BUCLES ..................................................... 18
2.2. GENERAR CLASES OBJETOS Y FUNCIONES ...................................................... 38
2.3. TRABAJAR CON MÓDULOS.................................................................................... 44
2.4. TRABAJAR CON FICHEROS DE TEXTO Y BINARIOS ........................................... 47

III. CREAR APLICACIÓN CON EL MANEJO DE ERRORES Y GESTIÓN DE


EXPRESIONES REGULARES ............................................................................ 51
3.1. RECONOCER LA GESTIÓN DE ERRORES - TRY… CATCH ................................. 51
3.2. TRABAJAR CON EXPRESIONES REGULARES ..................................................... 54
3.3. DEVOLVER VALORES CON JSON ......................................................................... 55
3.4. FUNCIONES DE FECHA Y HORA ............................................................................ 56

IV. DESARROLLAR APLICACIONES CON BASE DE DATOS


Y ENTORNO GRAFICO ...................................................................................... 59
4.1. ESTRUCTURAR UNA BASE DE DATOS ................................................................. 59
4.2. GENERAR UNA INTERFAZ GRÁFICA CON TKINTER ............................................ 63
4.3 GENERAR DOCUMENTACIÓN AUTOMÁTICAMENTE........................................... 71
4.4. TRABAJAR CON PRUEBAS AUTOMÁTICAS .......................................................... 77
ALGORITMIA DE PROGRAMACIÓN DEL SOFTWARE

1 APLICAR ELEMENTOS PARA EL DESARROLLO DE APLICACIONES DE CÁLCULO.


La asignatura es de naturaleza teórico - práctico, tiene por objetivo que el estudiante adquiera
conocimientos sobre aspectos fundamentales del que, y como se implementar algoritmos y estructuras
de control y datos en Python a si mismo desarrollar las habilidades en la programación.

Las competencias que lograrás como estudiante serán:

Comprender y analizar y programar algoritmos con características de ser


prácticos sobre la creación de programas utilizando el lenguaje Python
mediante Spyder de Anaconda studio.

1.1 Reconocer y aplicar variables en Python

¿QUE ES PYTHON?

Python es un lenguaje de scripting independiente de plataforma y orientado a objetos, preparado para


realizar cualquier tipo de programa, desde aplicaciones Windows a servidores de red o incluso, páginas web.
Es un lenguaje interpretado, lo que significa que no se necesita compilar el código fuente para poder
ejecutarlo, lo que ofrece ventajas como la rapidez de desarrollo e inconvenientes como una menor velocidad.

Parte 1

ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN 1


ALGORITMIA DE PROGRAMACIÓN DEL SOFTWARE

Solución

Forma 1

Salida

Forma 2

ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN 2


ALGORITMIA DE PROGRAMACIÓN DEL SOFTWARE

Forma 3

Salida

Forma 4

ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN 3


ALGORITMIA DE PROGRAMACIÓN DEL SOFTWARE

Ejercicio Practico

Nuestro próximo ejemplo incluye la fórmula para convertir la temperatura medida en grados Celsius al valor
correspondiente en grados Fahrenheit:

En esta fórmula, C = 21 es la cantidad de grados en grados Celsius, y F es la temperatura correspondiente


medida en Fahrenheit. Nuestro objetivo ahora es escribir un programa de computadora que pueda calcular
F cuando se conoce a C.

Parte 2

Importando módulos: Evaluando funciones matemáticas estándar

Las fórmulas matemáticas frecuentemente involucran funciones como sin, cos, tan, sinh, cosh, exp, log, etc.
En una calculadora de bolsillo, usted tiene botones especiales para tales funciones. Del mismo modo, en un
programa, escrito en Python, también tiene una funcionalidad ya preparada para evaluar estos tipos de
funciones matemáticas. Uno podría, en principio, escribir su propio programa para evaluar, por ejemplo, la
función sin(x), pero cómo hacerlo de manera eficiente es un tema no trivial. Los expertos han trabajado en
este problema durante décadas e implementado sus mejores recetas en piezas de software que deberíamos
reutilizar

Problema

Considere la fórmula para calcular la altura de una bola en movimiento vertical, con una velocidad inicial hacia
arriba v0:

ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN 4


ALGORITMIA DE PROGRAMACIÓN DEL SOFTWARE

El programa para evaluar las expresiones para t1 y t2 en un programa de computadora, necesitamos acceso a
la función de raíz cuadrada. En Python, la función de raíz cuadrada y muchas otras funciones matemáticas,
como sin, cos, sinh, exp, y log, están disponibles en un módulo llamado math. Primero debemos importar el
módulo antes de que podamos usarlo, es decir, debemos escribir import math. A partir de entonces, para tomar
la raíz cuadrada de una variable a, podemos escribir [Link](a). Esto se demuestra en un programa para
calcular t1 y t2:

Módulo math

Salida

ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN 5


ALGORITMIA DE PROGRAMACIÓN DEL SOFTWARE

1.2 Conversiones entre tipos de datos

Python no existe la necesidad de declarar las variables con un tipo de dato en específico ya que Python
trabaja de un modo "genérico" y procesa las variables con el tipo de dato con el que se encuentren. Sin
embargo, la conversión de tipo de datos se utiliza frecuentemente con la entrada de datos, es decir, cuando
utilizamos la función 'input ()'.

Forma 1

Convertir un dato tipo int en un dato tipo float.

Salida

Forma 2

Convertir un dato tipo float en un dato tipo string.

Salida

ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN 6


ALGORITMIA DE PROGRAMACIÓN DEL SOFTWARE

Forma 3

El usuario deberá ingresar un dato tipo entero y este será convertido en string

Salida

Numero ingresado por usuario

Forma 4

Salida

Numero ingresado por usuario

Numero ingresado por usuario en el anterior ejemplo

1.3 Manejo de Cadenas y Operaciones

ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN 7


ALGORITMIA DE PROGRAMACIÓN DEL SOFTWARE

OPERACIONES

Concatenar

Este término significa juntar cadenas de caracteres. El proceso de concatenación se realiza mediante
el operador de suma (+). Ten en cuenta que debes marcar explícitamente dónde quieres los espacios
en blanco y colocarlos entre comillas.

En este ejemplo, la cadena de caracteres “mensaje1” tiene el contenido “Hola Mundo”

Multiplicar
Si quieres varias copias de una cadena de caracteres utiliza el operador de multiplicación (*). En este
ejemplo, la cadena de caracteres mensaje2a lleva el contenido “Hola” tres veces, mientras que la
cadena de caracteres mensaje2b tiene el contenido “Mundo”. Ordenemos imprimir las dos cadenas.

Añadir
¿Qué pasa si quieres añadir material de manera sucesiva al final de una cadena de caracteres? El
operador especial para ello es compuesto (+=).

Métodos para cadenas de caracteres: buscar, cambiar

En adición a los operadores, Python trae preinstalado docenas de métodos que te permiten hacer cosas
con las cadenas de caracteres. Solos o en combinación, los métodos pueden hacer casi todo lo que te
imagines con las cadenas de caracteres. Puedes usar como referencia la lista de métodos de cadenas
de caracteres (String Methods) en el sitio web de Python, que incluye información de cómo utilizar
correctamente cada uno. Para asegurar que tengas una comprensión básica de métodos para cadenas
de caracteres, lo que sigue es una breve descripción de los utilizados más comúnmente.

Extensión
Puedes determinar el número de caracteres en una cadena utilizando el método len. Acuérdate que los
espacios en blanco cuentan como un carácter.

ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN 8


ALGORITMIA DE PROGRAMACIÓN DEL SOFTWARE

Encontrar
Puedes buscar una sub-cadena en una cadena de caracteres utilizando el método find y tu programa te
indicará el índice de inicio de la misma. Esto es muy útil para procesos que veremos más adelante. Ten en
mente que los índices están numerados de izquierda a derecha y que el número en el que se comienza a
contar la posición es el 0, no el 1.

Si la sub-cadena no está presente el programa imprimirá el valor -1.

Minúsculas
A veces es útil convertir una cadena de caracteres a minúsculas. Para ello se utiliza el método lower. Por
ejemplo, al uniformar los caracteres permitimos que la computadora reconozca fácilmente que “Algunas
Veces” y “algunas veces” son la misma frase.

Convertir las minúsculas en mayúsculas se logra cambiando. lower() por upper().

Reemplazar
Si necesitas cambiar una sub-cadena de una cadena se puede utilizar el método replace.

Cortar
Si quieres cortar partes que no quieras del principio o del final de la cadena de caracteres, lo puedes hacer
creando una sub-cadena. El mismo tipo de técnica te permite separar una cadena muy larga en componentes
más manejables.

Puedes sustituir las variables por números enteros como en este ejemplo:

ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN 9


ALGORITMIA DE PROGRAMACIÓN DEL SOFTWARE

Esto hace mucho más simple usar este método en conjunción con el método find como en el próximo ejemplo,
que busca la letra “d” en los seis primeros caracteres de “Hola Mundo” y correctamente nos dice que no se
encuentra ahí (-1). Esta técnica es mucho más eficaz en cadenas largas -documentos enteros, por ejemplo.
Observa que la ausencia de un número entero antes de los dos puntos significa que queremos empezar desde
el principio de la cadena. Podemos usar la misma técnica para decirle al programa que pase hasta el final de
la cadena de caracteres dejando vacío después de los dos puntos. Y recuerda que la posición del índice
empieza a contar desde 0, no desde 1.

Hay muchos más, pero los métodos para cadenas de caracteres anteriores son un buen comienzo. Fíjate que
en el ejemplo anterior utilizamos corchetes en vez de paréntesis. Esta diferencia en los símbolos de
la sintaxis es muy importante. Los paréntesis en Python son utilizados generalmente para llevar un
argumento a una función. De tal manera que cuando vemos algo como:

quiere decir que se lleva la cadena de caracteres “mensaje7” a la función len y entonces enviar el valor
resultante de esa función a la declaración print para ser impresa. Una función puede ser llamada sin un
argumento, pero de todas formas tienes que incluir un par de paréntesis vacíos después del nombre de la
función. Vimos un ejemplo de ello también.

Esta declaración le dice a Python que aplique la función lower a la cadena mensaje7 y guarde el valor
resultante en la cadena mensaje7a.

Los corchetes sirven para propósitos diferentes. La cadena es una secuencia de caracteres; así que, si
quieres acceder al contenido de la cadena a partir de su posición en la secuencia, tienes que indicarle a
Python un lugar en la secuencia. Eso es lo que hacen los corchetes: señalan el lugar del principio y del final
de la secuencia, tal y como vimos en el método cortar.

Secuencias de escape
¿Qué haces cuando necesitas incluir comillas en una cadena de caracteres? No quieres que el intérprete de
Python se equivoque y piense que la cadena termina en donde se encuentre una comilla. En Python puedes
poner una barra invertida (\) enfrente de la comilla para que no acabe ahí la cadena. Esto es conocido como
secuencia de escape.

Otras dos secuencias de escape te permiten incluir marcas de tabulación (t) y saltos de línea (n):

ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN 10


ALGORITMIA DE PROGRAMACIÓN DEL SOFTWARE

Ordenar:

Debemos ordenar los datos de la siguiente lista.

ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN 11


ALGORITMIA DE PROGRAMACIÓN DEL SOFTWARE

1.4 Crear colecciones de datos

Una colección permite agrupar varios objetos bajo un mismo nombre. Por ejemplo, si necesitamos almacenar
en nuestro programa los nombres de los alumnos de un curso de programación, será más conveniente
ubicarlos a todos dentro de una misma colección de nombre alumnos , en lugar de crear los
objetos alumno1 , alumno2 , etc.

En Python existen tres colecciones básicas, a saber: las listas, las tuplas y los diccionarios.

Listas
Una lista es un conjunto ordenado de objetos. Por objetos entendemos cualquiera de los tipos de dato ya
mencionados, incluso otras listas.
Para crear una lista, especificamos sus elementos entre corchetes y separados por comas.

Dado que se trata de una colección ordenada, accedemos a cada uno de los elementos a partir de su
posición, comenzando desde el 0.

(En Python, las cadenas de caracteres pueden estar formadas tanto por comillas dobles como por comillas
simples).

La posición de un elemento, también conocida como índice, aumenta de izquierda a derecha cuando éste
es positivo. Indicando un número negativo, los elementos se obtienen de derecha a izquierda.

ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN 12


ALGORITMIA DE PROGRAMACIÓN DEL SOFTWARE

Para cambiar un elemento, combinamos la nomenclatura descrita con la asignación.

Para remover un elemento, utilizamos la palabra reservada del .

Nótese que cuando un elemento es eliminado, a excepción del último, todos los que lo suceden se corren
una posición hacia la izquierda.
La operación inversa es la de insertar un elemento en una posición determinada, desplazando el resto que
le sucede una posición hacia la derecha, vía el método (volveremos sobre este concepto más
adelante) insert() .

Por último, la operación más común es la de agregar un elemento al final de la lista. Para ello
empleamos append() .

ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN 13


ALGORITMIA DE PROGRAMACIÓN DEL SOFTWARE

Tuplas
Las tuplas, al igual que las listas, son colecciones ordenadas. No obstante, a diferencia de éstas,
son inmutables. Es decir, una vez asignados los elementos, no pueden ser alterados. En términos funcionales,
podría decirse que las tuplas son un subconjunto de las listas, por cuanto soportan las operaciones con índices
para acceder a sus elementos, pero no así las de asignación.

Un intento por remover un elemento de una tupla o asignarle un nuevo valor arrojará un error.
Ahora bien, si las listas hacen todo lo que hace una tupla, ¿para qué, entonces, existen las tuplas?
Sencillamente porque una tupla, justamente por carecer de todas las funcionalidades de mutación de
elementos, es un objeto más liviano y que se crea más rápido.
La función del programador será la de dirimir si para una determinada colección ordenada de objetos le
conviene más una lista o una tupla, según sus elementos deban ser alterados en el futuro o no.

Diccionarios
Los diccionarios, a diferencia de las listas y las tuplas, son colecciones no ordenadas de objetos. Además,
sus elementos tienen una particularidad: siempre conforman un par clave-valor. Es decir, cuando añadimos
un valor a un diccionario, se le asigna una clave única con la que luego se podrá acceder a él (pues la posición
ya no es un determinante).
Para crear un diccionario, indicamos los pares clave-valor separados por comas y estos, a su vez, separados
por dos puntos.

En este ejemplo, creamos un diccionario con tres elementos, cuyas claves son "Python" , "C" y "Java" y
sus valores los años en los que fueron creados, a saber: 1991 , 1972 y 1996 , respectivamente.

Para acceder a cualquiera de los valores, debemos indicar su clave entre corchetes.

ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN 14


ALGORITMIA DE PROGRAMACIÓN DEL SOFTWARE

Las operaciones de añadir, modificar o eliminar valores son similares a las de las listas.
Añadir:

Modificar:

Eliminar:

Las claves típicamente serán números o cadenas, aunque bien podrían ser de cualquier otro tipo de
dato inmutable (todos los vistos hasta ahora son inmutables, a excepción de las listas y los diccionarios).
Además, nunca puede haber claves repetidas, ya que actúan como identificadores únicos para un valor
determinado. Los valores, en cambio, pueden ser de cualquier tipo de dato, ¡incluyendo otros diccionarios!

ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN 15


ALGORITMIA DE PROGRAMACIÓN DEL SOFTWARE

Operaciones comunes
Hemos visto cómo del se aplica tanto a listas como a diccionarios. Existen varias funciones que operan sobre
distintos tipos de colecciones. Por ejemplo, la función incorporada len() retorna el número de elementos en
una colección.

En la tercera llamada pasamos como argumento una tupla que contiene un solo elemento (una cadena). No
obstante, dado que para definir tuplas se emplean paréntesis, es necesario añadir una coma al final para que
Python entienda que se trata de una tupla en lugar de una expresión (los paréntesis también son utilizados
para agrupar expresiones, como en matemática).

Una cadena es, en rigor, una colección de caracteres. Por ello también soporta las operaciones de acceso a
sus elementos (¡no así las de asignación, ya que son inmutables!).

13

Por último, para saber si un elemento está dentro de una colección, empleamos la palabra reservada in .

ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN 16


ALGORITMIA DE PROGRAMACIÓN DEL SOFTWARE

Nótese que el operador in en los diccionarios actúa sobre las claves, no sobre los valores.

ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN 17


ALGORITMIA DE PROGRAMACIÓN DEL SOFTWARE

1 DESARROLLAR APLICATIVO CON MANEJO DE PROGRAMACIÓN LÓGICA Y FICHEROS

2.1 Trabajar con condicionales y Bucles

CONDICIONALES

IF:

También llamada estructura de control de flujo condicional, la estructura condicional es una herramienta
importante en la programación, pues nos permite evaluar un valor que puede ser proporcionados por el
usuario o por el programa.

ELSE:

La función else es un complemento opcional de la función if y sirve para ejecutar órdenes si la condición que
impusimos es falsa.

ELIF:

Por otro lado, la función elif es una manera de anidar condiciones, o sea, darle opción a un cierto valor de
cumplir varias condiciones.

……..

ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN 18


ALGORITMIA DE PROGRAMACIÓN DEL SOFTWARE

Calcula si es un número positivo o negativo

Numero ingresado

Numero ingresado

ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN 19


ALGORITMIA DE PROGRAMACIÓN DEL SOFTWARE

Calcula todos los datos de una división:

Este programa calculará si la división es exacta o no y según ello te deberá indicar su cociente y residuo
según el caso.

Números Ingresados

ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN 20


ALGORITMIA DE PROGRAMACIÓN DEL SOFTWARE

Calcula la etapa:

Ingresar número

ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN 21


ALGORITMIA DE PROGRAMACIÓN DEL SOFTWARE

Crear una calculadora:

Ingresar el número
de la operación

ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN 22


ALGORITMIA DE PROGRAMACIÓN DEL SOFTWARE

Crear un programa:

Este debe decirnos si es el año es bisiesto o no en el calendario greco-romano.

ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN 23


ALGORITMIA DE PROGRAMACIÓN DEL SOFTWARE

Adivinada el número:

Una sentencia condicional puede contener a su vez otra sentencia anidada.


Por ejemplo, el programa siguiente "adivina" el número pensado por el usuario:

Respuestas de Usuario

Número pensado

ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN 24


ALGORITMIA DE PROGRAMACIÓN DEL SOFTWARE

¿Cuántos segundos faltan?

Dado un tiempo en segundos, calcular los segundos restantes que le correspondan para convertirse
exactamente en minutos.

Segundos ingresados

Falta para que se redondee en minutos

ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN 25


ALGORITMIA DE PROGRAMACIÓN DEL SOFTWARE

Fórmula de Ecuación de Segundo grado:

Datos
Ingresados

ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN 26


ALGORITMIA DE PROGRAMACIÓN DEL SOFTWARE

BUCLES:

FOR:

Un bucle for es un bucle que repite el bloque de instrucciones un número predeterminado de veces. El bloque
de instrucciones que se repite se suele llamar cuerpo del bucle y cada repetición se suele llamar iteración.

Ejercicio 1:

Usando rangos, mostrar un programa que imprima la lista de números del 0 al 4

Ejercicio 2:

Usando rangos, mostrar un programa que imprima una lista de números del 0 al 10 y que aumente de 2 en 2.

Ejercicio 3:

Usando listas, crear una tabla de multiplicar

ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN 27


ALGORITMIA DE PROGRAMACIÓN DEL SOFTWARE

Ingrese número

SALIDA

Ejercicio 4

Crear un for para generar la potencia cuadrada de la siguiente lista

ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN 28


ALGORITMIA DE PROGRAMACIÓN DEL SOFTWARE

Ejercicio 5

Crear un algoritmo que solicite por teclado el tamaño del número de índices que tendrá una colección y solicite
en función al de índices valores numéricos con los que se rellenara. Mostrar la sumatoria de toda la lista de
números.

Ingrese la cantidad de números que desea sumar

Números ingresados

ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN 29


ALGORITMIA DE PROGRAMACIÓN DEL SOFTWARE

Ejercicio 6

Utilizando un bucle ingrese 5 números y visualice el mayor y el menor de dichos números.

Ingrese seis números

N° mayor ingresado

N° menor ingresado

ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN 30


ALGORITMIA DE PROGRAMACIÓN DEL SOFTWARE

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).

Ejercicio1:

Crear un programa que escriba los números del 1 al 3

Ejercicio 2:

Crear un programa que sume los números del 1 al 10.

Ejercicio 3:

ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN 31


ALGORITMIA DE PROGRAMACIÓN DEL SOFTWARE

Suma de números mientras sea mayor a 21.

El usuario deberá ingresar el número

Ejercicio 4:

Crear un bucle que te ayude a promediar las notas de un alumno

ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN 32


ALGORITMIA DE PROGRAMACIÓN DEL SOFTWARE

El bucle continuo hasta que escribas “NO”

Ejercicio 5:

Crear un bucle para saber el número mayor y menor

ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN 33


ALGORITMIA DE PROGRAMACIÓN DEL SOFTWARE

Ejercicio 6

Crear un bucle para una contraseña

INCORRECTO

INCORRECTO

CORRECTO

ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN 34


ALGORITMIA DE PROGRAMACIÓN DEL SOFTWARE

Ejercicio 7

Utilizando bucle ingrese números naturales de 2 cifras, termine el ingrese cuando el número ingresado no
se de 2 cifras y luego muestre cuantos números capicúas ingresaron

ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN 35


ALGORITMIA DE PROGRAMACIÓN DEL SOFTWARE

Ejercicio 8

Dado el ingreso de un número de 2 cifras calcule la suma de sus dígitos.

Los dígitos del siguiente


número serán sumados

ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN 36


ALGORITMIA DE PROGRAMACIÓN DEL SOFTWARE

2.2 Generar Clases Objetos y Funciones

¿Qué es POO?

La Programación Orientada a Objetos es un paradigma de programación en el que los conceptos del mundo
real se modelan a través de clases y objetos, y en el que nuestro programa consiste en una serie de
interacciones entre estos objetos.

Un Programa Orientado a Objetos (POO) se basa en una agrupación de objetos de distintas clases que
interactúan entre sí y que, en conjunto, consiguen que un programa cumpla su propósito.

En este paradigma de programación se intenta emular el funcionamiento de los objetos que nos rodean en la
vida real.

¿Qué un Objeto?

Es una entidad que tiene características y puede realizar acciones. Estas entidades que visualizamos y
podemos encontrar a nuestro alrededor son conocidos como objetos.

Por ejemplo, un objeto tiene atributos (edad, salud, color, etc.) y métodos (caminar, pelear, comer, etc.)

¿Qué es una Clase?

Una clase es una colección de objetos de tipo similar. Una vez que se define una clase, cualquier objeto nuevo
creado puede pertenecer a esa clase. Por lo tanto, también podríamos decir que una clase es un conjunto de
objetos.

ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN 37


ALGORITMIA DE PROGRAMACIÓN DEL SOFTWARE

¿Qué es una Función?

Una función es un conjunto de líneas de código agrupadas (bloque de código) que realizan una tarea
específica. (Existen funciones definidas y propias). En Python, la definición de funciones se realiza mediante
la instrucción def. Utilidad: • Reutilización del código (cuando sea necesario)

Ejercicio 1:

ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN 38


ALGORITMIA DE PROGRAMACIÓN DEL SOFTWARE

Ejemplo 2:

Crear una función SIN PARAMETROS que imprima la suma de dos variables con datos son de tipo numéricos

Ejemplo 3:

Usando el ejemplo anterior, ahora sumaremos dos variables que serán definidos como parámetros y ellos
nos permitirá llamar a la función suma y sumar diferentes valores.

Ejemplo 4

Crear una función sin parámetro que imprima la tabla del 5.

ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN 39


ALGORITMIA DE PROGRAMACIÓN DEL SOFTWARE

Ejemplo 5

Hallar los números entre 1 y 20.

ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN 40


ALGORITMIA DE PROGRAMACIÓN DEL SOFTWARE

DECLARANDO UNA CLASE MÍNIMA

Declarando una clase con atributos

ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN 41


ALGORITMIA DE PROGRAMACIÓN DEL SOFTWARE

Métodos

Método __init__ :

ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN 42


ALGORITMIA DE PROGRAMACIÓN DEL SOFTWARE

2.3 Trabajar con Módulos

Un módulo puede contener tanto declaraciones ejecutables como definiciones de funciones. Estas
declaraciones están pensadas para inicializar el módulo. Se ejecutan solamente la primera vez que el módulo
se encuentra en una sentencia import. (Son también ejecutados si el archivo es ejecutado como un script).
Cada módulo tiene su propio espacio de nombres, el que es usado como espacio de nombres global por todas
las funciones definidas en el módulo. Por lo tanto, el autor de un módulo puede usar variables globales en el
módulo sin preocuparse acerca de conflictos con una variable global del usuario. Por otro lado, si sabes lo
que estás haciendo puedes tocar las variables globales de un módulo con la misma notación usada para
referirte a sus funciones, [Link].
Los módulos pueden importar otros módulos. Es costumbre pero no obligatorio el ubicar todas las
declaraciones import al principio del módulo (o script, para el caso). Los nombres de los módulos importados
se ubican en el espacio de nombres global del módulo que hace la importación.
Hay una variante de la declaración import que importa los nombres de un módulo directamente al espacio de
nombres del módulo que hace la importación

Parte 1

El programa para evaluar las expresiones para t1 y t2 en un programa de computadora, necesitamos acceso
a la función de raíz cuadrada. En Python, la función de raíz cuadrada y muchas otras funciones matemáticas,
como sin, cos, sinh, exp, y log, están disponibles en un módulo llamado math. Primero debemos importar el
módulo antes de que podamos usarlo, es decir, debemos escribir import math. A partir de entonces, para
tomar la raíz cuadrada de una variable a, podemos escribir [Link](a). Esto se demuestra en un programa
para calcular t1 y t2:

ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN 43


ALGORITMIA DE PROGRAMACIÓN DEL SOFTWARE

Solución

Forma 1

Salida

Ayuda del módulo math

Importando todas las funciones del módulo math

Esta última línea sirve para importar todas las funciones del módulo [Link] todas las funciones de un
módulo usando el carácter * es conveniente, pero da lugar a una gran cantidad de palabras reservadas que
no se pueden usar. En general se recomienda solo importar las funciones que se van a usar.

ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN 44


ALGORITMIA DE PROGRAMACIÓN DEL SOFTWARE

Forma 2

Importando todas las funciones del módulo math

Enlace de interés

[Link]

ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN 45


ALGORITMIA DE PROGRAMACIÓN DEL SOFTWARE

2.4 Trabajar con ficheros de Texto y Binarios

Escritura y lectura de archivos

Operaciones de entrada y salida en archivos con Python.

Apertura de un archivo con la función open ().

La función open () tiene por objeto interactuar con el sistema de archivos local para crear, sobrescribir, leer
o desplazarse dentro de un archivo ya sea de texto o binario.

<nombre> = open(<ruta del archivo>, <modo>)

Modos de abrir un archivo:

Por el tipo de archivo.

• 't' se trata de un archivo de texto.


• 'b' permite escritura en modo binario
• 'U' define saltos de línea universales para el modo de lectura.
• Los archivos de texto y los archivos binarios representan tipos
distintos en Python.

Por el tipo de acceso.

• 'r' es el modo de lectura.


• 'w' es un modo de escritura. En caso de existir un archivo,
éste es sobrescrito.
• 'a' es un modo de escritura. En caso de existir un archivo,
comienza a escribir al final de éste.
• 'x' es un modo de escritura para crear un nuevo archivo. En
caso de que el archivo exista se emitirá un error de
tipo FileExistsError.
• '+' es un modo de escritura/lectura

ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN 46


ALGORITMIA DE PROGRAMACIÓN DEL SOFTWARE

Tamaño y posición.

Los archivos pueden contener ya sea bytes o caracteres acomodados uno detrás de otro. A cada elemento
le corresponde una posición numérica que inicia a partir de cero.

Métodos más utilizados para gestión de archivos comunes para archivos binarios y de texto.

close()

Es imperativo que una vez que se hayan realizado todas las operaciones de entrada y de salida de
archivos, este sea cerrado de manera adecuada. En caso de no hacerlo, es altamente probable que el
archivo se encuentre en un estado inestable y corra riesgo de que la información contenida se corrompa o
destruya.

writable()

Devolverá True si el archivo está en modo de escritura.

readable()

Devolverá True si el archivo está en modo de lectura.

seekable()

Devolverá True si es posible desplazarse dentro del archivo.

read()

Si el archivo se encuentra en modo de lectura, leerá y regresará el contenido del archivo desde la posición
en la que se encuentre hasta el final del archivo. Si se ingresa un número como argumento, leerá el número
de posiciones indicadas en el argumento.

write()

Si el archivo se encuentra en modo de escritura, añadirá al archivo el contenido ingresado como argumento
a partir de la posición en donde se encuentre, sobrescribiendo el texto por la existente. Una vez terminada
la operación, regresará la nueva posición del puntero.

tell()

Regresará la posición en la que se encuentra el puntero dentro del archivo.

seek()

Moverá el puntero a la posición indicada.

ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN 47


ALGORITMIA DE PROGRAMACIÓN DEL SOFTWARE

Métodos exclusivos para archivos de texto.

readline().

Leerá el texto desde la posición en que se localice hasta encontrar el caracter de escape retorno de línea
(\n).

readlines().

Leerá el texto desde la posición en que se localice y creará un objeto de tipo tuple que contenga cada línea
dentro del archivo.

writelines().

Escribirá el texto contenido dentro de un elemento de tipo list o tuple.

Ejemplo1:

Lectura/Escritura de archivos

Salida:

ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN 48


ALGORITMIA DE PROGRAMACIÓN DEL SOFTWARE

Parte 1

El método readline() lee de un archivo una línea completa

Salida:

Escribir en archivo: write, writelines

El método write() escribe una cadena y el método writelines() escribe una lista a un archivo. Si en el momento
de escribir el archivo no existe se creará uno nuevo.

Salida:

ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN 49


ALGORITMIA DE PROGRAMACIÓN DEL SOFTWARE

3. CREAR APLICACIÓN CON EL MANEJO DE ERRORES Y GESTIÓN DE EXPRESIONES


REGULARES

3.1 Reconocer la gestión de Errores - Try… Catch

Errores y excepciones

Hasta ahora, los mensajes de error no han sido más que mencionados, pero si ha probado los ejemplos,
probablemente haya visto algunos. Hay (al menos) dos tipos distinguibles de errores: errores de
sintaxis y excepciones.

Errores de sintaxis

Los errores de sintaxis, también conocidos como errores de análisis, son quizás el tipo más común de queja
que recibe mientras aún está aprendiendo Python:

El analizador repite la línea ofensiva y muestra una pequeña 'flecha' apuntando al primer punto de la línea
donde se detectó el error. El error es causado por (o al menos detectado en) el token que precede a la flecha:
en el ejemplo, el error se detecta en la función print(), ya que ':'falta dos puntos ( ) antes. El nombre del
archivo y el número de línea se imprimen para que sepa dónde buscar en caso de que la entrada provenga
de un script.

Manejo de excepciones

Es posible escribir programas que manejen excepciones seleccionadas. Mire el siguiente ejemplo, que le pide
al usuario que ingrese hasta que se haya ingresado un número entero válido, pero le permite al usuario
interrumpir el programa (usando Control-Co lo que sea compatible con el sistema operativo); tenga en cuenta
que una interrupción generada por el usuario se señala mediante una KeyboardInterrupt excepción.

ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN 50


ALGORITMIA DE PROGRAMACIÓN DEL SOFTWARE

La try declaración funciona de la siguiente manera.

• En primer lugar, la cláusula try (la declaración (s) entre el try y except se ejecuta palabras clave).
• Si no se produce ninguna excepción, se omite la cláusula except y try finaliza la ejecución de
la declaración.
• Si se produce una excepción durante la ejecución de la cláusula try, se omite el resto de la
cláusula. Luego, si su tipo coincide con la excepción nombrada después de la except palabra clave,
se ejecuta la cláusula except y luego la ejecución continúa después de la try declaración.
• Si se produce una excepción que no coincide con la excepción mencionada en la cláusula except, se
pasa a las try declaraciones externas ; Si no se encuentra ningún controlador, es una excepción no
controlada y la ejecución se detiene con un mensaje como se muestra arriba.

Una try declaración puede tener más de una cláusula, excepto, para especificar controladores para diferentes
excepciones. Como máximo se ejecutará un controlador. Los manejadores solo manejan las excepciones que
ocurren en la cláusula try correspondiente, no en otros manejadores de la misma try declaración. Una cláusula
except puede nombrar múltiples excepciones como una tupla entre paréntesis, por ejemplo:

... except (RuntimeError, TypeError, NameError):

... pass

Una clase en una except cláusula es compatible con una excepción si es la misma clase o una clase base de
la misma (pero no al revés: una cláusula excepto que enumera una clase derivada no es compatible con una
clase base). Por ejemplo, el siguiente código imprimirá B, C, D en ese orden:

ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN 51


ALGORITMIA DE PROGRAMACIÓN DEL SOFTWARE

Ejemplo:

Salida:

ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN 52


ALGORITMIA DE PROGRAMACIÓN DEL SOFTWARE

3.2 Trabajar con Expresiones Regulares

¿Qué son las Expresiones Regulares?

Las expresiones regulares, a menudo llamada también regex, son unas secuencias de caracteres que forma
un patrón de búsqueda, las cuales son formalizadas por medio de una sintaxis específica. Los patrones se
interpretan como un conjunto de instrucciones, que luego se ejecutan sobre un texto de entrada para producir
un subconjunto o una versión modificada del texto original. Las expresiones regulares pueden incluir patrones
de coincidencia literal, de repetición, de composición, de ramificación, y otras sofisticadas reglas de
reconocimiento de texto. Las expresiones regulares deberían formar parte del arsenal de cualquier buen
programador ya que un gran número de problemas de procesamiento de texto pueden ser fácilmente resueltos
con ellas.

Salida:

Ejemplo 1:

En este ejemplo buscamos desarrollar una función en Python que calcule la siguiente sumatoria:

Para calcular esta sumatoria usaremos un bucle y una variable para ir acumulando los términos de la
siguiente sumatoria:

Es bastante natural incorporar el calculo de la anterior sumatoria a función que tome a x y a n como
argumentos y devuelva la sumatoria requerida:

ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN 53


ALGORITMIA DE PROGRAMACIÓN DEL SOFTWARE

3.3 Devolver valores con JSON

De JSON a Python

Leer JSON significa convertir el JSON en un valor de Python (objeto). Como hemos mencionado
anteriormente, la librería json parece el JSON en un diccionario o en una lista en Python. Con el fin de hacer
eso, utilizamos la función loads(), de la siguiente manera:

Si deseas ver la salida, haz un print (jsonToPython). Si todo ha salido bien obtendrás el siguiente resultado:

De Python a JSON

En la sección anterior, hemos visto cómo convertir JSON en un valor de Python (es decir, en un diccionario).
En esta sección, os voy a mostrar cómo convertir (codificar) un valor de Python a JSON.
Tenemos el siguiente diccionario en Python:

Si hacemos print (dictionaryToJson), obtenemos los siguientes datos JSON:

Esta salida se considera la representación de los datos del objeto (diccionario). El método dumps() fue la
clave para dicha operación.
Es importante señalar en este punto que, JSON no puede almacenar todo tipo de objetos de Python, sólo los
siguientes tipos: Lists, Dictionaries, Booleanas, Numbers, Character Strings y None. Por lo tanto, cualquier
otro tipo necesitará ser convertidos a alguno de los mencionados con el fin de ser almacenado en JSON.

ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN 54


ALGORITMIA DE PROGRAMACIÓN DEL SOFTWARE

Devolver valores con JSON

Utilizando archivo

3.4 Devolver funciones de fecha y hora

CASO 1

ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN 55


ALGORITMIA DE PROGRAMACIÓN DEL SOFTWARE

CASO 2

Resultado

CASO 3

ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN 56


ALGORITMIA DE PROGRAMACIÓN DEL SOFTWARE

resultado

Resultado

%d Día, %m Mes, %Y Año, %H Hora, %M Minutos, %S segundos (comodines)

definiendo una función que permita obtener un formato mucho más simpático.

Caso 5

Resultado

ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN 57


ALGORITMIA DE PROGRAMACIÓN DEL SOFTWARE

4. DESARROLLAR APLICACIONES CON BASE DE DATOS Y ENTORNO GRAFICO

4.1 Estructurar una Base de Datos

CON MYSQL

Base de datos / tabla

Descargar Librería

PASO 1

ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN 58


ALGORITMIA DE PROGRAMACIÓN DEL SOFTWARE

Paso 2

Ubicación del
Archivo
Descargado

Digitar la
instalación

Paso 3

ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN 59


ALGORITMIA DE PROGRAMACIÓN DEL SOFTWARE

Resultado

Forma 2

Los datos saldrán de manera ordenada creando un bucle:

Resultado

ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN 60


ALGORITMIA DE PROGRAMACIÓN DEL SOFTWARE

CON MONGODB

Crear la base de datos en MongoDB:

PASO 1

Instalar el pymongo

Digitar la
instalación

PASO 2

Resultado

ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN 61


ALGORITMIA DE PROGRAMACIÓN DEL SOFTWARE
4.2 Generar una interfaz Gráfica con Tkinter

Interfaces gráficas de usuario con Tk

Tk / Tcl ha sido durante mucho tiempo una parte integral de Python. Proporciona un kit de herramientas de
ventanas robusto e independiente de la plataforma, que está disponible para los programadores de Python
que usan el tkinter paquete y su extensión, [Link] los [Link]ódulos.

El tkinter paquete es una capa delgada orientada a objetos en la parte superior de Tcl / Tk. Para usarlo tkinter,
no necesita escribir código Tcl, pero deberá consultar la documentación de Tk y, ocasionalmente, la
documentación de Tcl. Tk interés un conjunto de envoltorios que implementan los widgets Tk como clases de
Python. Además, el módulo interno _tkinter proporciona un mecanismo seguro para subprocesos que permite
que Python y Tcl interactúen.

Tkinter Las principales virtudes son que es rápido y que generalmente viene incluido con Python. Aunque su
documentación estándar es débil, hay un buen material disponible, que incluye: referencias, tutoriales, un libro
y otros. Tkinter También es famoso por tener un aspecto y una sensación anticuada, que se ha mejorado
enormemente en Tk 8.5. Sin embargo, hay muchas otras bibliotecas GUI que podrían interesarle. Para
obtener más información sobre alternativas, consulte la sección Otros paquetes de interfaz gráfica de usuario.

ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN 62


ALGORITMIA DE PROGRAMACIÓN DEL SOFTWARE

ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN 63


ALGORITMIA DE PROGRAMACIÓN DEL SOFTWARE

ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN 64


ALGORITMIA DE PROGRAMACIÓN DEL SOFTWARE

Proyectando una imagen

Para comenzar debes descargar una imagen y debe estar en la misma carpeta que el archivo Python qye
estamos ejecutando

Nombre del archivo

Dar clic para ejecutar

ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN 65


ALGORITMIA DE PROGRAMACIÓN DEL SOFTWARE

ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN 66


ALGORITMIA DE PROGRAMACIÓN DEL SOFTWARE

Generando el diseño de una calculadora

Dar clic para ejecutar

ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN 67


ALGORITMIA DE PROGRAMACIÓN DEL SOFTWARE

Funcionalidad de los números de la calculadora

Agregar
1

Agregar Número de representa


2
el botón

Agregar 3

ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN 68


ALGORITMIA DE PROGRAMACIÓN DEL SOFTWARE

Funcionalidad de la operación de la suma

Agregar
1

Agregar
2

Ahora te toca a tí agrega las demás operaciones

ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN 69


ALGORITMIA DE PROGRAMACIÓN DEL SOFTWARE

4.3 Generar documentación Automáticamente

¿Qué es Documentar en Python?

Incluir comentarios en clases, métodos, módulos, etc.; y sirve para ayudar en el trabajo en equipo.
Especialmente útil en aplicaciones complejas.

Anaconda ya lo trae instalado. Si no usas Anaconda y ya tienes pip ejecuta:

Hay dos formas de utilizar la documentación en Python:

Caso 1:
Documentación

Como vemos en el gráfico la documentación esta entre tres comillas dobles tanto al inicio como al final.
Ahora veamos la manera correcta de ejecutar.

Incompleto

Mira el resultado:

Como vemos solo se imprimió el resultado, mas no la documentación.

ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN 70


ALGORITMIA DE PROGRAMACIÓN DEL SOFTWARE

Volvamos a ejecutar, pero esta vez de la siguiente manera:

Con esta línea de código


llamaremos la
documentación

Caso 2:

Con esta línea de código


llamaremos la
documentación

ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN 71


ALGORITMIA DE PROGRAMACIÓN DEL SOFTWARE

Caso 3:

En este caso llamaremos la documentación de una función dentro de una clase.

Queremos llamar la documentación de la función área Triangulo, entonces agregamos la siguiente


línea de código.

Nombre de clase Nombre de función

ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN 72


ALGORITMIA DE PROGRAMACIÓN DEL SOFTWARE

Caso 4:

Si queremos llamar a toda la documentación de una clase con sus respectivas funciones.
Documentación propia
de la clase

ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN 73


ALGORITMIA DE PROGRAMACIÓN DEL SOFTWARE

Caso 5:

Ahora probaremos en un módulo.

Para ello debemos crear una carpeta llama modulo y dentro ella un archivo llamado
funciones_aritmeticas.py con las siguientes líneas de código.

Una vez creado nuestro modulo ahora crearemos otro archivo Python donde llamaremos al
módulo funciones matemáticas.

Nombre de la carpeta Nombre del archivo

Llamamos al modulo

Recomendaciones:

Para visualizar dar click en este icono

ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN 74


ALGORITMIA DE PROGRAMACIÓN DEL SOFTWARE

Nombre modulo Documentación del modulo

Funciones que continúe el modulo

ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN 75


ALGORITMIA DE PROGRAMACIÓN DEL SOFTWARE

4.4 Trabajar con Pruebas Automáticas

Vamos a utilizar la documentación para realizar pruebas, para ello necesitaremos trabajar con el Modulo
doctest. Muchas veces a la hora de programar surge la necesidad de comprobar que lo que vallamos
programando funcione correctamente antes que la aplicación entre en producción.

Comencemos con ejemplo sencillo.

Caso 1:

Nosotros por lógica sabemos cómo calcular el área de un triángulo, pero puede pasar que al transformar
esta fórmula en un algoritmo podamos cometer algún error es por ello utilizaremos pruebas automáticas.

Como sabemos el área de un triángulo con base de 3 cm y altura 6 cm, su área será 9 cm2, teniendo en
cuenta estos datos, comenzaremos a digitar:

Colocamos los parámetros

Colocamos el posible resultado si es


correcto nuestro algoritmo

Importamos el siguiente modulo

Llamamos a la siguiente función de este modulo

En consola:

CERO errores Un intento correcto

Pero qué pasaría si no hemos equivocado bueno veamos:

ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN 76


ALGORITMIA DE PROGRAMACIÓN DEL SOFTWARE

Caso 01 ERROR:

En este caso digitaremos mal la fórmula del área de triangulo pues digitaremos base más altura entre dos:

Como sabemos la formula esta errada

En consola:

Lo esperado
Salida del algoritmo creado

Esto nos deja claro que estamos fallando a la hora de crear nuestro algoritmo.

ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN 77


ALGORITMIA DE PROGRAMACIÓN DEL SOFTWARE

Caso 2:

Ahora comprobaremos si nuestro algoritmo creado por nosotros para saber si lo que el usuario digite cumpla
con la condición de que sea un correo electrónico, veamos:

Posibles casos donde determinaremos si nuestro


algoritmo es correcto

Algoritmo

En consola:

Lo esperado
Salida de nuestro algoritmo

Esto nos quiere decir: que en el correo [Link]@ debería ser False, ya que no es correcta la sintaxis
o arquitectura del correo, pero nuestro algoritmo lo detecta como True, esto es demuestra que nuestro
algoritmo esta errado o incompleto.

Ahora ejecutaremos correctamente nuestro algoritmo:

ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN 78


ALGORITMIA DE PROGRAMACIÓN DEL SOFTWARE

Caso 2 Correcto:

Solo hemos agregado un parámetro más a nuestra condicional con respecto al ejemplo anterior:

Posibles casos donde determinaremos si nuestro


algoritmo es correcto

Algoritmo

En consola:

CERO errores Tres intentos correctos

Esto quiere decir que nuestro algoritmo es correcto.

ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN 79


ALGORITMIA DE PROGRAMACIÓN DEL SOFTWARE

Anexo : Python en Ciencias e Ingeniería

Evaluemos una fórmula matemática: MRUV

Donde:

1. y es la altura (posición) como función del tiempo.


2. v0 es la velocidad inicial en el tiempo cero.
3. g es la aceleración de la gravedad.

Evaluemos otra fórmula matemática: Conversión de grados Celsius-Fahrenheit

ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN 80


ALGORITMIA DE PROGRAMACIÓN DEL SOFTWARE

Cálculo de Sumatorias:
En este ejemplo buscamos desarrollar una función en Python que calcule la siguiente sumatoria:

ni

L(x;n) = X
i=1

Para calcular esta sumatoria usamos un bucle y una variable para ir acumulando los términos de la
sumatoria

Gráficos en Scipy

¿Qué es Scipy?
El paquete scipy contiene varias cajas de herramientas dedicadas a problemas comunes en informática
científica. Sus diferentes submódulos corresponden a diferentes aplicaciones, tales como interpolación,
integración, optimización, Procesamiento de imágenes, estadísticas, funciones especiales, etc.

ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN 81


ALGORITMIA DE PROGRAMACIÓN DEL SOFTWARE

Interpolación mediante un spline cúbico:

ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN 82


ALGORITMIA DE PROGRAMACIÓN DEL SOFTWARE

Scipy de Optimización:
Las rutinas de optimización de SciPy para minimizar una función de una o más variables f (x1,x2,...,xn). La
técnica para determinar el máximo, es determinar el mínimo de −f (x1,x2,...,xn). Algunos de los algoritmos de
minimización solo requieren que la función sea evaluada; otros requieren su primera derivada con respecto a
cada una de las variables en una matriz conocida como el jacobiano:

Algunos algoritmos intentarán estimar numéricamente el jacobiano si no puede ser proporcionado como una
función separada.

ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN 83


ALGORITMIA DE PROGRAMACIÓN DEL SOFTWARE

Computación simbólica con Python: Sympy

SymPy es una biblioteca escrita en Python cuyo objetivo es reunir todas las características de un sistema de
álgebra computacional, ser fácilmente extensible y mantener el código todo lo simple que sea posible.

• Definición de variables simbólicas

ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN 84


ALGORITMIA DE PROGRAMACIÓN DEL SOFTWARE

• Contracción al cargar el módulo sympy

ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN 85


ALGORITMIA DE PROGRAMACIÓN DEL SOFTWARE

Casos prácticos

01

02

03

04

05

Uso de Tkinter – CASO 01

#Convirtiendo dólares a soles

import _tkinter

#tkinter._test()

#cotizacion

dolar = 3.25

def cotizar(*args):

try:

[Link](int([Link]())*dolar)

ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN 86


ALGORITMIA DE PROGRAMACIÓN DEL SOFTWARE

except ValueError:

showerror(title='Error', mensaje='Sólo números arábigos, por favor.')

[Link]('')

ventana = Tk()

[Link]("Dólares a Soles")

marco = Frame(ventana, padding="10 10 10 10")

[Link](column=0, row=0, sticky= (N, W, E, S))

dolares = StringVar()

soles = StringVar()

entrada = Entry(marco, width=7, textvariable=dolares)

[Link](column=2, row=1, sticky=(W, E))

Label(marco, textvariable=soles).grid(column=2, row=2, sticky= (W, E))

Button(marco, text="Cotizar", command=cotizar).grid(column=3, row=3, sticky=W)

Label(marco, text="dólares").grid(column=3, row=1, sticky=W)

Label(marco, text="equivale a").grid(column=1, row=2, sticky=E)

Label(marco, text="Soles").grid(column=3, row=2, sticky=W)

# -------------------------------------------------------------

for hijo in marco.winfo_children(): hijo.grid_configure(padx=5, pady=5)

[Link]()

[Link]('<Return>', cotizar)

[Link]('<Escape>', lambda x: [Link]())

[Link]()

ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN 87


ALGORITMIA DE PROGRAMACIÓN DEL SOFTWARE

En forma grafica

Resultado

Caso 02

#grafico que muestra si ganaste o persiste de forma aleatoria

try:

# Python 3.x

from Tkinter import *

from ttk import *

except ImportError:

ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN 88


ALGORITMIA DE PROGRAMACIÓN DEL SOFTWARE

# Python 3.x

from tkinter import *

from [Link] import *

import random

premio = [Link](1, 3)

def apostar(numero):

if numero == premio:

[Link](text='¡Ganaste!')

else:

[Link](text='Lo siento, perdiste.')

ventana = Tk()

[Link]('Premio')

etiqueta = Label(ventana, text='¿Qué botón es el del premio?')

etiqueta. pack()

for boton in range(1, 4):

Button(text='Botón ' + str(boton), command=lambda x=boton: apostar(x)).pack(side=LEFT)

# Si pusiéramos 'command=apostar(boton)' se ejecutaría la función.

[Link]()

ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN 89


ALGORITMIA DE PROGRAMACIÓN DEL SOFTWARE

Resultado

Uso de funciones

Python sería de muy poca utilidad si no fuese capaz de interaccionar con el usuario.

En los ejemplos anteriores vimos, ejemplos didácticos ahora para tener presente la palabra clave print
(mostrar mensajes) en pantalla. En esta lección, además de describir más detalladamente del uso de print
para mostrar mensajes al usuario, aprenderemos a utilizar las funciones input para pedir información, así
como los argumentos de línea de comandos y, por último, la entrada/salida de ficheros. Entrada estándar La
forma más sencilla de obtener información por parte del usuario es mediante la función input. Esta función
toma como parámetro una cadena a usar como prompt (es decir, como texto a mostrar al usuario pidiendo la
entrada) y devuelve una cadena con los caracteres introducidos por el usuario hasta que pulsó la tecla Enter.
Veamos un pequeño ejemplo:

nombre = input (¿“Cómo te llamas? “)

print “Encantado, “+ nombre

Si necesitáramos un entero como entrada en lugar de una cadena, por ejemplo, podríamos utilizar la función
int para convertir la cadena a entero, aunque sería conveniente tener en cuenta que puede lanza.

Caso 03

Uso de herencia

Hay tres conceptos que son básicos para cualquier lenguaje de programación orientado a objetos: el
encapsulamiento, la herencia y el polimorfismo.

En un lenguaje orientado a objetos cuando hacemos que una clase (subclase) herede de otra clase
(superclase) estamos haciendo que la subclase contenga todos los atributos y métodos que tenía la
superclase. No obstante, al acto de heredar de una clase también se le llama a menudo “extender una
clase”.

ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN 90


ALGORITMIA DE PROGRAMACIÓN DEL SOFTWARE

Supongamos que queremos modelar los instrumentos musicales de una banda, tendremos entonces una
clase Guitarra, una clase Batería, una clase Bajo, etc. Cada una de estas clases tendrá una serie de atributos y
métodos, pero ocurre que, por el mero hecho de ser instrumentos musicales, estas clases compartirán
muchos de sus atributos y métodos; un ejemplo sería el método tocar ().

Es más sencillo crear un tipo de objeto Instrumento con las atributos y métodos comunes e indicar al
programa que Guitarra, Batería y Bajo son tipos de instrumentos, haciendo que hereden de Instrumento.

Para indicar que una clase hereda de otra se coloca el nombre de la clase de la que se hereda entre
paréntesis después del nombre de la clase:

Como Batería y Guitarra heredan de Instrumento, ambos tienen un método tocar () y un método romper(),
y se inicializan pasando un parámetro precio. Pero, ¿qué ocurriría si quisiéramos especificar un nuevo
parámetro tipo_cuerda a la hora de crear un objeto Guitarra? Bastaría con escribir un nuevo método
__init__ para la clase Guitarra que se ejecutaría en lugar del __init__ de Instrumento. Esto es lo que se
conoce como sobre escritura de métodos.

Ahora bien, puede ocurrir en algunos casos que necesitemos sobre escribir un método de la clase padre,
pero que en ese método queramos ejecutar el método de la clase padre porque nuestro nuevo método
no necesite más que ejecutar un par de nuevas instrucciones extra. En ese caso usaríamos la sintaxis
Superclase.método(self, args) para llamar al método de igual nombre de la clase padre. Por ejemplo,
para llamar
al método mento. __init__ (self, precio) __init__ de Instrumento desde Guitarra usaríamos Instru- Observa
que en este caso si es necesario especificar el parámetro self.

La encapsulación se refiere a impedir el acceso a determinados métodos y atributos de los objetos


estableciendo así qué puede utilizarse desde fuera de la clase.

Esto se consigue en otros lenguajes de programación como Java utilizando modificadores de acceso que
definen si cualquiera puede acceder a esa función o variable (public) o si está restringido el acceso a la
propia clase (prívate).

En Python no existen los modificadores de acceso, y lo que se suele hacer es que el acceso a una
variable o función viene determinado por su nombre: si el nombre comienza con dos guiones bajos (y no
termina también con dos guiones bajos) se trata de una variable o función privada, en caso contrario es
pública. Los métodos cuyo nombre comienza y termina con dos guiones bajos son métodos especiales
que Python llama automáticamente bajo ciertas circunstancias, como veremos al final del capítulo.

En el siguiente ejemplo sólo se imprimirá la cadena correspondiente al método público (), mientras que
al intentar llamar al método privado () Python lanzará una excepción quejándose de que no existe
(evidentemente existe, pero no lo podemos ver porque es privado).

ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN 91


ALGORITMIA DE PROGRAMACIÓN DEL SOFTWARE

también puede suceder que queramos permitir el acceso a algún atributo de nuestro objeto, pero que
este se produzca de forma controlada. Para esto podemos escribir métodos cuyo único cometido sea
este, métodos que normalmente, por convención, tienen nombres como getVariable y setVariable; de
ahí que se conozcan también con el nombre de getters y setters.

Esto se podría simplificar mediante propiedades, que abstraen al usuario del hecho de que se está utilizando
métodos entre bambalinas para obtener y modificar los valores del atributo.

El poder de Python

Julia

? Pros: Código rápido, pero interactivo y simple. Se conecta


fácilmente a Python o C.
? Contras: Ecosistema limitado a computación numérica.
Aún joven.

¿Cómo se compara Python con otras soluciones?

Otros lenguajes scripting : Scilab, Octave, IDL , etc.

? Pros: De código abierto, gratuito, o al menos más barato que Matlab. Algunas características pueden ser
muy avanzadas (estadísticas en R, imágenes satelitales en IDL, etc.)
? Contras: Hay menos algoritmos disponibles que en Matlab, y el lenguaje no es más avanzado. Algunos
programas están dedicados a un dominio. Ej: Gnuplot para dibujar curvas. Estos programas son muy potentes,
pero están restringidos a un solo tipo de uso, como el trazado de curvas

ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN 92


ALGORITMIA DE PROGRAMACIÓN DEL SOFTWARE

? Pros: Muy buenas y bien documentadas bibliotecas para computación científica. Lenguaje bien
pensado, que permite escribir código Muy legible y bien estructurado:
codificamos lo que pensamos. Muchos módulos más allá de la computación científica (servidor web,
acceso a puerto serie, etc.). Software libre y de código abierto, ampliamente difundido, con una
comunidad vibrante. Una variedad de entornos potentes para trabajar, como
IPython, Spyder, Jupyter notebooks, Pycharm.
? Contras : No todos los algoritmos se pueden encontrar en módulos.

¿Porque programar?

Evaluando funciones matemáticas estándar

El programa para evaluar las expresiones para t1 y t2 en un programa de computadora, necesitamos acceso
a la función de raíz cuadrada. En Python, la función de raíz cuadrada y muchas otras funciones matemáticas,
como sin, cos, sinh, exp, y log, están disponibles en un módulo llamado math. Primero debemos importar el
módulo antes de que podamos usarlo, es decir, debemos escribir import math. A partir de entonces, para
tomar la raíz cuadrada de una variable a, podemos escribir [Link](a). Esto se demuestra en un programa
para calcular t1 y t2:

− q −

q −

Resultado

Ejercicio 01

Nuestro primer ejercicio implica hacer llamadas a algunas funciones matemáticas del módulo math. Veamos
la definición de la función sinh(x)

ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN 93


ALGORITMIA DE PROGRAMACIÓN DEL SOFTWARE

Ejercicio 2: Distancia entre dos puntos

Como segundo ejercicio también haremos llamadas a algunas funciones matemáticas del módulo math.
Vamos a calcular la distancia entre dos puntos del plano cartesiano (R2). Para ello, sean A = (x1, y1) y B =
(x2, y2), entonces la distancia entre A y B se calcula haciendo uso del Teorema de Pitágoras.

Ejercicio 3: Listado de funciones del módulo math.

Ejercicio 4: Números complejos en Python

Link de Ayuda : [Link]

ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN 94


ALGORITMIA DE PROGRAMACIÓN DEL SOFTWARE

Computación simbólica con Python: Sympy


En matemáticas y ciencias de la computación, el álgebra computacional, también
conocida como cálculo simbólico o cálculo algebraico, es un área científica que se
refiere al estudio y desarrollo de algoritmos y software para la manipulación de
expresiones matemáticas y otros objetos matemáticos. Aunque, hablando con
propiedad, el álgebra computacional debe ser un sub-campo de la computación
científica, ellos son considerados generalmente como campos distintos, porque la
computación científica se basa generalmente en el análisis numérico con números aproximados en punto
flotante; mientras que, el álgebra computacional enfatiza el cálculo exacto con expresiones que
contengan variables que no tienen cualquier valor dado y por lo tanto son manipulados como símbolos
(de ahí se debe el nombre de cálculo simbólico).

sistemas de composición similares a LATEX.

Imprime el valor de f:

La principal diferencia entre las funciones de symbols() y var() es que la primera función devuelve una
referencia a un objeto de tipo carácter (character object). Para su uso en el futuro, se le debe asignar una
variable. El segundo, sin asignación, crea una variable de carácter.

Resultado:

Primeros pasos: Un poco de álgebra

Para hacer operaciones simbólicas hay que definir explícitamente los símbolos que vamos a usar, que
serán en general las variables y otros elementos de nuestras ecuaciones:

ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN 95


ALGORITMIA DE PROGRAMACIÓN DEL SOFTWARE

Resultado:

Cálculo con limites

Calculo con derivadas

ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN 96


ALGORITMIA DE PROGRAMACIÓN DEL SOFTWARE

Para la expansión de series se aplica el método series (var, punto, orden) a la función que se desea
expandir:

Ejecutar

Con integrales

SymPy es capaz de resolver ecuaciones algebraicas de una o varias variables:

Otra alternativa, en el caso de ecuaciones polinómicas, es factor. factor devuelve el polinomio


factorizado en términos irreducibles y es capaz de calcular la factorización sobre varios dominios:

ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN 97


ALGORITMIA DE PROGRAMACIÓN DEL SOFTWARE

Bucles: Resultado

Hay otro método, zfill(), el cual rellena una cadena numérica a la izquierda con ceros. Entiende signos positivos
y negativos:

El uso básico del método [Link]() es como esto:

Las llaves y caracteres dentro de las mismas (llamados campos de formato) son reemplazadas con los objetos
pasados en el método [Link](). El número en las llaves se refiere a la posición del objeto pasado en el
método.

Lectura de archivos:

Escribir y leer ficheros en Python

Si te fijas en el escritorio de tu escritorio, ¿qué ves? Cientos de archivos que se extienden por todas partes,
¿verdad? Casi todo el mundo cae en este penoso hábito, nos resulta imposible, el poner en orden los ficheros
de nuestro equipo. Pero la clave de este artículo es saber cómo tratar todos esos archivos. Hoy vamos a
hablar de Python, y de cómo trabajar con archivos utilizando Python. Así que, si estás interesado, en aprender
no dejaras pasar esta oportunidad

Abrir un archivo

ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN 98


ALGORITMIA DE PROGRAMACIÓN DEL SOFTWARE

El proceso natural que tenemos para llevar a cabo con el fin de hacer cualquier operación con archivos es
poder abrirlo. Antes que nada, descárgate el archivo [Link], que es el archivo que vamos a utilizar para llevar
a cabo nuestros experimentos.

Con el fin de abrir el archivo utilizando Python, usaremos la función open(). Tal y como narra la
documentación:

open() devuelve un objeto file, y comúnmente se utiliza con dos argumentos: open(nombre del archivo, modo)

Como has podido ver en el extracto de la documentación, la función open () cuenta con dos argumentos: el
nombre del archivo y el modo. Estos argumentos se parecen a la función de stdio (es decir, de C) fopen(). El
nombre del archivo hace referencia al nombre (y la ruta) del archivo que desees abrir. El modo es un valor
string que indica cómo se va a abrir el archivo. Aquí puedes ver los distintos modos en los que se puede abrir
un archivo:

r: Abrir fichero para lectura. El puntero se posiciona al principio del fichero

r+: Abrir fichero para lectura y escritura. El puntero se posiciona al principio del fichero

w: Trunca a cero la longitud o crea un fichero de texto para escritura. El puntero se posiciona al principio del
fichero

w+: Abrir fichero para lectura y escritura. Si el fichero no existe, se crea, de lo contrario se trunca. El puntero
se posiciona al principio del fichero

a: Abrir fichero para lectura. Se creará el fichero si no existe. El puntero se posiciona al final del fichero.

a+: Abrir fichero para lectura y escritura. Se creará el fichero si no existe. El puntero se posiciona al final del
fichero.

Guardando datos en un archivo

Salida

Abriendo datos de un archivo

Salida

ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN 99


ALGORITMIA DE PROGRAMACIÓN DEL SOFTWARE

Agregando datos a un archivo existente

Salida

Agregando texto en a través de la creación de un nuevo archivo

Salida:

Apertura en un navegador

resultado

ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN 100


ALGORITMIA DE PROGRAMACIÓN DEL SOFTWARE

Apertura de un archivo HTML existente

resultado

apertura de archivo de texto en consola

Forma 2 de salida con el print(mensaje)

ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN 101


ALGORITMIA DE PROGRAMACIÓN DEL SOFTWARE

ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN 102

También podría gustarte