0
votes

Python: retourne une liste

J'ai regardé quelques réponses pour une fonction et le retour et je ne suis pas sûr de l'obtenir. Je reçois le retour termine une fonction. Le mien ne renvoie qu'une ligne lorsqu'il y en a plusieurs dans le fichier TXT.

        if command == "see":
            readChamps = readList(champs)
            print(readChamps)


2 commentaires

Comprenez-vous comment créer une liste? Comprenez-vous comment mettre des valeurs dans une liste? Vous devez avoir une liste avec les valeurs correctes pour revenir, avant de pouvoir le retourner.


J'ai ma liste créée dans: `` `nomame =" Champs.txt "Def Writeotextfile (Champs): Avec Open (Nom de fichier," A ") Comme Fichier: Pour Champ à Champs: Fichier.Write (Champ +" \ N " ) `` `Il détient actuellement la liste qui se trouve dans le résultat souhaité sur le poste d'origine.


4 Réponses :


2
votes

Vous avez retour à l'intérieur de votre boucle, ce qui provoque la sortie de la fonction dans la première itération de la boucle.

Si vous souhaitez simplement imprimer les lignes, vous pouvez procéder comme suit: < / p> xxx

et dans votre principal : xxx

si vous souhaitez renvoyer des valeurs de Readlist , vous devez le faire après avoir terminé votre boucle: xxx


3 commentaires

Rrint au lieu de retour fonctionne définitivement comme je le veux. Cependant, je veux toujours régler la façon de retourner à la place. Merci.


@Genoxidus j'ai mis à jour ma solution. Cela a-t-il un sens pour vous?


Ces changements ont perfectionné mon résultat souhaité. Si Command == "Voir": Readchamps = ReadlistFromTextFile (Champs) #Print (Readchamps) pour I in Readchamps: Imprimer (i)



1
votes

Essayez ceci: -

def readlist(champs):
    champs = [str(i+93) + "-" + champs[i] for i in range(len(champs))]
    return champs


1 commentaires

Merci. Cela rend mon champ de terre non défini.



2
votes

Comme vous vous écrivez, retour termine la fonction d'où la boucle exécute exactement une fois.

Vous pouvez utiliser une compréhension de la liste et énumérer : xxx

alternativement, créez un Liste, .append et le renvoyer à la fin: xxx


0 commentaires

0
votes

Si vous souhaitez "retourner" une valeur sans terminer la fonction, vous pouvez utiliser produire code> au lieu de retour code>. Cela rend le résultat un itérateur de valeurs au lieu d'une valeur unique.

def read_list(champs):
    for i, champ in enumerate(champs, 93)):
        yield f'{i} - {champ}'


0 commentaires