0
votes

Je veux imprimer le carré de chaque numéro sur une ligne séparée

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

5 commentaires

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 le résultat au lieu de retour 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)


4 Réponses :


1
votes

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!")


4 commentaires

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 renvoie Aucun (chaque fonction qui ne fonctionne pas explicitement une valeur ne fonctionne pas), donc A est Aucun . Il suffit d'imprimer a .


@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 , la valeur qu'il renvoie est aucun . Fondamentalement, imaginez toutes les fonctions ayant une ligne Renvoyer aucun à la fin: si cela ne renvoie rien d'autre, il retournera Aucun .



1
votes

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')


0 commentaires

0
votes

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 --->: xxx

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.

A également été mentionné par un commentaire plus tôt, vous pouvez ajouter le résultat dans une liste: xxx

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:

  1. Terminez l'exécution d'une boucle
  2. Renvoie une valeur, des données..basiquement quelque chose que vous pouvez alors stocker dans une variable (si vous ne le faites pas, la fonction n'entraînerait aucune)

0 commentaires

1
votes

Si vous souhaitez imprimer la valeur en ligne séparée, utilisez simple utilisation simple imprimer (Square_non (n), '\ n') et ajoutez '\ n' qui va créer une nouvelle ligne.

voici le code xxx


0 commentaires