CURSO DE PYTHON 3.X


3.3.- Primeros Tropiezos en Python

     Utilicemos Python como una Nueva Calculadota


Primeros Tropiezos

         Es inevitable cuando se comienza, cuando se continua, y después de haber terminado un programa, darse cuenta que se han cometido algunas decenas, cientos o tal vez miles de errores.

 

         Esto es totalmente natural, lo importante es corregirlos. Como Python es un lenguaje compilado, los errores van apareciendo a medida que se ejecuta el programa, lo cual es bastante útil, sobretodo en una sesión interactiva porque nos permite corregirlos a medida que se cometen y con eso evitamos tener que desenredar laboriosamente una madeja de errores anidados.

 

         En la medida que el aburrimiento nos lo permita se resaltarán los errores más frecuentes y se explicará la solución, si es que el autor la conoce.

 

 

UTILICEMOS PYTHON COMO UNA NUEVA CALCULADORA

 

         Bueno, comencemos a andar para poder así dar nuestros primeros tropiezos, como ya se explicó anteriormente abriremos una sesión iterativa en una consola o interprete de órdenes, e invocaremos a Python.

 

>>>2+2

4

>>> 

 

         De hecho Python le ahorra una cantidad enorme de dinero evitándole comprar una calculadora ya que no solo sabe sumar, vea por ejemplo el siguiente ejemplo.

 

>>> ((2*(3528)/24)+8931)-9221

4.0

>>> 

 

         El cual a pesar de las apariencias, no da el mismo resultado que el del ejemplo anterior.

         La diferencia radica en que 4 es un número entero mientras que 4.0 no lo es,  tampoco es un número real, no, tampoco es imaginario.

         Es un número punto flotante.

        

        Más adelante volveremos sobre este punto (flotante), por ahora fijémonos en el siguiente ejemplo:

 

>>> 2*3528/24+8931-9221

4.0

>>> 

 

         Si se parece mucho al ejemplo anterior es porque efectivamente es lo mismo, bueno casi.

         La diferencia obviamente está en los paréntesis.

     Para hacer una operación como esta: 5+25/2 el interprete debe saber de antemano cuales operaciones realizar primero y cuales después.

        No es lo mismo realizar la división de 25 entre 2 y luego sumar 5, que sumar primero 5 + 25 y luego dividir entre 2. es decir:

 

>>> 5+25/2

17.5

>>> 

en cambio

>>> (5+25)/2

15.0

>>> 

    Por eso en el desarrollo de este curso se utilizará constantemente y redundantemente el uso de paréntesis.

    De esta manera estamos seguros que el interprete de Python hará las operaciones de la forma en que nosotros queremos y no a su manera.

     Además de la suma, resta, multiplicación, y división, Python reconoce tres operaciones más.

 

Con “**” se realiza la potenciación

 

>>> 5**2

25

>>> 2**5

32

 

     A pesar de que este curso está escrito en castellano, para representar los números se utilizará la notación inglesa, es decir 4.0 y no 4,0 como debería de ser.          Esto es para tener compatibilidad con el interprete de Python

 

>>> 16**0.5

4.0

>>> 16**1/2

8.0

>>> 2**3**2

512

>>> (2**3)**2

64

>>> 

         Notemos que en la potenciación el resultado sólo es entero si tanto la base como el exponente son enteros y el resultado correcto también lo es.

Para la división entera tenemos //

 

>>> 14//2

7

>>> 15//2

7

>>> 

 

 

         Finalmente % que no se usa para sacar porcentaje, se usa para hallar el resto de la división entera. 

 

                                    ¿Se acuerdan de la escuela?

 

 

 

 

 

 

bueno entonces

 

>>> 26%3

2

>>> 

         Este tipo de operación es muy útil y ya tendremos oportunidad de utilizarla más adelante.

 

 

         En definitiva el orden de precedencia en que se realizan las operaciones (si no se utilizan paréntesis) viene dado por la siguiente lista de prioridad siendo el primer operador el de mayor prioridad y el último el de menor prioridad: 

 

     Cuando las operaciones tienen el mismo orden de precedencia se ejecutan de izquierda a derecha

 

    Cuando estemos trabajando se nos presentará comúnmente el caso en que debemos mezclar números enteros con punto flotante, en la mayoría de los lenguajes este es un aspecto al que el programador debe estar muy atento. 

 

     Afortunadamente a partir de versión 3.0, Python tiene algo maravilloso que se llama conversión implícita, o en el idioma que los computistas suelen hablar, casting implícito.

 

         Esto es simplemente que el interprete de Python “se da cuenta” de la mezcla de formatos numéricos y los convierte automáticamente a la forma que más convenga.

 

