Je tente d'écrire le code suivant en tant que doublure.Compréhension de liste imbriquée avec contrôle de flux
for x in range(a, b+1):
prime = True
for y in range(2, int(x**0.5)):
if x%y == 0:
prime = False
break
if prime:
return x
Ceci recherche les nombres premiers entre a et b. Je vais enregistrer chaque nombre premier dans une liste. Le code ci-dessus vérifie chaque nombre dans la gamme pour la primalité. Le problème est que je dois écrire cette boucle imbriquée comme une compréhension de liste d'une ligne. Le problème que j'ai est que la compréhension de la liste ne passera pas par la deuxième boucle. Il va vérifier avec 2, puis sortir de la boucle.
J'ai essayé cette approche, et il a lamentablement échoué: ([x for x in range(10, 21) for y in range(2, int(x**0.5)) if x%y != 0])
Ils code que vous avez montré n'a pas beaucoup de sens. 'next' est une fonction intégrée que vous pouvez appeler sur un itérateur, ce n'est pas une déclaration car vous semblez l'utiliser ici. Voulez-vous dire «continuer»? C'est une déclaration, même si elle ne va pas continuer la boucle externe dont je pense que votre algorithme a besoin pour fonctionner correctement. Vous pouvez le faire fonctionner en utilisant 'break' dans le' if' et en mettant la ligne 'return' dans un bloc' else' attaché à la boucle interne 'for' (un peu étrange de syntaxe Python). – Blckknght
Pourquoi pensez-vous qu'il "saute" hors de la boucle? La ligne de code que vous présentez ne produira aucune sortie visible. La partie de votre code entre crochets est une compréhension de liste, que vous associeriez généralement à un nom de variable. Ensuite, vous pouvez l'imprimer, par exemple, et alors seulement vous verrez s'il y a quelque chose dedans. –
Pourquoi l'écrivez-vous en tant que liste de compréhension? Vous ne voulez pas de liste vous voulez une seule valeur. – chepner