2012-11-17 6 views
0

Je suis novice en programmation/Python. J'essaye de créer une fonction qui ajoutera un mot à une liste. J'ai essayé d'utiliser une boucle while pour ajouter demander si l'utilisateur veut ajouter un autre mot. Si l'utilisateur saisit «y» ou «Y», je souhaite réexécuter la fonction. Si l'utilisateur entre autre chose, je veux que la fonction retourne la liste. Lorsque j'exécute la fonction, elle continue d'exécuter la fonction, quelle que soit l'entrée. S'il vous plaît aider. MerciBesoin d'aide pour créer une fonction et appeler une fonction dans une fonction

def add_list(): 
    x = [] 
    first_list = raw_input('Please input a word to add to a list ') 
    x.append(first_list) 
    response = raw_input('Would you like to enter another word ') 
    while response == 'y' or 'Y': 
     add_list() 
    else: 
     return x 

Répondre

4
while response == 'y' or 'Y': 

devrait-elle être

while response == 'y' or response == 'Y': 

ou mieux encore:

while response in ('y', 'Y'): 

Voici pourquoi ce que vous avez ne fonctionne pas. Chaque ligne ci-dessous est équivalente.

while response == 'y' or 'Y' 
while (response == 'y') or ('Y') 
while (response == 'y') or True 
while True 
+0

+1 pour me faire supprimer ma réponse. ;) –

+0

+1 pour améliorer ma réponse –

+0

Merci pour la réponse. J'ai révisé la partie while à ce que vous avez suggéré et je ne fonctionne toujours pas correctement. Il continue de faire une boucle si j'introduis autre chose que 'y' ou 'Y'. Est-ce que je manque quelque chose? – user1816629

1

Il suffit de faire la liste un paramètre que vous passez à la fonction:

x = [] 
add_list(x) 

Avec add_list (x)

def add_list(x): 
    first_list = raw_input('Please input a word to add to a list ') 
    x.append(first_list) 
    response = raw_input('Would you like to enter another word ') 
    while response in ('y', 'Y'): 
    add_list(x) 
    else: 
    return 
+0

Je ne pense pas que ce soit le problème OP mentionné. –

+0

Vous êtes sur la partie boucle infinie mais son retour actuel est toujours un problème auquel il sera confronté une fois qu'il aura résolu la boucle infinie. Modifié la condition de boucle en fonction de la réponse d'Eric. –

Questions connexes