Como funciona o % em Python?
O que faz o {[[0]} num cálculo? Não consigo perceber o que faz.
Por exemplo:3 + 2 + 1 - 5 + 4 % 2 - 1 / 4 + 6
é aparentemente igual a 7. Como?
18 answers
O operador % (módulo) rende o restante da divisão do primeiro argumento pelo segundo. Os argumentos numéricos são primeiro convertidos para um tipo comum. Um argumento de direita zero levanta a excepção de erro ZeroDivisionError. Os argumentos podem ser números de vírgula 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 modulo sempre produz um resultado com o mesmo sinal que seu segundo operando (ou zero); o valor absoluto do resultado é estritamente menor do que o valor absoluto do segundo operando [2].
Retirado de http://docs.python.org/reference/expressions.html
Exemplo 1:
6%2
avalia em 0
porque não há nenhum restante se 6 for dividido por 2 (3 vezes ).
Exemplo 2: 7%2
avalia 1
porque há um resto de 1
quando 7 é dividido por 2 ( 3 vezes ).
De modo a resumir isso, devolve o resto de uma operação de divisão, ou 0
se não há mais nada. Então {[0] } significa encontrar o resto de 6 dividido por 2.
Um pouco fora do tópico, o %
também é usado em operações de formatação de cadeias de caracteres como %=
para substituir valores numa cadeia de caracteres:
>>> x = 'abc_%(key)s_'
>>> x %= {'key':'value'}
>>> x
'abc_value_'
Novamente, fora do tópico, mas parece ser um pouco documentado recurso que levei algum tempo para rastrear, e eu pensei que estava relacionado com Pitons módulo de cálculo para esta página classifica altamente.
O módulo é uma operação matemática, por vezes descrita como "aritmética de clock"."Eu acho que descrevê-lo como simplesmente um restante é enganador e confuso porque ele esconde a verdadeira razão pela qual ele é usado tanto na ciência da computação. Ele realmente é usado para enrolar em torno de ciclos.
Pense num relógio: suponha que você olhe para um relógio em tempo" militar", onde o intervalo de tempo vai de 0: 00-23: 59. Agora, se você quisesse que algo acontecesse todos os dias à meia-noite, você iria querer o Tempo actual mod 24 a zero:Se (hora % 24 == 0):
Pode-se pensar em todas as horas da história envolvendo um círculo de 24 horas vezes e mais e a hora atual do dia é o número infinitamente longo mod 24. É um conceito muito mais profundo do que apenas um resto, é uma forma matemática de lidar com ciclos e é muito importante na ciência da computação. Ele também é usado para enrolar em torno de arrays, permitindo que você aumente o índice e use o módulo para enrolar de volta para o começo depois que você chegar ao fim da matriz.Uma expressão como 'x % y' avalia o resto de 'x / y'. As regras de precedência são como " / "e"*".
>>> 9 / 2
4
>>> 9 % 2
1
- 9 dividido por 2 é igual a 4.
- 4 vezes 2 é 8
- 9 menos 8 é 1 - o restante.
Python gotcha: dependendo da versão em Python que está a usar, %
também é o operador de interpolação de texto (obsoleto), por isso tenha cuidado se vem de uma língua com um tipo de casting automático (como o PHP ou o JS) onde uma expressão como '12' % 2 + 3
é legal: em Python irá resultar em TypeError: not all arguments converted during string formatting
o que provavelmente será bastante confuso para si.
[actualizar para o Python 3]
Observações do utilizador n00p:9/2 é 4.5 em python. Você tem que fazer a divisão inteira assim: 9//2 Se quiser que o python lhe diga quantos objetos inteiros restam após a Divisão(4).
Para ser preciso, a divisão inteira era o padrão no Python 2:
$ python2.7
Python 2.7.10 (default, Oct 6 2017, 22:29:07)
[GCC 4.2.1 Compatible Apple LLVM 9.0.0 (clang-900.0.31)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> 9 / 2
4
>>> 9 // 2
4
>>> 9 % 2
1
Em Python 3 agora 9 / 2
os resultados 4.5
realmente, mas tenha em mente que a resposta original é muito antiga.
$ python3.6
Python 3.6.1 (default, Apr 27 2017, 00:15:59)
[GCC 4.2.1 Compatible Apple LLVM 8.1.0 (clang-802.0.42)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> 9 / 2
4.5
>>> 9 // 2
4
>>> 9 % 2
1
Na maioria das línguas, % é usado para Módulo. O Python não é excepção.
Python - Operadores Básicos
http://www.tutorialspoint.com/python/python_basic_operators.htm
O módulo divide o operando da mão esquerda pelo operando da mão direita e devolve o restante
A = 10 e b = 20
B % a = 0
Além disso, há uma função incorporada útil chamada divmod
:
Divmod (a, b)
Tome dois números (não complexos) como argumentos e devolva um par de números constituídos pelo seu quociente e restante ao usar divisão longa.
x % y
calcula o restante da Divisão x
dividida por y
Onde o quociente é um inteiro . O restante tem o sinal de y
.
No Python 3, as taxas de cálculo 6.75
; isto acontece porque o /
faz uma divisão verdadeira, Não uma divisão inteira como (por omissão) no Python 2. No Python 2 1 / 4
dá 0, como o resultado é arredondado para baixo.
A divisão inteira pode ser feita também no Python 3, com o operador //
, de modo a obter o 7 como um resultado, você pode executar:
3 + 2 + 1 - 5 + 4 % 2 - 1 // 4 + 6
Além disso, você pode obter a divisão de estilo Python no Python 2, adicionando apenas a linha
from __future__ import division
Como a primeira linha de código fonte em cada ficheiro de código.
Operador de módulo, é usado para a divisão restante em inteiros, normalmente, mas em Python pode ser usado para números de ponto flutuante.
Http://docs.python.org/reference/expressions.html
O operador % (módulo) rende o restante da divisão do primeiro argumento pelo segundo. Os argumentos numéricos são primeiro convertidos para um tipo comum. Um argumento de direita zero levanta a excepção de erro ZeroDivisionError. Os argumentos podem ser números de vírgula flutuante, por exemplo, 3, 14% 0, 7 é igual a 0, 34 (dado que 3, 14 é igual a 4*0.7 + 0.34.) The modulo operator always yields a result with the same signe as its second operand (or zero); the absolute value of the result is strictly smaller than the absolute value of the second operand [2].
É uma operação modulo, excepto quando é um antigo operador de formatação de cordas estilo C, Não uma operação modulo . Veja aqui para mais detalhes. Você verá muito disso em código existente.
Esteja ciente de que
(3+2+1-5) + (4%2) - (1/4) + 6
Mesmo com os parêntesis resulta em 6.75 em vez de 7 se calculado em Python 3.4.
E o operador ' / ' não é assim tão fácil de entender, também (python2. 7): tente...
- 1/4
1 - 1/4
Este é um pouco fora do tópico aqui, mas deve ser considerado ao avaliar a expressão acima:)
O operador% módulo também pode ser usado para imprimir cadeias de caracteres (tal como em C), tal como definido no Google https://developers.google.com/edu/python/strings.
# % operator
text = "%d little pigs come out or I'll %s and %s and %s" % (3, 'huff', 'puff', 'blow down')
Isto parece estar fora de questão, mas vai ajudar alguém.
É, como em muitas línguas semelhantes A C, o restante ou operação modulo. Veja a documentação para tipos numéricos-int, float, long, complex.
O módulo divide o operando da mão esquerda pelo operando da mão direita e devolve o restante.
Se ajudar:
1:0> 2%6
=> 2
2:0> 8%6
=> 2
3:0> 2%6 == 8%6
=> true
... e assim por diante.
O operador % (módulo) rende o restante da divisão do primeiro argumento pelo segundo. Os argumentos numéricos são primeiro convertidos para um tipo comum.
Isto baseia-se na precedência do operador.3 + 2 + 1 - 5 + 4 % 2 - 1 / 4 + 6 = 7
%
riz Modo . 3 % 2 = 1
, 4 % 2 = 0
/
is (an integer in this case) division, so:
3 + 2 + 1 - 5 + 4 % 2 - 1 / 4 + 6
1 + 4%2 - 1/4 + 6
1 + 0 - 0 + 6
7
Http://docs.python.org/reference/expressions.html
Então, com a ordem das operações, Isso resulta em(3+2+1-5) + (4%2) - (1/4) + 6
(1) + (0) - (0) + 6
7
O 1/4=0 porque estamos a fazer matemática inteira aqui.
Divisão De Módulo Em Geral:
A divisão Módulo devolve o resto de uma operação de divisão matemática. Faz o seguinte:
Digamos que temos um dividendo de 5 e divisor de 2, o seguinte: a operação de divisão seria (igual a x):dividend = 5
divisor = 2
x = 5/2
-
O primeiro passo 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
-
A seguir, a saída do x_int é multiplicada pelo divisor:
X_mult = x_int * divisor x_mult = 4
-
Por último, o dividendo é subtraído do x_mult
Dividendo-x_mult = 1
-
A operação de Módulo devolve, portanto, 1:
5 % 2 = 1
Aplicação para aplicar o módulo de elasticidade a uma fracção
Example: 2 % 5
O cálculo do módulo de elasticidade quando aplicado a uma fracção é o mesmo que acima; no entanto, é importante notar que a divisão inteira resultará num valor de zero quando o divisor for maior que o dividendo:
dividend = 2
divisor = 5
A divisão inteira resulta em 0 considerando que, por conseguinte,, quando a Etapa 3 é realizada, o valor do dividendo é realizado (subtraído de zero):
dividend - 0 = 2 —> 2 % 5 = 2
Aplicação para aplicar o módulo de elasticidade a um negativo
Ocorre uma divisão do piso na qual o valor da divisão inteira é arredondado para o valor inteiro mais baixo:
import math
x = -1.1
math.floor(-1.1) = -2
y = 1.1
math.floor = 1
Portanto, quando você faz divisão inteira você pode ter um resultado diferente do que você espera!
Aplicação das etapas anteriores aos seguintes dividendos e divisores: ilustra o conceito de Módulo:
dividend: -5
divisor: 2
Passo 1: Aplicar a divisão inteira
x_int = -5 // 2 = -3
Passo 2: multiplicar o resultado da divisão inteira pelo divisor
x_mult = x_int * 2 = -6
Passo 3: subtrai o dividendo da variável multiplicada, notifica o duplo negativo.
dividend - x_mult = -5 -(-6) = 1
Portanto:
-5 % 2 = 1