web-dev-qa-db-fra.com

Que signifie le signe de pourcentage en Python

Dans le tutoriel, vous trouverez un exemple pour trouver des nombres premiers:

>>> for n in range(2, 10):
...     for x in range(2, n):
...         if n % x == 0:
...             print(n, 'equals', x, '*', n//x)
...             break
...     else:
...         # loop fell through without finding a factor
...         print(n, 'is a prime number')
...

Je comprends que le double == est un test d’égalité, mais je ne comprends pas la partie if n % x. Comme si je pouvais parcourir verbalement chaque partie et dire ce que la déclaration fait pour l'exemple. Mais je ne comprends pas comment le signe de pourcentage se situe. 

Que dit réellement if n % x?

42
Lonnie Price

Opérateur de module; donne le reste de la valeur de gauche divisé par la valeur de droite. Comme:

3 % 1 serait égal à zéro (puisque 3 se divise également par 1)

3 % 2 serait égal à 1 (puisque diviser 3 par 2 donne le reste de 1).

50
inkedmn

Le% fait deux choses, en fonction de ses arguments. Dans ce cas, il agit en tant qu'opérateur modulo, ce qui signifie que lorsque ses arguments sont des nombres, il divise le premier par le second et renvoie le reste. 34 % 10 == 4 depuis 34 divisé par 10 est trois, avec un reste de quatre. 

Si le premier argument est une chaîne, il le formate en utilisant le second argument. C'est un peu compliqué, je vais donc me référer à la documentation , mais juste à titre d'exemple: 

>>> "foo %d bar" % 5
'foo 5 bar'

Cependant, le comportement de formatage de chaîne est complété à partir de Python 3.1 en faveur du mécanisme chaîne.format():

Les opérations de formatage décrites ici présentent de nombreux problèmes qui conduisent à un certain nombre d'erreurs courantes (telles que le défaut d'affichage correct des n-uplets et des dictionnaires). L’utilisation de la nouvelle interface str.format() permet d’éviter ces erreurs et offre également une approche généralement plus puissante, plus souple et plus extensible du texte.

Et heureusement, presque toutes les nouvelles fonctionnalités sont également disponibles à partir de Python 2.6.

Bien que ce soit un peu hors sujet, puisque les gens le trouveront en cherchant "signe de pourcentage en Python" (comme je l’ai fait), je voulais noter que le signe% est également utilisé pour préfixer une fonction "magique" dans iPython: https://ipython.org/ipython-doc/3/interactive/tutorial.html#magic-functions

9
Stephen

L'opérateur de module. Le reste lorsque vous divisez deux nombres.

Par exemple:

>>> 5 % 2 = 1 # remainder of 5 divided by 2 is 1
>>> 7 % 3 = 1 # remainer of 7 divided by 3 is 1
>>> 3 % 1 = 0 # because 1 divides evenly into 3
1
user1031446

En python 2.6, l'opérateur '%' a effectué un module. Je ne pense pas qu'ils l'ont changé en 3.0.1

L'opérateur modulo vous dit le reste d'une division de deux nombres. 

1
Jon W

Il vérifie si le modulo de la division. Par exemple, dans le cas où vous parcourez tous les nombres de 2 à n et vérifiez si n est divisible par l’un des nombres entre les deux. En termes simples, vous vérifiez si un nombre donné n est premier. (Indice: vous pouvez vérifier jusqu'à n/2).

1
laginimaineb

Blockquote x% n == 0 ce qui signifie que le x/n et la valeur de rappel seront pris en conséquence et comparés à zéro ....

exemple: 4/5 == 0

4/5 rappel est 1

1 == 0 (Faux)

0
Hemant