¿Cuál es el resultado de % en Python?
¿Qué hace %
en un cálculo? Parece que no puedo entender lo que hace.
¿Resulta un porcentaje del cálculo? Por ejemplo: 4 % 2
aparentemente es igual a 0. ¿Cómo?
El operador % (módulo) produce el resto de la división del primer argumento por el segundo. Los argumentos numéricos primero se convierten a un tipo común. Un argumento cero a la derecha genera la excepción ZeroDivisionError. Los argumentos pueden ser números de coma flotante, por ejemplo, 3,14%0,7 es igual a 0,34 (ya que 3,14 es igual a 4*0,7 + 0,34). El operador de módulo siempre produce un resultado con el mismo signo que su segundo operando (o cero); el valor absoluto del resultado es estrictamente menor que el valor absoluto del segundo operando [2].
Tomado de http://docs.python.org/reference/expressions.html
Ejemplo 1:
6%2
se evalúa como 0
porque no hay resto si 6 se divide por 2 (3 veces).
Ejemplo 2 : 7%2
se evalúa como 1
porque hay un resto de 1
cuando 7 se divide por 2 (3 veces).
Entonces, para resumir, devuelve el resto de una operación de división, o 0
si no hay resto. Entonces 6%2
significa encontrar el resto de 6 dividido por 2.
Algo fuera de tema, %
también se usa en operaciones de formato de cadenas, como %=
sustituir valores en una cadena:
>>> x = 'abc_%(key)s_'
>>> x %= {'key':'value'}
>>> x
'abc_value_'
Nuevamente, fuera de tema, pero parece ser una característica poco documentada que me tomó un tiempo rastrear, y pensé que estaba relacionada con el cálculo del módulo de Pythons para el cual esta página SO ocupa un lugar destacado.