Operaciones
aritméticas elementalesEn esta lección se tratan las operaciones aritméticas elementales en Python.
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 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
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.
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
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
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
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
Esta obra está bajo una licencia de Creative
Commons.