0
votes

Pourquoi je n'ai pas le même résultat? Le code deux est-il désigné les mêmes choses?

Pourquoi n'ai-je pas le même résultat? Les deux codes ne désignent-ils pas les mêmes choses?

version 1 xxx

version 2 xxx


3 commentaires

Qu'avez-vous de la version 1 et de la version 2? Nous devons savoir comment ils sont différents pour répondre.


La réponse simple car votre fonction frappe une commande de retour , il sort de la fonction. La version 1 indique à votre fonction de quitter la 1ère itération, tandis que la version 2 indique à votre fonction de revenir après avoir collecté toutes les valeurs.


Vous pouvez voir que la version 2 renvoie un dictionnaire pendant que la version 1 n'a aucun dictionnaire du tout. Comment pouvez-vous vous attendre à ce que ces codes fournissent le même résultat?


4 Réponses :


1
votes

Dans le premier extrait, vous revenez de intérieur le de pour la boucle, la terminaison prématuré et renvoie une chaîne formatée avec i = 0.

Dans le deuxième extrait, vous accumulez les résultats à un dictionnaire et renvoyez le dictionnaire qu'après la fin de la boucle.


0 commentaires

0
votes

Non, ce n'est pas la même chose, dans le premier code, la valeur sera renvoyée sur la première itération elle-même.

tandis que dans le deuxième code, toutes les valeurs sont agrégées, puis retournées.


0 commentaires

0
votes

Pour savoir pourquoi cela ne fonctionne pas, vous devez connaître le fait que retour arrête pour boucle ou n'importe quel type de boucle.

Donc, dans votre premier cas, le retour s'arrête sur la première itération I = 0 et retournera 0: 0.

Dans votre deuxième cas, vous stockez vos valeurs dans la valeur de la variable et en faisant cela lorsque vous retournerez de la valeur, vous retournerez ensemble ensemble que pour la boucle passée de 0 à 10.


0 commentaires

0
votes

Le problème est donc que n'importe quelle boucle se termine lorsqu'il trouve le mot clé de retour, si vous souhaitez faire la même chose sur une ligne, vous devez utiliser la compréhension dict:

def fun(arg):
    return {i: i**3 for i in range(0, arg+1)}


0 commentaires