>>> (5+52.3)*4

229.2

>>> 45/7

6.428571428571429

>>> 

         Esto implica que uno generalmente termina trabajando con punto flotante, ya que en el paso de un punto flotante a un entero se puede perder precisión, como se muestra en el siguiente ejemplo:

 

>>> 93.678954e3

93678.954

>>> int(93.678954e3)

93678

>>> 

en el cual se ve como se pierden los decimales haciendo uso de una conversión explicita en int(93.678954e3) y el resultado será 123.0 como cabría esperar.

 

         Lamentablemente el punto flotante tiene una limitación que no la tenían los enteros, no podemos trabajar con números arbitrariamente grandes o arbitrariamente pequeños.

 

         Esta limitación no la da la memoria de la máquina, es una consecuencia de la implementación del estándar IEEE 754. Así el número más grande que podemos representar es el:

 

>>> 1.7976931348623157e+308

1.7976931348623157e+308

>>> 

         Esto es sumamente importante, si producto de alguna operación se sobrepasa este número se tendrá una serie sin sentido de ceros y unos, es decir basura. A veces esto ocurre, y cuando ocurre se le da un nombre (es lindo nombrar las cosas) se le llama error.

 

         Si efectivamente metimos la pata, la máquina no se equivoca, es responsabilidad del programador no cometer este tipo de errores.

 

         Como programando se pueden cometer muchas clases de errores diferentes, a cada uno de ellos se le han dado nombres diferentes. Si, están todos muy bien clasificados y estudiados y todos, en última instancia son responsabilidad del programador.

 

         Afortunadamente Python es muy inteligente, y si nos pasamos del máximo permitido nos da una respuesta muy interesante.

 

>>> 1.8e308

inf

>>> 

         La palabra inf es en realidad una abreviatura de la palabra infinity y que funciona notablemente bien en castellano. También ocurre algo parecido cuando el

número es muy pequeño:

 

>>> 4.9406564584124654e-324

5e-324

>>> 

y si seguimos bajando encontramos:

 

>>> 2e-324

0.0

>>> 

 

 

         Es decir que si tenemos un número menor o igual que 2×10−324 se toma como cero. Si inadvertidamente sobrepasamos este límite inferior cometemos un underflow error cuya traducción sería algo así como error de “desbordamiento por debajo”.

 

ARITMÉTICA DEL PUNTO

 

         Antes de abandonar el apasionante mundo de los números punto flotante, haremos unos últimos comentarios sobre las operaciones entre dichos números.

         Si bien la propiedad conmutativa y la transitiva se cumplen sin problema, la asociativa no.

         Efectivamente (a+b) +c no necesariamente es igual a... a+ (b+c) esto se ilustra con un ejemplo:

 

>>> a = 2

>>> b = 0.001

>>> c = 5

>>> (a+b)+c

7.0009999999999994

>>> a+(b+c)

7.001

>>> 

 

         Es una diferencia pequeña, pero es una diferencia y si tenemos que hacer miles de estas operaciones al final podemos terminar con un resultado que no es el correcto.

 

         Lo mismo ocurre con la asociativa para la multiplicación

 

>>>a= 0.15

>>>b= 3

>>>c= 0.05

>>>(a*b)*c

>>>0.0225

>>>a*(b*c)

>>>0.022500000000000003

>>> 

 

 

PREGUNTAS y RESPUESTAS

Pregunta 1: ¿Qué es un IDE y que funciones cumple? (mencionar sin

                       conceptualizar)

Respuesta: Un IDE, o Entorno de Desarrollo Integrado, es un software que proporciona herramientas y características para facilitar el desarrollo de software.

Estas son algunas de las funciones que suelen ofrecer:

·        Editor de código

·        Depurador

·        Compilador/Intérprete

·        Gestión de proyectos

·        Control de versiones

·        Herramientas de construcción

·        Análisis estático de código

 

Pregunta 2: ¿Cómo se define una variable en Python?

Respuesta: Una variable en Python se define asignándole un nombre y un valor utilizando el operador de asignación '='.

 

Pregunta 3: ¿Cuáles son las reglas básicas para la asignación de variables?

