def square_non (n): for x in range(0,21): if x < n: return (x*x) else: return "Please try again!" Tried to debug but I don't comprehend why the for-loop isn't continuing.Update: Just used list-comprehension and generators, which made the whole thing easy
4 Réponses :
Si vous souhaitez imprimer les valeurs, vous ne devez pas les renvoyer mais imprimer-les.
def square_non (n): for x in range(0,21): if x < n: print(x*x) else: print("Please try again!")
La chose est que je ne reçois pas aussi "aucun" imprimé dans la sortie, ce que je devine est à cause de "pause", tout changement que je pouvais faire là-bas?
Non, c'est parce que square_non code> renvoie
Aucun code> (chaque fonction qui ne fonctionne pas explicitement une valeur ne fonctionne pas), donc
A code> est
Aucun code >. Il suffit d'imprimer
a code>.
@Jasmijn Pourriez-vous s'il vous plaît expliquer un peu plus sur la partie autre?
Je ne sais pas ce qu'il y a à expliquer. Chaque fonction renvoie une valeur. Si une fonction revient en «chute» du bas plutôt que de traverser un retour explicite X code>, la valeur qu'il renvoie est
aucun code>. Fondamentalement, imaginez toutes les fonctions ayant une ligne
Renvoyer aucun code> à la fin: si cela ne renvoie rien d'autre, il retournera
Aucun code>.
Le retour mettra fin à l'exécution de la boucle et retournera le contrôle à la fonction d'appel. Donc, la meilleure façon est d'obtenir toutes les valeurs en tableau et de le renvoyer.
Essayez ce code: P>
def square_non (n): squares = [] for x in range(0,21): if x < n: squares.append(x*x) else: return squares def calling_function(): #Function from which it get called squares = square_non(10) #Assume 10 for example for square in squares: print(str(square) + '\n')
Comme ils l'ont mentionné dans les commentaires déjà, le problème est le retour, car une boucle dès qu'il frappe un retour, il le terminera.
La solution la plus simple pour votre code serait ceci --->: p> Comme vous pouvez le voir, j'utilise le retour après l'instruction "sinon" exactement pour la raison pour laquelle votre code était faux, de mettre fin au code. P> A également été mentionné par un commentaire plus tôt, vous pouvez ajouter le résultat dans une liste: p> de sorte que la liste est stockée maintenant dans x et vous pouvez l'utiliser. J'ai mentionné cela parce que c'est un excellent moyen de comprendre quel retour fait: p>
Si vous souhaitez imprimer la valeur en ligne séparée, utilisez simple utilisation simple voici le code p>
blockQuote> imprimer (Square_non (n), '\ n') code> et ajoutez
'\ n' code> qui va créer une nouvelle ligne.
Le retour mettra fin à votre fonction directement.
Utilisez Imprimer () au lieu de revenir ou appendez tous les «X» dans une liste et renvoyer la liste
rendement code> le résultat au lieu de
retour code> ing
@jizhihaosama J'avais initialement essayé d'appeler la fonction et de l'imprimer de cette manière, donc j'ai utilisé le retour.
Salut les gars! Merci beaucoup pour votre aide!! Donc, j'ai décidé d'utiliser des générateurs et de me débrouiller avec IT XD
def Square_non (N): pour I In N: Rendement (I * I) A = Square_non ([1,2,3,4]) pour NUM dans un: impression (num) code>