O que faz %
em um cálculo? Parece que não consigo descobrir o que faz.
Calcula uma porcentagem do cálculo, por exemplo: 4 % 2
é aparentemente igual a 0. Como?
O operador% (módulo) produz o restante da divisão do primeiro argumento pelo segundo. Os argumentos numéricos são primeiro convertidos em um tipo comum. Um argumento zero right gera a exceção ZeroDivisionError. Os argumentos podem ser números de ponto flutuante, por exemplo, 3,14% 0,7 é igual a 0,34 (uma vez que 3,14 é igual a 4 * 0,7 + 0,34). O operador módulo sempre produz um resultado com o mesmo sinal que seu segundo operando (ou zero); o valor absoluto do resultado é estritamente menor que o valor absoluto do segundo operando [2].
Retirado de http://docs.python.org/reference/expressions.html
Exemplo 1:
6%2
avalia como 0
porque não há resto se 6 é dividido por 2 (3 vezes).
Exemplo 2 : 7%2
avalia como 1
porque existe um restante de 1
quando 7 é dividido por 2 (3 vezes).
Então, para resumir isso, ele retorna o restante de uma operação de divisão, ou 0
se não houver restante. Então, 6%2
significa encontrar o restante de 6 dividido por 2.
- 21 % 4
é 3 em Python.-11%5 = 4
?Um pouco fora do tópico,
%
também é usado em operações de formatação de cadeias, como%=
para substituir valores em uma cadeia:Novamente, fora do tópico, mas parece ser um pequeno recurso documentado que me levou um pouco para rastrear, e eu pensei que estava relacionado ao cálculo do módulo Pythons para o qual esta página SO é altamente classificada.
fonte
%=
não aparece nessa página%
operador foi escolhido porque reflete os especificadores de porcentagem usados na própria string.Uma expressão como é
x % y
avaliada para o restante dex ÷ y
- bem, tecnicamente é "módulo" em vez de "lembrete", portanto os resultados podem ser diferentes se você estiver comparando com outros idiomas em que%
está o operador restante. Existem algumas diferenças sutis (se você estiver interessado nas consequências práticas, consulte também "Por que a divisão inteira do Python flutua" abaixo).Precedência é o mesmo que operadores
/
(divisão) e*
(multiplicação).Python gotcha : dependendo da versão do Python que você está usando,
%
também é o operador de interpolação de string (descontinuado); portanto, observe se você vem de uma linguagem com conversão automática de tipo (como PHP ou JS) em que uma expressão como'12' % 2 + 3
é legal: in Python, resultará emTypeError: not all arguments converted during string formatting
que provavelmente será bastante confuso para você.[atualização para Python 3]
Comentários do usuário n00p:
Para ser mais preciso, a divisão inteira costumava ser o padrão no Python 2 (lembre-se, essa resposta é mais antiga que o meu garoto que já está na escola e na época 2.x era mainstream):
Nos
9 / 2
resultados modernos do Python, de4.5
fato:[atualizar]
O usuário dahiya_boy perguntou na sessão de comentários:
Isso é estranho, certo? Se você tentar isso em JavaScript:
Isso ocorre porque no JavaScript
%
é o operador "restante", enquanto no Python é o operador "módulo" (matemática do relógio).Você pode obter a explicação diretamente do GvR :
Em Java e iOS,
-11 % 5 = -1
enquanto em python e ruby-11 % 5 = 4
.Bem, metade da razão é explicada por Paulo Scardine , e o restante da explicação está abaixo aqui
Em Java e iOS,
%
dá o restante Isso significa que se você dividir 11% 5 dáQuotient = 2 and remainder = 1
e -11% 5 dáQuotient = -2 and remainder = -1
.Exemplo de código no iOS rápido.
Mas quando falamos em python, dá o módulo de clock. E seu trabalho com a fórmula abaixo
mod(a,n) = a - {n * Floor(a/n)}
Isso significa,
mod(11,5) = 11 - {5 * Floor(11/5)} => 11 - {5 * 2}
Assim,
mod(11,5) = 1
E
mod(-11,5) = -11 - 5 * Floor(11/5) => -11 - {5 * (-3)}
Assim,
mod(-11,5) = 4
Código de exemplo no python 3.0.
fonte
help(divmod)
documenta o invarianteq, r = divmod(x y) <==> q*y + r == x
.O módulo é uma operação matemática, algumas vezes descrita como "aritmética do relógio". Acho que descrevê-lo simplesmente como um restante é enganoso e confuso, porque oculta a verdadeira razão pela qual é usado tanto na ciência da computação. É realmente usado para envolver ciclos.
Pense em um relógio: suponha que você observe um relógio em horário "militar", onde o intervalo de horários varia de 0:00 a 23,59. Agora, se você deseja que algo aconteça todos os dias à meia-noite, você deseja que o mod 24 da hora atual seja zero:
if (hora% 24 == 0):
Você pode pensar em todas as horas da história envolvendo um círculo de 24 horas sem parar e a hora atual do dia é esse número infinitamente longo, mod 24. É um conceito muito mais profundo do que apenas um restante, é uma maneira matemática lidar com ciclos e é muito importante na ciência da computação. Também é usado para agrupar em torno de matrizes, permitindo aumentar o índice e usar o módulo para voltar ao início depois de atingir o final da matriz.
fonte
a % b = a - b * floor(a/b)
Python - Operadores básicos
http://www.tutorialspoint.com/python/python_basic_operators.htm
a = 10 eb = 20
b% a = 0
fonte
Na maioria dos idiomas,% é usado para o módulo . Python não é exceção.
fonte
O operador% Modulo também pode ser usado para imprimir strings (como em C), conforme definido no Google https://developers.google.com/edu/python/strings .
Isso parece um pouco fora do tópico, mas certamente ajudará alguém.
fonte
x % y
calcula o restante da divisãox
dividido pory
onde o quociente é um número inteiro . O restante tem o sinal dey
.No Python 3, o cálculo rende
6.75
; isso ocorre porque existe/
uma divisão verdadeira, e não uma divisão inteira como (por padrão) no Python 2. No Python 21 / 4
, o 0 é 0, pois o resultado é arredondado para baixo.A divisão inteira também pode ser feita no Python 3, com
//
operador, para obter o 7 como resultado, você pode executar:Além disso, você pode obter a divisão de estilo Python no Python 2, apenas adicionando a linha
como a primeira linha do código fonte em cada arquivo fonte.
fonte
#
é para comentários e//
é um operador.Operador de módulo, é usado para divisão restante em números inteiros, normalmente, mas em Python pode ser usado para números de ponto flutuante.
http://docs.python.org/reference/expressions.html
fonte
É uma operação de módulo, exceto quando é um operador de formatação de string no estilo C à moda antiga, não uma operação de módulo . Veja aqui para detalhes. Você verá muito disso no código existente.
fonte
Além disso, existe uma função interna útil chamada
divmod
:fonte
Esteja ciente que
mesmo com os colchetes, resulta em 6,75 em vez de 7, se calculado no Python 3.4.
E o operador '/' também não é fácil de entender (python2.7): tente ...
Isso é um pouco fora de tópico aqui, mas deve ser considerado ao avaliar a expressão acima :)
fonte
(1)+(0)-(0.25)+(6)
.Foi difícil para mim encontrar prontamente casos de uso específicos para o uso de% online, por exemplo, por que fazer divisão de módulo fracionário ou divisão de módulo negativo resulta na resposta que ele faz. Espero que isso ajude a esclarecer perguntas como esta:
Divisão de módulos em geral:
A divisão de módulo retorna o restante de uma operação de divisão matemática. É o seguinte:
Digamos que temos um dividendo de 5 e um divisor de 2, a seguinte operação de divisão seria (igual a x):
A primeira etapa no cálculo do módulo é conduzir a divisão inteira:
x_int = 5 // 2 (a divisão inteira em python usa barra dupla)
x_int = 2
Em seguida, a saída de x_int é multiplicada pelo divisor:
x_mult = x_int * divisor x_mult = 4
Por fim, o dividendo é subtraído do x_mult
dividendo - x_mult = 1
A operação do módulo, portanto, retorna 1:
5% 2 = 1
Aplicação para aplicar o módulo a uma fração
O cálculo do módulo quando aplicado a uma fração é o mesmo que acima; no entanto, é importante observar que a divisão inteira resultará em um valor zero quando o divisor for maior que o dividendo:
A divisão inteira resulta em 0 enquanto que; portanto, quando a etapa 3 acima é executada, o valor do dividendo é realizado (subtraído de zero):
Aplicação para aplicar o módulo a um valor negativo
A divisão de piso ocorre na qual o valor da divisão inteira é arredondado para o menor valor inteiro:
Portanto, quando você faz uma divisão inteira, pode obter um resultado diferente do esperado!
A aplicação das etapas acima no seguinte dividendo e divisor ilustra o conceito de módulo:
Etapa 1: aplicar divisão inteira
Etapa 2: Multiplique o resultado da divisão inteira pelo divisor
Etapa 3: Subtraia o dividendo da variável multiplicada, observe o duplo negativo.
Portanto:
fonte
O operador% (módulo) produz o restante da divisão do primeiro argumento pelo segundo. Os argumentos numéricos são primeiro convertidos em um tipo comum.
Isso é baseado na precedência do operador.
fonte
%
é módulo .3 % 2 = 1
,4 % 2 = 0
/
é (um número inteiro neste caso) divisão, então:fonte
É uma operação de módulo http://en.wikipedia.org/wiki/Modulo_operation
http://docs.python.org/reference/expressions.html
Assim, com a ordem das operações, isso funciona para
(3 + 2 + 1-5) + (4% 2) - (1/4) + 6
(1) + (0) - (0) + 6
7
O 1/4 = 0 porque estamos fazendo matemática inteira aqui.
fonte
É, como em muitos idiomas do tipo C, a operação restante ou módulo. Consulte a documentação para tipos numéricos - int, float, long, complex .
fonte
Módulo - Divide o operando esquerdo pelo operando direito e retorna o restante.
Se ajudar:
... e assim por diante.
fonte
Descobri que a maneira mais fácil de entender o operador do módulo (%) é através de uma divisão longa. É o restante e pode ser útil para determinar um número que seja par ou ímpar:
fonte