Volver al índiceOperaciones aritméticas elementales

En esta lección se tratan las operaciones aritméticas elementales en Python.


Variables numéricas enteras y decimales

Existen dos tipos de variables numéricas: enteras (sin decimales) y decimales (con decimales). Según cómo se escriba el número, Python lo asignará a una variable entera o decimal, como muestra el siguiente ejemplo:

Prueba este ejemplo:

>>> a = 5

>>> b = 4.5

>>> c = 12

>>> d = 12.0

En este caso las variables a y c son de tipo entero, mientras que b y d son de tipo real. Aunque c y d estén almacenando el mismo valor numérico, Python entiende en el último caso que se quiere utilizar una variable de tipo real.


Si las variables se definen enteras, Python muestra el resultado de los cálculos como números enteros. Si se quiere que Python utilice decimales, hay que definir las variables como reales, como muestra el siguiente ejemplo.

>>> distancia = 100

>>> tiempo = 3

>>> distancia / tiempo

33

>>> distancia = 100.0

>>> tiempo = 3.0

>>> distancia / tiempo

33.333333333333336

En el primer caso el resultado no tiene decimales, mientras que en el segundo caso el resultado sí que sale con decimales (en realidad hubiera sido suficiente con que una de las dos variables tuviera decimales para que el resultado se mostrara con decimales). Observe también que la última cifra del resultado de la división con decimales es incorrecta. Este error se debe a la forma en que Python almacena internamente los números decimales y hay formas de resolverlo. Este problema lo tienen casi todos los lenguajes de programación.

Volver al principio de la página


Las cuatro operaciones básicas

Las cuatro operaciones aritméticas básicas son la suma (+), la resta (-), la multiplicación (*) y la división (/). Cuando en una fórmula aparecen varias operaciones, Python las efectúa aplicando las reglas usuales de prioridad de las operaciones. En caso de querer que las operaciones se realicen en otro orden, se pueden utilizar paréntesis.

Volver al principio de la página


La división en Python

El problema de la división

En las versones 2.X de Python, el resultado de la división de dos números enteros es también un número entero: el cociente de la división entre esos dos números. Si no se tiene en cuenta este detalle, se pueden producir resultados no esperados, como muestra el siguiente ejemplo:

>>> variable = 100

>>> variable * 60 / 60

100

>>> variable / 60 * 60

60

Para entender por qué se obtienen resultados distintos, hay que tener en cuenta que Python efectúa los cálculos de izquierda a derecha y en cada paso el resultado es un número entero:

En Python 3.X el resultado de la división es un número decimal.


Cociente de una división

El cociente de una división se calcula con el operador //. El resultado será de tipo entero o decimal dependiendo del tipo de los números empleados. Por ejemplo:

>>> 10//3

3

>>> 10//4

2

>>> 20.0//7

2.0

>>> 20//6.0

3.0


Resto de una división

El resto de una división se calcula con el operador %. Por ejemplo:

>>> 10%3

1

>>> 10%4

2

>>> 10%5

0

Se puede calcular el resto de una división entre números decimales, pero normalmente los resultados no son exactos.

>>> 10.2%3

1.1999999999999993 # El resultado correcto es 1.2

>>> 10%4.2

1.5999999999999996 # El resultado correcto es 1.6

>>> 10.1%5.1

5.0 # Este resultado sí que es correcto

Volver al principio de la página


Potencias y raíces

Las potencias se calculan con el operador **, teniendo en cuenta que x**y = xy . Utilizando exponentes negativos o decimales se pueden calcular potencias inversas o raíces n-ésimas. Por ejemplo

>>> 2**3
8
>>> 10**-4
0.0001 # Recuerde que a-b= 1/ab
>>> 9**0.5
3.0 # Recuerde que a1/b es la raíz b-ésima de a
>>> (-1)**0.5 # Esto va a dar error porque es la raíz cuadrada de -1
Traceback (most recent call last):
  File "<pyshell#7>", line 1, in ?
    (-1)**0.5 ValueError: negative number cannot be raised to a fractional power
>>> -9**0.5 # Esto no da error porque hace primero la raíz y luego le pone el -
-3

También se pueden calcular potencias o raíces mediante la función pow(x,y). Si se da un tercer argumento, pow(x, y, z), la función calcula primero x elevado a y y después calcula el resto de la división por z.

>>> pow(2,3)

8

>>> pow(4,0.5)

2.0

>>> pow(2,3,5)

3

Volver al principio de la página


Notaciones compactas

Cuando una variabe se modifica a partir de su propio valor, se puede utilizar un notación compacta que existe también en otros lenguajes de programación.

Por ejemplo:

>>> a = 10

>>> a += 5

>>> a

15

es equivalente a:

>>> a = 10

>>> a = a + 5

>>> a

15

En general:

Notación: a += b a -= b a *= b a /= b a **= b a //= b a %= b
es equivalente :a a = a + b a = a - b a = a * b a = a / b a = a ** b a = a // b a = a % b

Lo que no se permite en Python son los operadores incremento (++) o decremento (--) que sí existen en otros lenguajes de programación:

>>> a = 5

>>> a++

SyntaxError: invalid syntax

Volver al principio de la página


Cosas que faltan: abs(x); complex(real[, imag]); max(s[, args...]); min(s[, args...]); round(x[, n])

Esta página forma parte del curso "Introducción a la programación con Python" disponible en http://www.mclibre.org
Autor: Bartolomé Sintes Marco
Última modificación de esta página: 2 de mayo de 2012

Creative Commons License
Esta obra está bajo una licencia de Creative Commons.