¿Cómo se calculan las operaciones aritméticas en Python?

Introducción

Los números son extremadamente comunes en la programación. Se utilizan para representar cosas como las dimensiones del tamaño de la pantalla, ubicaciones geográficas, dinero y puntos, la cantidad de tiempo que pasa en un video, las posiciones de los avatares del juego y los colores mediante la asignación de códigos numéricos.

Ser capaz de realizar operaciones matemáticas de manera efectiva en la programación es una habilidad importante para desarrollar debido a la frecuencia con la que trabajará con números. Aunque una comprensión de alto nivel de las matemáticas ciertamente puede ayudarlo a convertirse en un mejor programador, no es un requisito previo. Si no tienes experiencia en matemáticas, trata de pensar en las matemáticas como una herramienta para lograr lo que te gustaría lograr, y como una forma de mejorar tu pensamiento lógico.

Trabajaremos con dos de los tipos de datos numéricos, enteros y flotantes más utilizados de Python :

  • Los números enteros son números enteros que pueden ser positivos, negativos o 0 (…, -1 , 0 , 1 , …).
  • Los flotadores son números reales, contienen un punto decimal (como en 9.0 o -2.25 ).

Este tutorial repasará los operadores que se pueden usar con tipos de datos numéricos en Python.

Operadores

Un operador es un símbolo o función que indica una operación. Por ejemplo, en matemáticas, el signo más o + es el operador que indica la suma.

En Python, veremos algunos operadores familiares traídos de las matemáticas, pero otros operadores que utilizaremos son específicos de la programación de computadoras.

Aquí hay una tabla de referencia rápida de operadores relacionados con las matemáticas en Python. Cubriremos todas las siguientes operaciones en este tutorial.

Operación

Lo que devuelve

x + y

Suma de x e y

xy

Diferencia de x e y

-X

Signo cambiado de x

+ x

Identidad de x

x * y

Producto de x e y

x / y

Cociente de x e y

x // y

Cociente de la división del piso de x e y

x% y

Resto de x / y

x ** y

x a la potencia y

También cubriremos la operación de asignación compuesta, que incluye += y *= , que combinan un operador aritmético con el operador = .

Adición y sustracción

En Python, los operadores de suma y resta se desempeñan igual que en matemáticas. De hecho, puede usar el lenguaje de programación Python como calculadora.

Veamos algunos ejemplos, comenzando con enteros:

imprimir (1 + 5)

Salida 6

En lugar de pasar enteros directamente a la declaración de print , podemos inicializar variables para representar valores enteros:

a = 88
b = 103

imprimir (a + b)

Salida191

Debido a que los enteros pueden ser números positivos y negativos (y también 0), podemos agregar un número negativo con un número positivo:

c = -36
d = 25

imprimir (c + d)

Salida-11

La adición se comportará de manera similar con las carrozas:

e = 5.5
f = 2.5

imprimir (e + f)

Salida 8.0

Debido a que agregamos dos flotantes juntos, Python devolvió un valor flotante con un decimal.

La sintaxis para la resta es la misma que para la suma, excepto que cambiará su operador del signo más ( + ) al signo menos ( - ):

g = 75,67
h = 32

imprimir (g – h)

Salida43.67

Aquí, restamos un número entero de un flotador. Python devolverá un flotante si al menos uno de los números involucrados en una ecuación es un flotante.

Operaciones aritméticas unarias

Una expresión matemática unaria consiste en un solo componente o elemento, y en Python los signos más y menos se pueden usar como un solo elemento emparejado con un valor para devolver la identidad del valor ( + ), o cambiar el signo del valor ( - ) .

Aunque no se usa comúnmente, el signo más indica la identidad del valor. Podemos usar el signo más con valores positivos:

i = 3.3
imprimir (+ i)

Salida3.3

Cuando usamos el signo más con un valor negativo, también devolverá la identidad de ese valor, y en este caso sería un valor negativo:

j = -19
imprimir (+ j)

Salida-19

Con un valor negativo, el signo más devuelve el mismo valor negativo.

El signo menos, alternativamente, cambia el signo de un valor. Entonces, cuando pasamos un valor positivo, encontraremos que el signo menos antes del valor devolverá un valor negativo:

i = 3.3
imprimir (-i)

Salida-3.3

Alternativamente, cuando usamos el operador unario de signo menos con un valor negativo, se devolverá un valor positivo:

j = -19
imprimir (-j)

Salida19

Las operaciones aritméticas unarias indicadas por el signo más y el signo menos devolverán la identidad del valor en el caso de +i , o el signo opuesto del valor como en -i .

Multiplicación y división

Al igual que la suma y la resta, la multiplicación y la división serán muy similares a como lo hacen en matemáticas. El signo que usaremos en Python para la multiplicación es * y el signo que usaremos para la división es / .

Aquí hay un ejemplo de multiplicación en Python con dos valores flotantes:

k = 100,1
l = 10,1

imprimir (k * l)

Salida1011.0099999999999

Cuando divide en Python 3, su cociente siempre se devolverá como flotante, incluso si usa dos enteros:

m = 80
n = 5

imprimir (m / n)

Salida16.0

Este es uno de los principales cambios entre python 2 y python 3. El enfoque de Python 3 proporciona una respuesta fraccionaria para que cuando use / para dividir 11 entre 2 se devuelva el cociente de 5.5 . En Python 2, el cociente devuelto para la expresión 11 / 2 es 5 .

