Qu'est-ce que Python est l'équivalent de Java standard pour la boucle?
Je suis en train d'écrire un algorithme simple pour vérifier la primalité d'un entier et je vais avoir un problème de traduction de ce code Java en Python:
for (int i = 3; i < Math.sqrt(n); i += 2) {
if (n % i == 0)
return false;
}
Donc, j'ai essayé de l'utiliser, mais je suis évidemment à sauter de la division par 3:
i = 3
while (i < int(math.sqrt(n))):
i += 2 # where do I put this?
if (n % i == 0):
return False
for (a; b; c) { _ }
->a; while(b) { _; c; }
- limitation de portée des questions et d'avoir à traiter aveccontinue
. Le dernier composant de la pour-chaque construction est evalutated après chaque évaluation du corps de la boucle.- Vous voudrez peut-être jeter un coup d'oeil à blog.startifact.com/posts/older/what-is-pythonic.html en référence à vouloir traduire en java (ou d'autres langues) à python - n'oubliez pas d'être pythonic!
Vous devez vous connecter pour publier un commentaire.
La seule
for
-boucle en Python est techniquement un "for-each", de sorte que vous pouvez utiliser quelque chose commeBien sûr, Python peut faire mieux que ça:
serait l'équivalent (en supposant qu'il est un
return true
à la fin de la Java de la boucle). En effet, ce dernier pourrait être considéré comme le Pythonic façon de l'aborder.Référence:
for
Étatsxrange
all
i%3
être utilisé?for
boucle qui fusionne un initialiseur, condition d'arrêt, et l'étape de la déclaration. Qui est: la seulefor
en Python est unforeach
.Une traduction directe serait:
En Java pour la boucle, l'étape (
i += 2
partie dans votre exemple) se produit à la fin de la boucle, juste avant qu'elle ne se répète. Traduit à un moment, votre pour la boucle serait équivalent à:Qui en Python est similaire:
Cependant, vous pouvez le rendre plus "Pythonic" et plus facile à lire à l'aide de Python
xrange
fonction, qui permet de spécifier unstep
paramètre:Utiliser une base de Python
for i in range
boucle: