Quelle serait la manière la plus pythonique de trouver le plus grand nombre multiple de n mais inférieur à un x supérieur?
Exemple pratique:
< pre> XXX 48 * 54 = 2592 est le plus proche.
Je ferais une boucle for jusqu'à ce que je ne le fasse pas ' t aller plus de x . Quelles sont les meilleures alternatives?
4 Réponses :
Le moyen le plus simple consiste probablement à utiliser //:
((x - 1) // n) * n
Si le nombre doit être strictement inférieur à x , utilisez x - 1 à la place:
(x // n) * n
L'expression x // n est la division par étage de x code> par n , en supprimant tout reste.
C'est la seule réponse qui prend en compte l'exigence (strictement) "inférieure à".
@RoryDaulton. Mais l'exigence peut être extrapolée aux autres de manière assez triviale.
Vous pouvez utiliser l'opération modulo
x - 1 -((x-1) % n)
Si la limite supérieure doit être strictement inférieure à x, utilisez
x-(x%n)
Je suis sûr que l'opération s'appelle modulo, pas module: en.wikipedia.org/wiki/Modulo_operation a>, docs.python.org/3 / reference /… (+1 BTW).
Cela fonctionne aussi:
print(x - (x%n))
La manière la plus pythonique à laquelle je pourrais penser serait pour python 2 ou 3:
>>> (x // n) * n
n * floor (x / n), avec votre exemple x / n = 54,91, donc le multiple est 48 * 54