NIEBLA EN EL BOSQUE. |
Pulsemos un número cualquiera en el teclado, por ejemplo, 2:
>>> 2
>>> 2
Bien. Como podemos ver, hemos escrito nuestro primer 'objeto' justo al lado del prompt, cosa que Python hace de manera automática. Ahora pulsamos ENTER y veamos qué sucede:
>>> 2
2
¡Alucinante! Justo debajo del prompt nos ha vuelto a salir el mismo número pero, ésta vez, en azul
¿Qué es lo que ha pasado?
Detengámonos un poco para comprender un par de cosas nuevas: al pulsar sobre ENTER, Python da por por concluido un código y ejecuta lo que se ha codificado hasta el momento. por eso, cada vez que queramos que Python ejecute una acción, normalmente, que ejecute un script o programa que hayamos escrito se lo pedimos a través de ENTER. Si todo va bien, Python nos devolverá un resultado. La terminología al uso en programación utiliza la expresión DEVOLVER cuando se refiere a obtener un resultado: el de una simple suma, el cociente de una división, un conjunto de letras que se repitan en un texto, el de leer cien líneas de código, ...
En nuestro caso nos ha devuelto el número 2, simplemente, porque le hemos proporcionado un 'objeto' numérico del tipo int, que es la abreviatura en inglés de 'INTEGER => ENTERO'. Como la línea de código sólo tiene un 2 y está escrita con la sintaxis correcta pues, hala, Python, al pulsar ENTER, nos devuelve 2.
Pero además nos devuelve un resultado en color azul. ¿Por qué? Porque el IDLE de Python utiliza un código de colores para facilitarnos la localización y el reconocimiento de las diferentes estructuras y objetos que empleamos a la hora de escribir código, lo cual nos facilita mucho las cosas a la hora de programar.
El color azul es el predeterminado por Python para mostrar los resultados de las ejecuciones de los programas cuando están correctamente codificados y no se encuentran errores. Verbigracia, el azul es el color de las devoluciones. También señala a algún objeto de Python, pero eso ya lo veremos más adelante.
Fijémonos que el resultado se muestra sin prompt, ya que el mismo atiende sólo al proceso de codificación, apuntando a un espacio dentro del SHELL donde es posible escribir una línea de código. En otras palabras, cada prompt se corresponde con una línea de código desapareciendo con las devoluciones.
Vamos ahora a por nuestra primera operación aritmética:
Acabamos de hacer y ejecutar una suma simple, con tan sólo dos operandos, dos objetos int, 2 y 3 recurriendo al operador aritmético de la suma: +. Básicamente, hemos utilizado Python como una calculadora. Este símbolo + de la suma junto con otros que nos permiten efectuar operaciones aritméticas simples se denomina OPERADOR ARITMÉTICO. Así, el símbolo de la resta, -; el de la multiplicación, *, o el de la división, /, por ejemplo, son operadores aritméticos.
El símbolo de la suma, +, como ya sabemos, es un operador aritmético. Pero en Python existen otros tipos de operadores a parte de los aritméticos: OPERADORES DE COMPARACIÓN, OPERADORES BOOLEANOS, etcétera. Los iremos viendo más adelante.
Tengamos en cuenta que un operador es aquéllo que nos permite relacionar datos (en el ejemplo anterior, los datos son los números 2 y 3), para operar con ellos mediante la inclusión de, al menos, un operador aritmético (en nuestro ejemplo, +) y obtener así un resultado que Python nos mostrará en azul.
En esta lista de operadores habrá algunos que nos habrán llamado la atención. En breve hablaremos de ellos. Por el momento, continuamos con el "foco" puesto sobre nuestro ejemplo anterior. "2 + 3", escrito junto al prompt, constituye una LÍNEA DE CÓDIGO, algo así como una estructura lógica de objetos (datos, operadores, signos, funciones,...), dispuestos de manera ordenada de acuerdo a una estructura sintáctica (que viene a ser la manera en que estos objetos se relacionan entre sí) cuya interpretación resulta coherente y comprensible para nuestro lenguaje de programación.
Detengámonos un poco para comprender un par de cosas nuevas: al pulsar sobre ENTER, Python da por por concluido un código y ejecuta lo que se ha codificado hasta el momento. por eso, cada vez que queramos que Python ejecute una acción, normalmente, que ejecute un script o programa que hayamos escrito se lo pedimos a través de ENTER. Si todo va bien, Python nos devolverá un resultado. La terminología al uso en programación utiliza la expresión DEVOLVER cuando se refiere a obtener un resultado: el de una simple suma, el cociente de una división, un conjunto de letras que se repitan en un texto, el de leer cien líneas de código, ...
En nuestro caso nos ha devuelto el número 2, simplemente, porque le hemos proporcionado un 'objeto' numérico del tipo int, que es la abreviatura en inglés de 'INTEGER => ENTERO'. Como la línea de código sólo tiene un 2 y está escrita con la sintaxis correcta pues, hala, Python, al pulsar ENTER, nos devuelve 2.
Pero además nos devuelve un resultado en color azul. ¿Por qué? Porque el IDLE de Python utiliza un código de colores para facilitarnos la localización y el reconocimiento de las diferentes estructuras y objetos que empleamos a la hora de escribir código, lo cual nos facilita mucho las cosas a la hora de programar.
El color azul es el predeterminado por Python para mostrar los resultados de las ejecuciones de los programas cuando están correctamente codificados y no se encuentran errores. Verbigracia, el azul es el color de las devoluciones. También señala a algún objeto de Python, pero eso ya lo veremos más adelante.
Fijémonos que el resultado se muestra sin prompt, ya que el mismo atiende sólo al proceso de codificación, apuntando a un espacio dentro del SHELL donde es posible escribir una línea de código. En otras palabras, cada prompt se corresponde con una línea de código desapareciendo con las devoluciones.
Vamos ahora a por nuestra primera operación aritmética:
Acabamos de hacer y ejecutar una suma simple, con tan sólo dos operandos, dos objetos int, 2 y 3 recurriendo al operador aritmético de la suma: +. Básicamente, hemos utilizado Python como una calculadora. Este símbolo + de la suma junto con otros que nos permiten efectuar operaciones aritméticas simples se denomina OPERADOR ARITMÉTICO. Así, el símbolo de la resta, -; el de la multiplicación, *, o el de la división, /, por ejemplo, son operadores aritméticos.
El símbolo de la suma, +, como ya sabemos, es un operador aritmético. Pero en Python existen otros tipos de operadores a parte de los aritméticos: OPERADORES DE COMPARACIÓN, OPERADORES BOOLEANOS, etcétera. Los iremos viendo más adelante.
Tengamos en cuenta que un operador es aquéllo que nos permite relacionar datos (en el ejemplo anterior, los datos son los números 2 y 3), para operar con ellos mediante la inclusión de, al menos, un operador aritmético (en nuestro ejemplo, +) y obtener así un resultado que Python nos mostrará en azul.
AQUÍ TENEMOS UNA TABLA CON LOS OPERADORES ARITMÉTICOS. |
Como esto es así, Python lo "lee", lo comprende y nos puede proporcionar (devolver) una respuesta que, si todo ha ido bien, se mostrará en azul. Una buena analogía es observar las frases de este mismo párrafo: cada vez que ponemos un punto y seguido y concluimos una es como si hubiéramos escrito una línea de código. Un conjunto de frases construye un párrafo, ¿verdad? Pues de la misma manera, un conjunto de líneas de código construye un script, un pequeño programa. Cuando al cabo de un párrafo más o menos largo, ponemos el punto y final ya tenemos un texto que modela un pensamiento, una idea, una reflexión, una opinión, una crítica, etc... Del mismo modo, cuando completamos todas las líneas de código (frases) que necesitamos para construir un script (párrafo) y le ponemos el punto y final (Enter) obtendremos una respuesta (el pensamiento, la idea, la reflexión, la opinión, la crítica, etc...) y podremos construir a continuación otro script (párrafo), y así sucesivamente hasta elaborar un programa (artículo, capítulo, página, etc..., como lo es éste de ARITMÉTICA BÁSICA). Esto sería el PROGRAMA.
Dicho así, un script sería un conjunto ordenado y coherente de líneas de código, y un programa sería a su vez un conjunto ordenado y coherente de scripts. Visualmente, sería algo así:
1 línea de código
2 línea de código
3 línea de código
*
*
*
n línea de código
Esto es un script, donde n indica la última línea de código, ya sea la 10, la 100, la 1000, la 453, la 87, o la dos millones.
1 script
2 script
3 script
*
*
*
n script
Esto es un programa, donde n indica el último script, ya sea el 10, el 100. el 1000, el 453, el 87 o el dos millones.
Conviene decir que, a veces, una sola línea de código, como en el ejemplo, puede constituir un script, del mismo modo que un único script puede ser un programa aunque estos casos prácticamente son inexistentes en programación real.
Además, "2 + 3" constituye por sí misma una EXPRESIÓN aritmética simple compuesta por dos números enteros, 2 y 3, y un operador aritmético, +. Observemos que dicha expresión, y no por casualidad, coincide con una línea de código prototipo. Veremos más adelante cómo en Python existe también el concepto de EXPRESIÓN y cómo éste va ligado al de "línea de código" tal cual lo entendemos ahora.
Veamos a continuación ejemplos de uso de los distintos operadores aritméticos:
Analicemos lo que podemos ver en nuestro ejemplo.
Tenemos los cuatro operadores matemáticos básicos: +, para la suma; -, para la resta; *, para la multiplicación y /, para la división. Nada que destacar sobre ellos salvo un detalle: en el ejemplo, la división (/), a pesar de ser una división exacta, nos devuelve un decimal, '4.0'. Tranquilidad, calma y sosiego: esto responde a un comportamiento preprogramado de Python. Para cualquier división, Python nos devolverá un decimal, un dato numérico de tipo float. En el caso de que la división fuera exacta, es decir, con el resto igual a 0, nos devolverá el cociente al que añade '.0'. Por ejemplo, para 100 / 5, Python nos devolverá 20.0. Y en el caso de que la división no fuera exacta, o lo que es lo mismo, con un resto distinto de 0, Python nos devolverá el cociente resultante con sus decimales correspondientes. Por ejemplo, para 100 / 7, Python nos devolverá 14.2857142857142857.
En resumidas cuentas, del mismo modo que int identifica a un número de tipo entero, float identifica a un número de tipo decimal.
En Python, a parte de enteros y decimales, tanto positivos (67, por ejemplo) como negativos (-67), el lenguaje es capaz de reconocer otros tipos numéricos: los números complejos, que en Python se representan con una 'j' delante del número, como por ejemplo, j67; los números binarios, los octales y los hexadecimales propios de los sistemas matemáticos de representación binaria, octal y hexadecimal respectivamente.
¡Que no cunda el pánico! estos tres últimos tipos se utilizan en trabajos de programación avanzada en proyectos científico-matemáticos que quedan fuera de la intención de éste tutorial. Nosotros trabajaremos con los números enteros, INT, y decimales, FLOAT, tanto positivos como negativos, que constituyen más del noventa por ciento de la programación actual.
En el caso de que quisiéramos que una división nos devolviera un entero en lugar de un decimal, como por ejemplo, repartir diez caramelos entre tres niños y que no se peleen entre ellos, o cómo repartir seis personas entre dos taxis de cuatro plazas cada uno, tan sólo tenemos que utilizar una doble barra, //, como vemos en el ejemplo de 16 // 4. Pero eso sí, en el caso de que usáramos un dividendo y/o un divisor decimal, el recurso a la doble barra nos devolverá el cociente más próximo con un '.0' detrás.
Python también nos puede mostrar el resto de una división recurriendo al operador '%'. Y también elevar un número a una potencia utilizando un doble asterisco, **, donde el primer número es la base y el segundo la potencia al que se lo quiere elevar.
También es posible recurrir a la función int() para convertir un tipo de dato string (siempre y cuando este sea un dígito, como "34", "4", "12345", etc.) en un número entero, o float() si queremos convertir esa misma string a un número decimal o de punto flotante, como también se lo conoce. O utilizarlas entre tipos de datos enteros y decimales, de manera conmutativa para convertir un número entero en decimal o viceversa. También podemos conseguir el mismo resultado, un tipo de dato entero a partir de una string, con la función eval(). Veámoslo con un ejemplo en el que, a través de la función input() de Python, un usuario puede ingresar un dato en el programa. Esta función input() la estudiaremos más adelante. De momento, sólo nos interesa comprobar cómo funciona la conversión de datos:
Las operaciones aritméticas en Python están sujetas al orden jerárquico de las mismas: primero se ejecuta la expresión rodeada de paréntesis; luego exponenciales y raíces; a continuación, la multiplicación y la división, de izquierda a derecha; y, finalmente, la suma y la resta, también de izquierda a derecha. Así: 4 * 5 +6 - 3 = 23, 4 * (5 + 6) - 3 = 41, 9 / 3 * 2 = 6 Y 9 / (3 * 2) = 1.5.
Para finalizar este apartado incluiremos una pequeña tabla complementaria a la anterior en la que podemos ver de un vistazo las funciones aritméticas más importantes, como quien dice, para ir abriendo boca, pues entraremos a ellas con más profundidad en capítulos posteriores.
T1. LOS TIPOS NONE Y BOOLEANO. POCO TEXTO PERO MUCHA ENJUNDIA.
T2. LAS FUNCIONES INT() Y FLOAT(). CUANDO LA PRECISIÓN ES UN GRADO.
Conviene decir que, a veces, una sola línea de código, como en el ejemplo, puede constituir un script, del mismo modo que un único script puede ser un programa aunque estos casos prácticamente son inexistentes en programación real.
MESA DE ICHASAGUA O DEL CONDE, ARONA, SUROESTE DE TENERIFE. |
Además, "2 + 3" constituye por sí misma una EXPRESIÓN aritmética simple compuesta por dos números enteros, 2 y 3, y un operador aritmético, +. Observemos que dicha expresión, y no por casualidad, coincide con una línea de código prototipo. Veremos más adelante cómo en Python existe también el concepto de EXPRESIÓN y cómo éste va ligado al de "línea de código" tal cual lo entendemos ahora.
Veamos a continuación ejemplos de uso de los distintos operadores aritméticos:
Tenemos los cuatro operadores matemáticos básicos: +, para la suma; -, para la resta; *, para la multiplicación y /, para la división. Nada que destacar sobre ellos salvo un detalle: en el ejemplo, la división (/), a pesar de ser una división exacta, nos devuelve un decimal, '4.0'. Tranquilidad, calma y sosiego: esto responde a un comportamiento preprogramado de Python. Para cualquier división, Python nos devolverá un decimal, un dato numérico de tipo float. En el caso de que la división fuera exacta, es decir, con el resto igual a 0, nos devolverá el cociente al que añade '.0'. Por ejemplo, para 100 / 5, Python nos devolverá 20.0. Y en el caso de que la división no fuera exacta, o lo que es lo mismo, con un resto distinto de 0, Python nos devolverá el cociente resultante con sus decimales correspondientes. Por ejemplo, para 100 / 7, Python nos devolverá 14.2857142857142857.
En resumidas cuentas, del mismo modo que int identifica a un número de tipo entero, float identifica a un número de tipo decimal.
En Python, a parte de enteros y decimales, tanto positivos (67, por ejemplo) como negativos (-67), el lenguaje es capaz de reconocer otros tipos numéricos: los números complejos, que en Python se representan con una 'j' delante del número, como por ejemplo, j67; los números binarios, los octales y los hexadecimales propios de los sistemas matemáticos de representación binaria, octal y hexadecimal respectivamente.
¡Que no cunda el pánico! estos tres últimos tipos se utilizan en trabajos de programación avanzada en proyectos científico-matemáticos que quedan fuera de la intención de éste tutorial. Nosotros trabajaremos con los números enteros, INT, y decimales, FLOAT, tanto positivos como negativos, que constituyen más del noventa por ciento de la programación actual.
En el caso de que quisiéramos que una división nos devolviera un entero en lugar de un decimal, como por ejemplo, repartir diez caramelos entre tres niños y que no se peleen entre ellos, o cómo repartir seis personas entre dos taxis de cuatro plazas cada uno, tan sólo tenemos que utilizar una doble barra, //, como vemos en el ejemplo de 16 // 4. Pero eso sí, en el caso de que usáramos un dividendo y/o un divisor decimal, el recurso a la doble barra nos devolverá el cociente más próximo con un '.0' detrás.
Python también nos puede mostrar el resto de una división recurriendo al operador '%'. Y también elevar un número a una potencia utilizando un doble asterisco, **, donde el primer número es la base y el segundo la potencia al que se lo quiere elevar.
También es posible recurrir a la función int() para convertir un tipo de dato string (siempre y cuando este sea un dígito, como "34", "4", "12345", etc.) en un número entero, o float() si queremos convertir esa misma string a un número decimal o de punto flotante, como también se lo conoce. O utilizarlas entre tipos de datos enteros y decimales, de manera conmutativa para convertir un número entero en decimal o viceversa. También podemos conseguir el mismo resultado, un tipo de dato entero a partir de una string, con la función eval(). Veámoslo con un ejemplo en el que, a través de la función input() de Python, un usuario puede ingresar un dato en el programa. Esta función input() la estudiaremos más adelante. De momento, sólo nos interesa comprobar cómo funciona la conversión de datos:
Las operaciones aritméticas en Python están sujetas al orden jerárquico de las mismas: primero se ejecuta la expresión rodeada de paréntesis; luego exponenciales y raíces; a continuación, la multiplicación y la división, de izquierda a derecha; y, finalmente, la suma y la resta, también de izquierda a derecha. Así: 4 * 5 +6 - 3 = 23, 4 * (5 + 6) - 3 = 41, 9 / 3 * 2 = 6 Y 9 / (3 * 2) = 1.5.
ROQUES DE ANAGA, NORESTE DE TENERIFE |
T2. LAS FUNCIONES INT() Y FLOAT(). CUANDO LA PRECISIÓN ES UN GRADO.
ROQUE DE DENTRO Y ROQUE DE FUERA,, PLAYA DE BENIJOS, ANAGA, NORESTE DE TENERIFE |
Hola, gracias y enhorabuena por el blog, te he elegido para aprender Python, me parece que explicas muy bien, aunque como crítica constructiva te diré que emplear espacios entre párrafos hace más amena la lectura, y bueno... si nos ponemos tiquismiquis me falta un botón al final de cada tema al tema siguiente y anterior, estaría genial.
ResponderEliminarQuería comentar una duda, ¿puede ser que en los números complejos la 'j' va detrás del número y no delante? Al comprobarlo en la ejecución me da error.
Gracias de nuevo.
Hola, Isabel. Muchísimas gracias por tus palabras. Es todo un aliciente saber que hay personas como tú que se acercan a este blog para adentrarse en Python y conocerlo un poquito mejor. Lo de la separación entre los párrafos es una buena idea que nunca se me ocurrió. Prometo aplicarlo de ahora en adelante (a partir de la última página subida). En cuanto a los botones, veré si el Blogger de Google me permite hacerlo sin descolocar demasiado el asunto. Y en cuanto a tu pregunta sobre los números complejos, la "j" va a la derecha del número o delante, según como se mire. Lo mejor para trabajar con números complejos es importar la librería cmath (ComplxMATH) y trabajar desde ella. Te pongo un ejemplo:
ResponderEliminar>>> import cmath
>>>
>>> c = 3 + 7j
>>> cmath.phase(c)
>>> 1.1659045405098132
En el blog procuramos no adentrarnos en cuestiones de programación científica para llegar a un público lo más amplio posible. Si estás interesada en conocer más sobre los números complejos te recomiendo la propia documentación de Python, https://docs.python.org/es/3.10/library/cmath.html, que no es para nada complicada de entender, y un pelín más avanzado, el sitio siguiente: https://sodocumentation.net/es/python/topic/1142/matemáticas-complejas.
Muchas gracias por tu comentario y feliz aprendizaje. Saludos.
Muchas Gracias Por Excelente Blog , Vamos a Seguir Adelante..
ResponderEliminarGracias a ti, Ramohe, por tu comentario. Saludos.
Eliminar