Respuesta: Al asignar nombres a las variables en Python, es importante seguir ciertas reglas para garantizar que los nombres sean apropiados y fáciles de entender. Algunas reglas a seguir son:

·        El nombre de la variable debe ser descriptivo y conciso.

·        El nombre de la variable debe comenzar con una letra o un guión bajo.

·        El nombre de la variable no debe contener espacios en blanco.

·        El nombre de la variable debe estar en minúsculas y, en caso de utilizar más de una palabra, se puede separar las palabras utilizando guiones bajos.

·        Es recomendable utilizar nombres en inglés para las variables, ya que es el idioma más comúnmente utilizado en programación.

 

Pregunta 4: ¿Qué es una variable numérica en Python?

Respuesta: Una variable numérica en Python es aquella que almacena valores numéricos, como enteros (int), flotantes (float) o complejos.

 

Pregunta 5: ¿Es necesario declarar una variable en Python?

Respuesta: En Python, no es necesario declarar explícitamente el tipo de variable. Simplemente se asigna un valor a un nombre de variable y Python infiere el tipo de datos automáticamente.

 

Pregunta 6: ¿Cómo se asigna valores a una variable?

Respuesta: Utilizando el operador de asignación "=", donde el valor a la derecha del operador se asigna a la variable a la izquierda.

 

Pregunta 7: ¿Cuál es la diferencia entre una variable entera (int) y una variable flotante (float)?

Respuesta: Una variable entera (int) almacena números enteros sin decimales, mientras que una variable flotante (float) puede almacenar números con decimales.

 

Pregunta 8: ¿Cómo se declara una variable entera en Python?

Respuesta: Se puede declarar una variable entera en Python asignándole un valor numérico entero, por ejemplo: numero = 10.

 

Pregunta 9: ¿Cuál es el tipo de dato de la variable en la expresión: numero = 5.5?

Respuesta: El tipo de dato de la variable numero en la expresión es flotante (float).

 

Pregunta 10: ¿Cómo se declara una variable flotante en Python?

Respuesta: Se puede declarar una variable flotante en Python asignándole un valor numérico con decimales, por ejemplo: pi = 3.14159.

 

Pregunta 11: ¿Qué es una cadena de caracteres (string) en Python?

Respuesta: Una cadena de caracteres (string) en Python es una secuencia de caracteres encerrados entre comillas simples (' ') o dobles (" ").

 

Pregunta 12: ¿Cómo se declara una cadena de caracteres en Python?

Respuesta: Se puede declarar una cadena de caracteres asignándole un valor entre comillas simples o dobles, por ejemplo: nombre = 'Juan' o apellido = "Pérez".

 

Pregunta 13: ¿Cómo pueden evaluarse una cadena de caracteres?

Respuesta: Las cadenas de caracteres en Python pueden evaluarse de varias maneras, dependiendo de lo que se quiera hacer con ellas.

Algunas operaciones comunes incluyen:

·        Acceder a caracteres individuales utilizando índices: cadena[indice].

·        Obtener la longitud de la cadena utilizando la función len().

·        Concatenar cadenas utilizando el operador +.

·        Reemplazar partes de una cadena utilizando el método replace().

·        Dividir una cadena en subcadenas utilizando el método split().

 

Pregunta 14: ¿Cuál es el resultado de la concatenación de las cadenas 'Hola' y 'Mundo' en Python?

Respuesta: El resultado de la concatenación de las cadenas 'Hola' y 'Mundo' en Python es la cadena 'HolaMundo' si se utilizan operadores de concatenación, o 'Hola Mundo' si se agrega un espacio entre ellas.

 

Pregunta 15: ¿Cómo se convierte un valor numérico en una cadena de caracteres en Python?

Respuesta: Se puede convertir un valor numérico en una cadena de caracteres utilizando la función str(), por Ejemplo: numero = 10 y cadena = str(numero).

 

Pregunta 16: ¿Qué es una constante? 

Respuesta: En Python, una constante es un valor que no cambia durante la ejecución del programa. Se puede clasificar en dos tipos: constantes numéricas y constantes literales.

 

Pregunta 17: ¿Cómo se identifica o definen las constantes?

Respuesta: En Python, no hay una sintaxis específica para definir constantes. Por convención, las constantes se nombran utilizando letras mayúsculas y subrayados para separar palabras si es necesario, pero su valor no es inmutable y puede ser cambiado.