Desarrollo de Aplicaciones en Python
Desarrollo de Aplicaciones en Python
¿QUE ES PYTHON?
Parte 1
Solución
Forma 1
Salida
Forma 2
Forma 3
Salida
Forma 4
Ejercicio Practico
Nuestro próximo ejemplo incluye la fórmula para convertir la temperatura medida en grados Celsius al valor
correspondiente en grados Fahrenheit:
Parte 2
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:
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
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
Salida
Forma 2
Salida
Forma 3
El usuario deberá ingresar un dato tipo entero y este será convertido en string
Salida
Forma 4
Salida
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.
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 (+=).
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.
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.
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.
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:
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):
Ordenar:
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.
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() .
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.
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!
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 .
Nótese que el operador in en los diccionarios actúa sobre las claves, no sobre los valores.
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.
……..
Numero ingresado
Numero ingresado
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
Calcula la etapa:
Ingresar número
Ingresar el número
de la operación
Crear un programa:
Adivinada el número:
Respuestas de Usuario
Número pensado
Dado un tiempo en segundos, calcular los segundos restantes que le correspondan para convertirse
exactamente en minutos.
Segundos ingresados
Datos
Ingresados
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:
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:
Ingrese número
SALIDA
Ejercicio 4
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.
Números ingresados
Ejercicio 6
N° mayor ingresado
N° menor ingresado
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:
Ejercicio 2:
Ejercicio 3:
Ejercicio 4:
Ejercicio 5:
Ejercicio 6
INCORRECTO
INCORRECTO
CORRECTO
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
Ejercicio 8
¿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.)
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.
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:
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
Ejemplo 5
Métodos
Método __init__ :
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:
Solución
Forma 1
Salida
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.
Forma 2
Enlace de interés
[Link]
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.
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()
readable()
seekable()
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()
seek()
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().
Ejemplo1:
Lectura/Escritura de archivos
Salida:
Parte 1
Salida:
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:
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.
• 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:
... 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:
Ejemplo:
Salida:
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:
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:
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.
Utilizando archivo
CASO 1
CASO 2
Resultado
CASO 3
resultado
Resultado
definiendo una función que permita obtener un formato mucho más simpático.
Caso 5
Resultado
CON MYSQL
Descargar Librería
PASO 1
Paso 2
Ubicación del
Archivo
Descargado
Digitar la
instalación
Paso 3
Resultado
Forma 2
Resultado
CON MONGODB
PASO 1
Instalar el pymongo
Digitar la
instalación
PASO 2
Resultado
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.
Para comenzar debes descargar una imagen y debe estar en la misma carpeta que el archivo Python qye
estamos ejecutando
Agregar
1
Agregar 3
Agregar
1
Agregar
2
Incluir comentarios en clases, métodos, módulos, etc.; y sirve para ayudar en el trabajo en equipo.
Especialmente útil en aplicaciones complejas.
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:
Caso 2:
Caso 3:
Caso 4:
Si queremos llamar a toda la documentación de una clase con sus respectivas funciones.
Documentación propia
de la clase
Caso 5:
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.
Llamamos al modulo
Recomendaciones:
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.
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:
En consola:
Caso 01 ERROR:
En este caso digitaremos mal la fórmula del área de triangulo pues digitaremos base más altura entre dos:
En consola:
Lo esperado
Salida del algoritmo creado
Esto nos deja claro que estamos fallando a la hora de crear nuestro algoritmo.
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:
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.
Caso 2 Correcto:
Solo hemos agregado un parámetro más a nuestra condicional con respecto al ejemplo anterior:
Algoritmo
En consola:
Donde:
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.
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.
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.
Casos prácticos
01
02
03
04
05
import _tkinter
#tkinter._test()
#cotizacion
dolar = 3.25
def cotizar(*args):
try:
[Link](int([Link]())*dolar)
except ValueError:
[Link]('')
ventana = Tk()
[Link]("Dólares a Soles")
dolares = StringVar()
soles = StringVar()
# -------------------------------------------------------------
[Link]()
[Link]('<Return>', cotizar)
[Link]()
En forma grafica
Resultado
Caso 02
try:
# Python 3.x
except ImportError:
# Python 3.x
import random
premio = [Link](1, 3)
def apostar(numero):
if numero == premio:
[Link](text='¡Ganaste!')
else:
ventana = Tk()
[Link]('Premio')
etiqueta. pack()
[Link]()
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:
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”.
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.
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).
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: 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
? 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?
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)
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.
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:
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:
Resultado:
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
Bucles: Resultado
Hay otro método, zfill(), el cual rellena una cadena numérica a la izquierda con ceros. Entiende signos positivos
y negativos:
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:
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
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 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.
Salida
Salida
Salida
Salida:
Apertura en un navegador
resultado
resultado