Aprende Python sin salir de este post

Python es uno de los lenguajes de programación más utilizados y el favorito de miles de programadores gracias a su legibilidad y facilidad de uso. Muchos argumentan que Python te permite programar en lugar de preocuparte por colocar llaves, paréntesis y puntos y comas, lo que le da una facilidad de uso mayor a la de otros lenguajes de programación.

Por lo anterior, Python es una gran opción para aprender a programar, pero no se limita a esta labor, y existen cientos de frameworks y librerías que permiten realizar todo tipo de trabajos con Python.

A continuación, realizaremos un viaje superficial sobre los aspectos más importantes del lenguaje, pero recuerda que para perfeccionar y comprender completamente Python, es necesario que tomes un curso o leas algún libro sobre esto, además de practicar todo lo que aprendas.

Dicho esto, comencemos:

Instalación y entorno

Antes de comenzar a programar con Python es necesario que descargues ciertos paquetes de su sitio oficial: Python.org. Si estas en Linux, Python se encuentra preinstalado, y sólo deberás descargar el entorno de desarrollo:

sudo apt install idle3

Después de esto podrás ejecutar scripts de Python y escribir tu propio código en IDLE (Python’s Integrated Development and Learning Environment).

Notas sobre Python

Python no utiliza llaves ni corchetes para definir el código que se ejecutará en un mismo bloque, si no que depende totalmente de las tabulaciones, por lo que es importante que tengas cuidado sobre la cantidad de tabulaciones ya que estas definiran el “nivel” de agrupación donde se encuentra el código.

Hola Mundo

Dice una ley no escrita que el primer programa de todo aquel que aprende un lenguaje de programación debe ser el famoso “Hola Mundo“. Puestos manos a la obra, en Python se realiza así:

La función print() permite mostrar en pantalla (Imprimir) mensajes definidos por el usuario. Para imprimir frases deberás escribirlas dentro de comillas que pueden ser sencillas, dobles o triples, siempre y cuando inicien y terminen con el mismo estilo. Por ejemplo:

La razón del uso de comillas es porque de esta forma Python lo interpretará como una secuencia de caracteres, si no las usas, Python intentará buscarles un valor, y al no existir, regresará un error. Por la misma razón, es posible imprimir números y el resultado de operaciones matemáticas utilizando print().

De esta forma, puedes desplegar todo tipo de mensajes utilizando Python. ¿Que crees que ocurra al introducir la siguiente expresión en el interprete?

Tipos de datos y Variables

Como habrás visto en los ejemplos anteriores, no todos los datos se comportan igual en Python: Las secuencias de caracteres requieres de comillas para ser interpretadas, mientras que los números pueden interactuar por medio de operaciones matemáticas, entre otras cosas. Esto ocurre porque en Python cada elemento tiene su tipo de dato.

Los principales son los siguientes:

  • Int: Números de tipo entero (Integer), sin punto decimal.
  • Float: Números de coma flotante (Floating Point), incluye punto decimal con precisión de 18 dígitos después del punto.
  • String: Secuencia o cadena (en inglés, string) de caracteres, utilizado para mostrar mensajes de texto, requiere ser introducido dentro de comillas.
  • List: Colección de datos de diferentes tipos.

Sin embargo, cada vez que realizas una operación con estos datos, son eliminados de la memoria al terminar de utilizarse. Para evitar esto, hacemos uso de variables.

Las variables en programación son un espacio de memoria al que le asignas un valor reutilizable y modificable, de forma que no tengas que estar introduciendo los valores que necesitas cada vez que los requieras. Las variables en Python pueden almacenar todo tipo de datos, y su uso es exactamente igual que si estuvieras trabajando con el valor que contienen. Para declarar variables sólo necesitas escribir el nombre de la variable, seguido de “=” y el valor de la variable.

Ejemplos de uso de variables:

A destacar que los nombres de variables sólo pueden contener caracteres de la a-z, y números dentro de su cuerpo pero no es posible comenzar el nombre de la variable con un número.

