Taller De Python - CSL
Autores: Juan Manuel, Alexis y Víctor
Índice:
- ¿Qué es Python?
- Versiones
- Instalación
- Intérprete
- Algoritmo
- Primer Programa
- Operaciones Simples
- Tipos
- Operaciones con cadenas
- Corroborar tipo de dato
- Comentarios
- Variables
- Entadas/Salidas
- Convertir tipos
- Operadores de asignación
- Funciones
- Módulos
- Uso de IDE
- Spyder
¿Qué es Python?
Python es un lenguaje de programación de propósito general.
Es interpretado, esto quiere decir que necesita de un programa (intérprete) que convierta las instrucciones del lenguaje Python a lenguaje máquina. Este programa debe estar instalado en la maquina en la cual se correrá el programa.
Recordemos que las computadoras solo entienden un lenguaje conocido como código máquina.
Es portable, lo que significa que podemos correrlo sobre distintas computadoras sin necesidad de hacerle modificaciones o bien con muy pocas.
De tipado dinámico, hace hincapié en la sintaxis favoreciendo un código más legible. No necesitamos explicitar los tipos de datos como en C++ o Java.
Versiones de Python
Actualmente hay dos versiones de Python en uso: Python 2.7 y Python 3.x. Python 2.7 dejó de recibir soporte el 1 de enero de 2020, por lo tanto usaremos Python 3.x.
Como se mencionó con anterioridad, Python necesita un intérprete. Hay muchos intérpretes de Python, los cuales tienen distintas implementaciones, nosotros usaremos al menos dos: Cpython, quizás el más popular, e Ipython.
Instalación
En casi todas las distribuciones GNU/Linux viene instalado, lo podemos probar corriendo el siguiente comando:
|
|
En caso de que no se encuentre instalado, debemos realizar la instalación por medio del gestor de paquetes de nuestra distribución.
Para ubuntu/debian y derivadas lo instalamos con:
|
|
Conociendo al intérprete interactivo
Ahora vamos a conocer al intérprete interactivo.
Para ello abrimos una terminal y ejecutamos:
|
|
Cuando el intérprete este listo para recibir instrucciones nos avisará mediante el signo > (mayor), el cual se dibujará tres veces en la pantalla.
|
|
Ahora vamos a probar cálculos simples, por ejemplo:
|
|
Noción de algoritmo
Un algoritmo es un conjunto de instrucciones, finitas y ordenadas que conducen a la resolución de un problema.
Por ejemplo, el algoritmo de Tremaux sirve para encontrar la salida de un laberinto:
Lo primero que hay que hacer es marcar el camino que se va siguiendo,
y seguir estos pasos:
1. No siga el mismo camino dos veces.
2. Si llega a un cruce nuevo, no importa qué camino siga.
3. Si un camino nuevo lo lleva a un cruce viejo, o a un callejón sin
salida, retroceda hasta la entrada del camino.
4. Si un camino viejo lo lleva a un cruce viejo, tome un camino
nuevo, y si no lo hay, tome cualquiera.
Si se siguen estos pasos, aunque es posible que lleve horas, este
sistema le llevará hasta la salida del laberinto, y si no la hay, de
nuevo hasta la entrada.
Si tomamos esta noción y la llevamos a la programación podríamos decir que un algoritmo es: “Decirle a la computadora una serie de pasos en un determinado orden para que resuelva problemas."
Primer programa
Ahora vamos a escribir nuestro primer programa, hola mundo, para ello haremos uso de la instrucción print().
Con el intérprete abierto, escribiremos lo siguiente:
ACLARACIÓN: A partir de ahora veremos y probaremos distintos fragmentos de código, lo indicado después del símbolo »> son las instrucciones que ustedes pueden ejecutar y probar, por el contrario, la línea que no tenga dicho símbolo representa lo que muestra el intérprete en pantalla, por lo tanto, no hay que ingresarla en el programa.
|
|
Más adelante, veremos en profundidad el uso de la función print(). De momento, pueden probar cambiar la frase y que muestre distintos mensajes.
Operaciones Simples
Suma y resta
Podemos realizar operaciones simples directamente por ejemplo, para suma usamos el signo más (+) y para la resta usamos el signo menos (-):
|
|
Producto
O multiplicación (recordar que el intérprete resolverá la operación que encuentre entre paréntesis primero, y luego, el resto de las operaciones). Para multiplicar usamos el asterisco (*)
|
|
Números negativos
Si queremos hacer uso de un número negativo, simplemente, le agregamos el signo menos (-) adelante del mismo.
|
|
División
Para dividir un número usamos la barra (/)
|
|
Recuerden que la división por cero está prohibida. Si la hacemos nos dará un error.
|
|
Observen que se nos avisa del siguiente error: ZeroDivisionError: division by zero Este tipo de mensajes es muy útil para saber que ocurrió, resulta indispensable al programar reconocerlos adecuadamente.
Exponentes
Para calcular un exponente usamos dos asteriscos, si quisiéramos saber cual es el resultado de 4 elevado al cuadrado hacemos:
|
|
Resto
Usamos el símbolo de porcentaje (%) por ejemplo el resto de la división de 10/2 es cero, lo comprobamos:
|
|
Cociente
Para el cociente usamos doble barra (//)
|
|
Ejercicios
- Calcule el producto de 8 por 8, luego súmele 4096 dividido 4 y reste 64.
- Calcule el cociente de 10462 dividido 2 y luego reste 231.
- Calcule el resto de 566 dividido 4, luego eleve ese valor a su cuadrado.
- Calcule el cociente de 768 dividido 8, luego súmele 32.
Recuerde: debe hacer uso correcto de los paréntesis, de otra manera obtendrá resultados erróneos. Todas las operaciones se pueden resolver en una sola línea.
Tipos de datos
Números enteros o Int
Los números enteros son: el conjunto de los números naturales 1,2,3,… sus opuestos -1,-2,-3,… y el 0.
Con el intérprete abierto, podemos realizar operaciones directamente:
|
|
La división de números enteros es un caso especial, siempre dará como resultado un número real.
|
|
Números reales/Flotantes o Floats
Los números reales, son conocidos como Floats. Son números que tienen una parte entera y otra decimal. Por ejemplo 2.5, 3.1419, etc.
|
|
O bien como resultado de una operación:
|
|
Como mencionamos anteriormente, podemos obtener un real desde la división de dos enteros.
|
|
Python también soporta números complejos, binarios, octales y hexadecimales, pero de ellos no nos vamos a ocupar en este curso
Cadenas de caracteres
Llamamos strings a las cadenas de caracteres, dicho más simple: a un texto o frase. Para crear un string debemos usar comillas dobles (") o simples (') da lo mismo.
Ejemplo:
|
|
También un solo carácter puede ser considerado un string
|
|
Caracteres especiales
Hay algunos caracteres que no podemos usar directamente, por ejemplo si quisiéramos escribir: ““Átale, demoníaco Caín, o me delata” es un palíndromo”
|
|
Este error se debe a que estamos usando comillas dobles dentro de las comillas dobles (Perdón por la redundancia). Para arreglarlo debemos anteponer una barra invertida (\) frente a estos caracteres especiales.
|
|
Operaciones con cadenas de caracteres
Concatenar
Concatenar es unir dos o más cadenas de caracteres. Para ello usamos el + (signo más)
|
|
Recuerde: No se puede concatenar números enteros.
Es importante señalar que si usamos un número entre comillas por ejemplo “2”, el mismo será tratado como un carácter y no como un número (entero o real), por lo tanto soporta las mismas operaciones que cualquier otro carácter o cadena de caracteres.
|
|
Uso de la función print() en cadenas.
Puede usar la función print() para mostrar en pantalla cadenas. Para ello, debemos escribir dentro de los paréntesis la cadena (entre comillas).
Ejemplo.
|
|
Otra opción, es mostrar mediante print() la concatenación de dos o más cadenas.
Ejemplo:
|
|
Repetir cadenas
Si queremos imprimir muchas veces el mismo texto resulta conveniente usar el operador * seguido de la cantidad de veces que queremos repetir la palabra o frase, por ejemplo:
|
|
Las cadenas no pueden ser multiplicadas por otras cadenas
|
|
Tampoco podemos usar un número real
|
|
Ejercicios
- Muestre en pantalla su nombre/apodo.
- Muestre en pantalla el resultado de concatenar “Club”, “de”, “software”, “libre”
- Muestre en pantalla el resultado de concatenar “Hoy”, “es”, “sábado” tres veces.
- Muestre en pantalla el texto: Cortazar dijo: “La cultura es el ejercicio profundo de la identidad”.
Recuerde: Use la función print() para mostrar en pantalla.
Corroborar tipo de dato
Ahora que ya conocemos los tipos de datos fundamentales, veamos el uso de la función type()
Esta función nos devuelve el tipo de dato que le estamos pasando, se usa de la siguiente manera:
|
|
Comentarios en el código
Los comentarios en código sirven para escribir aclaraciones o explicaciones. El intérprete simplemente los ignora. Se pueden escribir usando el símbolo almohadilla (#)
|
|
Variables
Concepto, creación y asignación
Este concepto es fundamental a la hora de programar. Podemos pensar en una variable como un contenedor de datos (Números, cadenas, etc). Una variable nos permite almacenar un valor el cual estará asignado a un nombre de variable. En el siguiente ejemplo voy a crear una variable, de nombre “n” y le voy a asignar el valor 10.
|
|
La asignación no produce ninguna salida. De ahora en adelante, cada vez que usemos “n” será lo mismo que usar el valor que tiene asignado, es decir el número entero 10. Esto se puede corroborar usando la función print()
|
|
Variable a lo largo de un programa
Una asignación es darle un valor a una variable, ahora bien, este valor puede cambiar a lo largo de nuestro programa.
|
|
Recomendación: No es buena practica cambiar los tipos, se recomienda siempre mantener el mismo tipo a lo largo de la ejecución, el valor puede cambiar sin ningún inconveniente.
Nombres de las variables
Los nombres de las variables pueden contener letras, números y guiones bajos.
|
|
Queda prohibido comenzar el nombre de una variable con un número.
|
|
Recuerden: Python, en cuanto a las variables, es lo que se conoce como caso- sensitivo. Esto quiere decir que discrimina mayúsculas de minúsculas. No es lo mismo “apellido” que “Apellido”
Nombres que están reservados por el lenguaje
La siguiente lista representa nombres que están reservados por el lenguaje, por lo tanto, las variables no se pueden llamar de esa manera.
and - except - lambda - with - as - finally - nonlocal - while - assert - false - None - yield - break for - not - class - from - or - continue - global - pass - def - if - raise - del - import - return - elif - in - True - else - is - try
Un poco más sobre variables
Una variable sin asignar nos dará un error.
|
|
Si en algún momento queremos borrar una variable porque no la usamos más debemos usar la función del()
|
|
En el ejemplo anterior, creamos una variable de nombre “a” le asignamos el valor 1023, lo mostramos en pantalla mediante la función print() y luego borramos a dicha variable, cuando la queremos invocar nuevamente nos da un error, ya que al borrarla, “deja de existir”.
A partir de este momento trabajaremos con variables.
Ejercicios
- Crear una variable de nombre num1 y asigne el valor 10 a la misma, mostrarla en pantalla.
- Realice lo siguiente:
- Crear una variable x de valor 10.
- Crear una variable y de valor 90.
- Muestre en pantalla el resultado de la suma entre ambas.
- Realice lo siguiente:
- Crear una variable num1 y asigne el valor 2.5 en ella.
- Crear una variable num2 y asigne el valor 2 en ella.
- Crear una variable num3 y asigne como valor el producto entre num1 y num2.
- Muestre en pantalla num3.
- Crear dos variables, una de ellas contiene la frase “Libertad 0: " y la otra “La libertad de ejecutar el programa como se desee, con cualquier propósito”. Muestre en pantalla el resultado de la concatenación de ambas variables.
Entradas y Salidas
Salidas
Para generar salidas (mostrar en pantalla información o datos) necesitamos hacer uso de la función print(). print() puede mostrar texto (cadenas de caracteres), datos numéricos (reales, enteros, etc) y también, mostrar como salida el resultado de una operación. Para el caso del texto, el mismo debe ir entre comillas (simples o dobles, da igual).
|
|
Para el caso de un valores numérico:
|
|
Y para el caso de una operación podemos hacer lo siguiente:
|
|
Lo más común es que trabajemos con variables, para mostrarlas en pantalla bastará con que a la función print() le enviemos la variable que queremos mostrar.
|
|
También podemos combinar textos y variables, simplemente lo separamos con una coma:
|
|
Entradas
Hasta el momento hemos visto ejemplo donde los valores se encuentran “cargados” en el código pero ¿Que ocurre si queremos cargar valores de manera manual? Dicho de otro modo, que sea el usuario quien ingrese esos valores. Bien, este escenario, que es de lo más común, lo vamos a resolver con el uso de la función input()
Para realizar entradas de datos usamos la función input() Por ejemplo:
|
|
Existe un pequeño inconveniente: el dato capturado va a ser del tipo str, una cadena de caracteres, motivo por el cual solo podrá soportar las operaciones destinadas a este tipo de dato, si lo quisiéramos tratar como un número no podemos.
Convertir tipos de datos
Para convertir los datos a otro tipo, Python tiene definidas las siguientes funciones: int(), float(),str()
Para convertir un entero a cadena:
|
|
Para convertir una cadena a entero:
|
|
Esta es la forma para trabajar con los distintos tipos de datos que necesitemos convertir. Volviendo al caso del input() si necesitamos “capturar” el dato como un int, resulta buena idea hacerlo así:
|
|
El mismo ejemplo con un float
|
|
Nótese como vamos agrupando funciones adentro de otras funciones. El intérprete primero ejecutará el paréntesis interior que contiene a la función input, después, el paréntesis exterior -donde se convierte el valor ingresado a entero- y por último, asigna el valor entero a la variable num
Operadores de asignación
Estos operadores nos sirven para abreviar código.
|
|
En este caso, lo que hacemos es lo siguiente:
- Asignamos el valor 1 a la variable de nombre “x”.
- Mostramos en pantalla el valor de x mediante print() .
- Luego usamos un operador de asignación (+=), el mismo va a sumarle 4 a nuestra variable x.
- La mostramos en pantalla.
Es decir:
|
|
es lo mismo que:
x = x + 4
También podemos hacerlo con la resta, multiplicación o división.
|
|
Funciones
Las funciones son subprogramas -pequeños programas que tienen alguna funcionalidad determinada-, el lenguaje python trae ciertas funciones definidas en lo que se conoce como “Biblioteca Estándar”.
Algunas de esas funciones ya las conocemos, print(), input(), str().
Hay más funciones que estas presentadas y las iremos viendo en profundidad a medida que avancemos con el taller.
Módulos
Python, tiene muchísimas funciones y las mismas están organizadas en formas de módulos. Un módulo es un conjunto de funciones para hacer alguna tarea específica.
El modulo math agrupa un conjunto de funciones matemáticas.
Para decirle al intérprete que vamos a usar un módulo debemos hacer uso de la palabra reservada import seguida del nombre del módulo.
|
|
Este es otro tópico que veremos con más detalle en los próximos encuentros.
Usando un IDE
Ya tenemos los conocimientos básicos del lenguaje podemos avanzar y usar un IDE.
Un IDE es entorno de desarrollo integrado. Un programa. El mismo nos provee, a los desarrolladores, de herramientas para facilitar la creación de nuestros programas.
Nosotros vamos a usar el Spyder Ide.
En nuestro taller ya se encuentra instalado, pueden lanzarlo desde el menú del escritorio.
Instalación
Para instalarlo en Ubuntu y derivadas:
|
|
Usando Spyder
Nos encontraremos que el código debe ser escrito en la parte izquierda de la pantalla. Abajo a la derecha, tenemos una terminal con un intérprete (ipython) que nos permite ingresar instrucciones de la manera que venimos realizando hasta el momento. Hay un explorador de variables que nos muestra información útil de las mismas y los valores usados a lo largo de la ejecución del programa. La idea es que experimenten con el IDE ya que será, a partir de este momento, nuestra herramienta principal para programar.