Anuncios

Bienvenidos sean a este post, en el post de hoy hablaremos sobre los distintos tipos que disponemos para manejar los numeros con python.

Anuncios

Enteros

Los numeros enteros o Integers por su nombre en ingles son los tipos de numeros mas basicos que existen en casi cualquier lenguaje de programacion, en este lenguaje en particular no tienen un valor de memoria asignado y pueden utilizar todo lo que tengan disponible, estos pueden ser positivos, negativos y cero, por ultimo soportan todas las operaciones basicas, veamos las operaciones que tenemos disponibles:

OperadorDescripcion
+Operacion de suma
Operacion de resta
*Operacion de multiplicacion
/Operacion de division
//Operacion de division entera
%Obtencion del modulo de division
**Operacion de potenciacion
Anuncios

Los cuatro primeros operadores son los basicos de todo lenguaje, los curioso empiezan a partir del quinto porque la division entera se usa para realizar la division pero devuelve la parte entera sin la coma, en cambio la division si devuelve la parte decimal de la operacion, el sexto operador solo devuelve el remanente de la division (no el resultado de la division) y el ultimo operador sirve para realizar calculos de potencia haciendo al valor informado, vamos a ver un ejemplo para los distintos calculos que podemos realizar:

>>> a = 10
>>> b = 4
>>> a + b # Operacion de suma
14
>>> a - b # Operacion de resta
6
>>> a * b # Operacion de multiplicacion
40
>>> a / b # Operacion de division
2.5
>>> a // b # Operacion de division entera
2
>>> a % b # Operacion de obtencion de resto de division
2
>>> a ** b # Operacion de potenciacion 10 a la 4
10000
>>>
Anuncios
Nota: El simbolo que ven despues de la operacion (#) es para efectuar comentarios y no afectan al codigo
Anuncios

Creamos dos nombres con valores para efectuar las distintas operaciones, observen como con la division normal nos devolvio los decimales pero en la division entera solo el valor anterior a la coma, el valor obtenido por el modulo (%) seria lo que queda de la division, por ultimo el calculo de 10 ^ 4, con esto cubrimos las operaciones basicas, vamos a tomar el siguiente ejemplo:

>>> a = 14
>>> b = 3
>>> b - a
-11
>>> a / b
4.666666666666667
>>> int(a/b)
4
>>>
Anuncios

En este caso variamos los valores de a y b, primero restamos el valor de b al valor de a y este nos devolvera un valor negativo, despues haremos una division para ver el valor que nos devuelve para despues utilizar una funcion llamada int que nos devolvera solo la parte entera de la division anterior, por ultimo vamos a ver una particularidad que nos permite python:

>>> n = 1_048_576
>>> n
1048576
>>> hex_n = 0x_100_000
>>> hex_n
1048576
>>>
Anuncios

Python permite separar los unidades por medio del undercore (_) para poder identificarlas mejor, en el ejemplo tenemos al nombre n con el valor separados por los undercore si mostramos el valor de n veremos que muestra el numero correcto, lo mismo podemos hacer con un valor en hexadecimal como hicimos a continuacion, ese valor representa al anterior pero en hexadecimal, y si lo mostramos nos devolvio el valor entero.

Anuncios

Booleanos

En general cuando hablamos de datos booleanos nos referimos a estado True (verdadero) o False (falso) y ahora viene la pregunta, porque aparece esto aca? Simple, en realidad python establece que un valor 0 es igual a False y el valor 1 como True pero en realidad cualquier valor distinto de 0 es considerado como True, vamos a ver un ejemplo:

>>> int(True)
1
>>> int(False)
0
>>> bool(1)
True
>>> bool(-42)
True
>>> bool(0)
False
>>>
Anuncios

Observen que si nosotros usamos a int con la palabra True o False nos devuelve 1 y 0 respectivamente, despues para entender mejor el ejemplo usamos a bool para que evalue valores y observen como las dos primeras operaciones son consideradas como True y cuando tenga el valor 0 devuelve False, cumpliendo lo mencionado anteriormente.

Anuncios

Numeros Reales

Al principio hablamos de los numeros enteros que en general es la representacion mas basica de valores sin decimales pero en la vida real necesitaremo manejar estos decimales, python almacena la informacion en 64 bits dividido en tres segmentos:

  • Signo
  • Exponente (numeros antes de la coma)
  • Mantisa (numeros posterior a la coma)
Anuncios

En python se pueden usar una precision simple o doble pero a partir de las ultimas versiones se utiliza unicamente la doble, veamos el siguiente ejemplo:

>>> pi = 3.1415926536
>>> radio = 4.5
>>> area = pi * (radio ** 2)
>>> area
63.617251235400005
>>>
Anuncios
Nota: Recuerden que son sistemas basados en ingles y nuestra coma es el punto de ellos.
Anuncios

Primero definiremos un valor para pi, luego establecemos otro nombre y la llamaremos radio, nuestro siguiente sera calcular el area en base a los datos anteriores y sera almacenado en un nombre con la misma identificacion, despues lo llamamos y obtendremos el valor del area, observen que obtuvimos un valor con todos los decimales pero con los numeros reales vamos a tener un inconveniente, veamos:

>>> 0.3 - 0.1 * 3 # Deberia dar 0
-5.551115123125783e-17
>>>
Anuncios

Esta resta deberia dar 0 pero por un tema de como se manejan los valores con los puntos flotantes nos devuelve este error, si bien es un inconveniente grave cuando debemos trabajar con decimales esto se solucionara con un tipo de dato que veremos un poco mas adelante, pasemos al siguiente.

Anuncios

Numeros Complejos

Si como leyeron python tiene soporte para numeros complejos, el que tenga estudios tecnicos los conocera para los que no sepan que es un numero complejo es la solucion a la raiz cuadrada de -1 y estan compuestos por dos partes: un numero real y un numero imaginario (la parte que compensa el resultado de la raiz), no voy a entrar en detalles pero cuando lo aprendi lo usabamos para hacer calculos sobre Corriente Alterna, en este caso el lenguaje nos permite utilizarlo sin necesidad de implementar nada, veamos un ejemplo:

>>> c = 3.14 + 2.73j
>>> c.real
3.14
>>> c.imag
2.73
>>>
Anuncios

En este caso creamos un nombre llamado c la cual posee un numero complejo, es como lo ven donde la primera parte es el numero real y la segunda es la imaginaria, para distinguirla se agrega la letra j, despues usamos dos funciones, la primera (real) se usa para extraer el numero real del numero complejo, la segunda (imag) la utilizamos para la parte imaginaria, observen como se obtienen los resultados respectivos, no vamos a ahondar mucho mas pero sepan que podemos manejar este tipo de numeros sin tener que hacer implementaciones grandes.

Anuncios

Fracciones y decimales

Hablemos del primer tipo, como su nombre lo indica son las fracciones de toda la vida las cuales estan compuesta de un valor numerador y otro denominador en sus valores mas bajos, veamos un ejemplo:

>>> from fractions import Fraction
>>> f = Fraction(10,6)
>>> f
Fraction(5, 3)
>>> f.numerator
5
>>> f.denominator
3
>>> Fraction(1,3) + Fraction(2,3)
Fraction(1, 1)
>>>
Anuncios

En este caso no viene incorporado directo al lenguaje, como en el caso anterior, sino que debemos importar la funcion Fraction desde el paquete fractions que viene incluida con el lenguaje, despues usaremos el nombre f para almacenar la fraccion 10/6, si mostramos el valor de f veremos que se redujo a la minima expresion disponible, despues por medio de numerator y denominator podremos obtener el numerador y denominador respectivamente, por ultimo hicimos una suma entre dos fracciones obteniendo el resultado, vamos a hablar sobre los decimales mediante los siguientes ejemplos:

>>> from decimal import Decimal as D
>>> D(3.14)
Decimal('3.140000000000000124344978758017532527446746826171875')
>>> D('3.14')
Decimal('3.14')
>>>
Anuncios

Primero importaremos la funcion para poder trabajar con los decimales pero con una curiosidad, en este caso usamos as D para generar un alias y no tener que usar la palabra Decimal sino simplemente D, despues usamos a D para pasarle el numero 3.14 y este lo transformara al numero de coma flotante que usa el lenguaje pero si lo ponemos las comillas simples este lo convierte a decimal pero al ser cadena o string lo deja como lo informamos, vamos a analizar el ejemplo que vimos en numeros reales:

>>> D(0.1) * D(3) - D(0.3)
Decimal('2.775557561565156540423631668E-17')
>>> D('0.1') * D(3) - D('0.3')
Decimal('0.0')
>>>
Anuncios

Si realizamos el mismo ejemplo anterior pero como D lo transforma al tipo de dato que es, seguiremos con el mismo inconveniente pero para solucionarlo volvemos a hacer el mismo calculo pero esta vez para los decimales o numeros reales lo transformamos en cadenas por las comillas y ahora si funcionara correctamente, como notaran esto es un problema ajeno a nosotros porque es un error de interpretacion del lenguaje al usar el tipo de datos flotantes pero con cadenas no hay inconvenientes, por ultimo veremos la ultima funcion:

>>> D('1.4').as_integer_ratio()
(7, 5)
>>>
Anuncios

Esta funcion nos permite convertir los valores decimales en valores de fraccion, no esta bueno?, pero recuerden usarlo como cadena y no como numeros reales porque de lo contrario devolvera cualquier resultado.

Anuncios

En resumen, hoy hemos visto una introduccion de todos los posibles numeros que podemos utilizar en nuestro lenguaje, hemos visto a los basicos como son los enteros, luego hablamos sobre los de tipo booleanos, el siguiente fueron los de tipo con decimales o flotantes, despues una de las variedades mas extrañas en cualquier lenguaje como son los numeros complejos sin necesidad de agregar ninguna libreria o paquete para poder manejarlo, para finalmente ver como utilizar fracciones (con ayuda externa) y como solucionar el inconveniente de los decimales con los numeros reales, espero les haya gustado sigueme en tumblr, Twitter o Facebook para recibir una notificacion cada vez que subo un nuevo post en este blog, nos vemos en el proximo post.

Anuncios
pp258

Donación

Es para mantenimento del sitio, gracias!

$1.00