Otra propiedad de las variables es que pueden ser declaradas más de una vez, sobreescribiendo su valor al ser declaradas de nuevo. Además, Python es un lenguaje de tipado dinámico, es decir, sus variables pueden ser de diferentes tipos cada vez que se declaran, a diferencia de otros lenguajes estáticos, como Java o C, donde una variable sólo puede contener un tipo de dato.

A diferencia de su uso en matemáticas, las variables pueden ser igual al resultado de una operación realizada consigo.

Lo anterior puedes verlo en Python a continuación:

Conversión entre tipos de datos

Finalmente, puedes modificar el tipo de dato de un valor escribiendo el tipo de dato que buscas y entre paréntesis el valor o variable a convertir. Por ejemplo:

Operadores matemáticos

Las matemáticas juegan un papel importante en la programación; aunque no es necesario que seas un genio con los números, prácticamente todos los programas que encuentres y escribas van a requerir algún tipo de operación de aritmética básica. Python en particular cuenta con los operadores matemáticos de:

  • Suma ( + ): Suma números enteros o flotantes y regresa el resultado. Usado con strings, regresa la unión de los dos strings.
  • Resta ( - ): Regresa el resultado de la resta de números enteros o flotantes.
  • Multiplicación ( * ): Regresa el resultado del producto de números enteros o flotantes. Usado con strings, regresa el string repetido por la cantidad de veces que se multiplico.
  • División ( / ): Regresa el resultado de la división de dos números. Si la división resulta con punto decimal, el resultado será flotante independientemente de que se hayan ingresado enteros.
  • División entera ( // ): Regresa la parte entera de la división de dos números. No redondea el resultado, sino que lo trunca.
  • Modulo o Residuo ( % ): Regresa el residuo de la división entre dos números.
  • Exponenciación ( ** ): Regresa el resultado de multiplicar un número por si mismo n número de veces.

Booleanos y operadores de comparación

Los valores lógicos o booleanos son aquellos que sólo pueden tener dos estados: True y False, Verdadero y Falso o Encendido y Apagado. Son utilizados para indicar si una condición especifica existe, y en Python se declaran con las palabras True y False.

Los operadores lógicos son aquellos como and y or que indican si dos o más situaciones comparadas son verdaderas o falsas.

Para que and regrese un valor verdadero, ambas condiciones deben ser verdaderas. Para que or regrese verdadero, basta con que una condición sea verdadera.

Operadores de comparación

Al momento de contar con dos valores en Python, es posible compararlos utilizando alguno de los siguientes operadores:

  • Menor que ( < )
  • Mayor que ( > )
  • Menor o igual que ( <= )
  • Mayor o igual que ( >= )
  • Igual que ( == )

Es importante diferenciar Igual que ( == ) del símbolo para dar un valor a una variable ( = ).

Cada comparación regresará un valor booleano True o False, y pueden combinarse entre ellas.

Además, Python no sólo puede comparar números, si no también Strings, tipos de datos, y más.

Estructuras de control (If – Else)

Las estructuras de control, como su nombre indica, son las operaciones que controlan si una acción sucederá o no.

Estas se controlan mediante las palabras if else. Donde if indica la condición que debe cumplirse para que la acción ocurra, mientras que else indica la acción que ocurrirá siempre que la condición no sea cumplida.

La sintáxis de if - else marca que debes escribir if, seguido de la condición a cumplir y dos puntos para marcar el final de la expresión, después, hacer un salto de línea y escribir la expresión a ejecutar.

Hay que mencionar que el uso de else después de if es totalmente opcional, y puede no existir.

El siguiente código imprime "Positivo" si x es mayor a 0, y "Negativo" si es menor a 0:

Elif

También podemos encontrar la estructura elif (diminutivo de else-if), que evaluará una segunda condición después de cumplirse el primer if para ejecutar otra acción. Por ejemplo, ajustando el código anterior para detectar el uso del cero, quedaría así:

De esta forma, si x es mayor a 0 significa que es positivo, y se imprimirá en pantalla. Si x es menor a 0, es por lo tanto un número negativo, y mostrará lo respectivo en pantalla. Si x no es mayor a 0, ni es menor a 0, entonces x es igual a 0, por lo que se imprime "Cero" en pantalla.

Estructuras de datos

Además de las variables individuales, en Python puedes crear colecciones de datos que almacenen diferentes tipos de datos y variables. Los 3 tipos de colecciones de datos en Python son:

  • Listas: Son colecciones de datos modificables, se declaran utilizando corchetes ( [] ) y colocando en su interior los datos a enlistar separados por comas.
  • Tuplas: Muy similares a las listas, pero no son modificables, lo que a su vez las hace más rápidas en su ejecución. Se declaran utilizando parentesis ( () ) y separando por comas sus elementos.
  • Diccionarios: Estructura de datos que asocia datos a una clave que no debe repetirse en el diccionario, a la que se puede acceder después. Se declaran con llaves ( {} ) y utilizando comas para separar sus elementos. Los valores se asocian a las claves con dos puntos (clave:valor)

Abajo puedes ver como declarar y llenar cada una de las colecciones de datos:

Acceso a elementos

Listas y tuplas

Cada elemento de las listas y tuplas recibe un índice que lo identifica según el orden en que se encuentre, comenzando a contar desde 0, que puede ser usado para acceder a dicho elemento, y en el caso de las listas, permite modificar el elemento. Para acceder a un elemento utilizando su identificador, debes escribir el nombre de la lista o tupla y entre corchetes, el número del índice. P. ej: lista[0] accederá al primer elemento de la lista.

Diccionarios

Con los diccionarios puedes acceder a los valores de cada clave escribiendo esta entre corchetes. Además, puedes redefinir el valor asociado a una clave tan sólo escribiendo diccionario["clave"] = valor.

Agregar y eliminar elementos a listas y diccionarios

Aunque las tuplas no pueden modificarse (Son inmutables), es posible añadir y eliminar elementos de una lista o diccionario en Python.

Listas

Para agregar un elemento a una lista, es necesario utilizar el método append(). Tan sólo tienes que agregar un punto después del nombre de la lista y entre parentesis el elemento a agregar.

Por ejemplo, para agregar el número 4 a miLista.

miLista.append(4)

Mientras que para eliminar un elemento, puedes usar el método pop(), y entre parentesis el valor del elemento a eliminar.

Para eliminar el número 4 de miLista:

miLista.pop(4)

En caso de existir más de una vez, pop eliminará el de índice mayor.

Diccionarios

En el caso de los diccionarios, agregar claves es tan sencillo como escribir el nombre del diccionario, seguido de corchetes con la nueva clave adentro, más el signo de igual y el valor a agregar. Por ejemplo, para agregar la clave "a" a miDiccionario:

miDiccionario["a"] = 20

Mientras que para eliminar el elemento puedes volver a recurrir al método pop(), de igual forma que en una lista. Para eliminar la clave "a" de miDiccionario:

miDiccionario.pop("a")

Existe mucho más que puedes realizar con las listas, tuplas y diccionarios en Python, pero el propósito de esta entrada no es profundizar en el lenguaje, por lo que te recomiendo echar un vistazo a la documentación oficial de Python y ver el potencial de estas estructuras de datos.

Ciclos repetitivos

Como cualquier lenguaje de programación, Python cuenta con ciclos repetitivos; operaciones que se repiten ejecutando código una determinada cantidad de veces.

En Python podemos encontrar dos tipos de ciclos:

  • While: Se ejecutan mientras una condición sea verdadera.
  • For: Se ejecutan una cantidad predefinida de veces. Cuentan con una variable que cambia su valor con cada vuelta del ciclo.

A cada una de las vueltas de un ciclo se le llama “iteración”.

En el caso de los ciclos while, sólo tienes que escribir while seguido de una condición. Mientras la condición sea verdadera el ciclo seguirá ejecutandose, pero debes tener cuidado, pues si en el código del ciclo no incluyes alguna forma de conseguir que esa condición pase a ser falsa, terminarás con un bucle infinito que te obligará a cerrar el programa.

Por ejemplo, el siguiente código se ejecutará mientras x sea mayor a 0, restando 1 a su valor con cada vuelta del ciclo. Cuando la condición deja de ser cierta, el ciclo se rompe, e imprime el mensaje "Fin".

Los ciclos for, por otro lado, se ejecutan una cantidad de veces ya especificada por el usuario. Los ciclos for son muy utilizados para navegar y realizar operaciones a través de listas y tuplas, ya que cuentan con una variable temporal que cambia su valor con cada iteración del ciclo por el de uno de los elementos de la lista.

Estructuras anidadas

Una propiedad de las estructuras de control y de los ciclos repetitivos es que pueden contenerse dentro de si mismos de forma indefinida; en otras palabras, puedes tener ciclos dentro de ciclos y hacer esto la cantidad de veces que sea necesario, de igual forma con las condiciones de las estructuras de control. A esto se le llama anidar, ya sea anidar bucles o anidar condiciones, según sea el caso.

If-else anidados

Los if-else anidados permiten agregar una segunda condición que se evaluará sólo si la primera se cumple. Pero debes notar que los if-else anidados no son iguales a colocar dos o más if-else consecutivos: Con estructuras anidadas, la segunda condición se evaluará sólo si la primera se cumple, con if-else consecutivos cada uno será evaluado independientemente de los demás.

Ciclos anidados

Los ciclos anidados son, como ya mencione, ciclos que se ejecutan dentro de ciclos. Es decir, cuando el ciclo interior termine de dar todas sus vueltas, el ciclo exterior completará la primera, y se repetirá hasta que el ciclo exterior termine de ejecutarse. Por ejemplo, el siguiente código imprime el abecedario completo y con cada vuelta, imprime un número desde el 0 hasta el 9.

De igual forma, puedes mezclar ciclos y condiciones como sea necesario para crear código más complejo:

Definición de funciones personalizadas

Las funciones personalizadas te permiten reutilizar partes de tu código las veces que desees sin tener que volver a escribirlo cada que lo necesites. Un ejemplo de funciones son las ya incluidas con Python y que ya has utilizado, como print(), type(), pop(), append(), etc. y como puedes ver, todas incluyen paréntesis después de su nombre, lo que permite identificarlas como funciones.

En el caso de las funciones personalizadas, eres tu quien define su nombre, los datos de entrada y salida y las acciones que ocurren en su cuerpo.

Se declaran con la palabra def seguida del nombre de tu función, finalizando con paréntesis y dos puntos.

El código que agregues dentro de tu función no se ejecutará hasta que invoques la función; para hacer esto, sólo debes escribir el nombre de tu función con paréntesis incluidos.

Las variables que incluyas dentro de tu función son llamadas variables locales, y sólo existen dentro de la función, por lo que cuando esta termine de ejecutarse, los valores de las variables locales serán borrados de la memoria. Para evitar perdida de datos, es posible retornar valores de una función y almacenarlos en una variable utilizando la expresión return seguido del valor que se retornara, al final de la función, e invocando la función dentro de una variable.

Las funciones también pueden recibir argumentos, es decir, variables o valores que dotarán de un valor a variables locales designadas, que actuarán como comodines en estos casos.

Por ejemplo, si modificamos nuestra función suma() para recibir argumentos, quedaría así:

Las funciones personalizadas pueden ser tan complejas como tu requieras e invocarse las veces que sean necesarias, sin limite alguno.

Las funciones en Python son una principales herramientas del lenguaje, y te recomendaría leer la documentación del lenguaje y practicar mucho su uso para dominarlas, pues abarcan mucho más de lo que te puedo mostrar en este post.

Y con esto doy por terminado esta especie de curso super-acelerado de Python. Es posible que, si no tienes experiencia en programación, te cueste trabajo entender algunas de las expresiones mostradas en el código, pero este post no pretende convertir a nadie en un experto de nada, puesto que para ello se requiere dedicarle al estudio de la programación el tiempo suficiente, que supera por mucho al que puedas tardar en terminar de leer este post. Por otro lado, si ya conoces otro lenguaje de programación y quieres comenzar a sumergirte en el mundo de Python, espero que esto te sirva como una pequeña referencia resumida sobre las bases del lenguaje.

Finalmente, te recuerdo que la práctica hace al maestro, y dedicándole algunas horas al día a programar, veras grandes avances en pocas semanas.

Tags:

Share Post :

More Posts