Python 2’s / operator realiza la división de piso , donde para el cociente x el número devuelto es el entero más grande menor o igual que x . Si ejecuta el ejemplo anterior de print(80 / 5) con Python 2 en lugar de Python 3, recibirá 16 como salida sin el decimal.

En Python 3, puede usar // para realizar la división del piso. La expresión 100 // 40 devolverá el valor de 2 . La división de piso es útil cuando necesita un cociente para estar en números enteros.

Módulo

El operador % es el módulo, que devuelve el resto en lugar del cociente después de la división. Esto es útil para encontrar números que son múltiplos del mismo número, por ejemplo.

Veamos el módulo en acción:

o = 85
p = 15

imprimir (o% p)

Salida10

Para desglosar esto, 85 dividido por 15 devuelve el cociente de 5 con un resto de 10. El valor 10 es lo que se devuelve aquí porque el operador de módulo devuelve el resto de una expresión de división.

Si usamos dos flotantes con el módulo, se devolverá un valor flotante para el resto:

q = 36.0
r = 6.0

imprimir (o% p)

Salida 0.0

En el caso de 36.0 dividido por 6.0, no hay resto, por lo que se devuelve el valor de 0.0 .

Poder

El operador ** en Python se usa para elevar el número de la izquierda a la potencia del exponente de la derecha. Es decir, en la expresión 5 ** 3 , 5 se eleva a la 3ª potencia. En matemáticas, a menudo vemos esta expresión representada como 5³, y lo que realmente está sucediendo es que 5 se multiplica por sí mismo 3 veces. En Python, obtendríamos el mismo resultado de 125 ejecutando 5 ** 3 o 5 * 5 * 5 .

Veamos un ejemplo con variables:

s = 52.25
t = 7

imprimir (s ** t)

1063173305051.292

Elevar el flotador 52.25 a la potencia de 7 través del operador ** da como resultado un gran valor flotante devuelto.

Precedencia del operador

En Python, como en matemáticas, debemos tener en cuenta que los operadores serán evaluados en orden de precedencia, no de izquierda a derecha o de derecha a izquierda.

Si nos fijamos en la siguiente expresión:

u = 10 + 10 * 5

Podemos leerlo de izquierda a derecha, pero recuerde que la multiplicación se realizará primero, por lo que si llamamos print(u) , recibiremos el siguiente valor:

Salida60

Esto se debe a que 10 * 5 evalúa a 50 , y luego agregamos 10 para devolver 60 como resultado final.

Si en su lugar nos gustaría agregar el valor de 10 a 10 , luego multiplicar esa suma por 5 , podemos usar paréntesis como lo haríamos en matemáticas:

u = (10 + 10) * 5
imprimir (u)

Salida100

Una forma de recordar el orden de operación es a través del acrónimo PEMDAS :

Orden

Letra

Representa

1

PAG

P arentheses

2

mi

E xponente

3

METRO

M ultiplicación

4 4

re

D ivision

5 5

UN

Una tradición

6 6

S

S ubtraction

Puede estar familiarizado con otro acrónimo para el orden de las operaciones, como BEDMAS o BODMAS . Cualquiera que sea el acrónimo que funcione mejor para usted, trate de tenerlo en cuenta al realizar operaciones matemáticas en Python para que se obtengan los resultados que espera.

Operadores de Asignación

El operador de asignación más común es uno que ya ha utilizado: el signo igual = . El operador de asignación = asigna el valor a la derecha a una variable a la izquierda. Por ejemplo, v = 23 asigna el valor del número entero 23 a la variable v .

Al programar, es común usar operadores de asignación compuesta que realizan una operación en el valor de una variable y luego asignan el nuevo valor resultante a esa variable. Estos operadores compuestos combinan un operador aritmético con el operador = , por lo que para sumar combinaremos + con = para obtener el operador compuesto += . Veamos cómo se ve eso:

w = 5
w + = 1
imprimir (w)

Salida6

Primero, establecemos la variable w igual al valor de 5 , luego utilizamos el operador de asignación compuesta += para agregar el número correcto al valor de la variable izquierda y luego asignamos el resultado a w .

Los operadores de asignación compuesta se usan con frecuencia en el caso de los bucles for, que usará cuando desee repetir un proceso varias veces:

para x en el rango (0, 7):
x * = 2
imprimir (x)

Salida0
2
4 4
6 6
8
10
12

Con el ciclo for, pudimos automatizar el proceso del operador *= que multiplicó la variable w por el número 2 y luego asignó el resultado en la variable w para la próxima iteración del ciclo for.

Python tiene un operador de asignación compuesto para cada uno de los operadores aritméticos discutidos en este tutorial:

y + = 1 # agregar luego asignar valor

y – = 1 # restar luego asignar valor

y * = 2 # multiplicar luego asignar valor

y / = 3 # dividir luego asignar valor

y // = 5 # división de piso y luego asignar valor

y ** = 2 # aumento a la potencia de luego asignar valor

y% = 3 # devuelve el resto y luego asigna el valor

Los operadores de asignación compuesta pueden ser útiles cuando las cosas deben incrementarse o disminuirse gradualmente, o cuando necesita automatizar ciertos procesos en su programa.