3
votes

Boucle de fin pour une liste ajoutée

J'ai besoin de créer un programme qui demande les noms d'utilisateurs dans une liste ajoutée, puis se termine lorsque l'utilisateur tape "q :. J'ai créé le code pour demander des noms, mais j'ai du mal à le terminer. Ma boucle ne casse pas quand je pense que ça devrait. Il continue de fonctionner

J'ai essayé d'en faire une boucle for et une boucle while et j'ai eu plus de succès avec une boucle while mais je peux me tromper.

Please enter your first name, type q to exit: jon
['Billy', 'Trevor', 'Rachel', 'Victoria', 'Steve', 'jon']
Please enter your first name, type q to exit: quit
['Billy', 'Trevor', 'Rachel', 'Victoria', 'Steve', 'jon', 'quit']

J'attends que les résultats soient:

# names of people that I know
names = ["Billy", "Trevor", "Rachel", "Victoria", "Steve"]
while True:
    names.append(input("Please enter your first name, "
                       "type q to exit: ", ))
    print(names)
    if names == "q":
        break
  • Au lieu de quitter, je veux que le programme se termine.


2 commentaires

Les réponses données sont toutes correctes, mais dans votre exemple, vous tapez quit au lieu de q .


@ thefence2113 Y a-t-il une raison pour laquelle ma réponse n'a pas été acceptée? Il est correct et donne également un choix de 2 approches tout en mettant en évidence le problème. Il a été accepté à l'origine.


5 Réponses :


0
votes

Vous comparez toute la liste, noms à "q" lors de la vérification pour quitter. Au lieu de cela, vous voulez vérifier si l'entrée la plus récente était "q" .

Vous pouvez le faire en vérifiant le dernier élément de la liste, par exemple en changeant votre condition en

if names[-1] == "q"

Le reste du code peut rester le même.


1 commentaires

Cela résoudra le problème du point de rupture mais pas le fait que «q» soit ajouté à la liste. Donc, cela ne résoudra pas le problème.



2
votes

Vous devriez prendre votre entrée dans une autre variable appelée nom et rompre la boucle lorsque vous voyez q. En ce moment, vous ajoutez directement l'entrée à la liste noms

names = ["Billy", "Trevor", "Rachel", "Victoria", "Steve"]
while True:
    name = input("Please enter your first name, "
                       "type q to exit: ", )
    if name == "q":
        break
    names.append(name)
    print(names)


1 commentaires

Génial, veuillez voter pour / accepter la réponse si cela vous a aidé



1
votes

Vous avez la bonne idée. Mais une fois que vous obtenez un nom de input () , vous l'insérez immédiatement dans votre liste avant de vérifier si vous voulez quitter le programme. La solution est donc de vérifier le signal d'arrêt, puis d'ajouter le nom.

# names of people that I know
names = ["Billy", "Trevor", "Rachel", "Victoria", "Steve"]
while True:
    name = input("Please enter your first name, "
                       "type q to exit: ", )
    if name == "q":
        break
    else:
        names.append(name)
print(names)


0 commentaires

1
votes

Le problème est que vous ajoutez déjà à la liste avant de faire votre vérification pour voir si c'est «q» ou non. De plus, à partir de votre question, vous souhaitez quitter uniquement sur «q». Pas «quitter» ou «q». Si vous voulez aussi vérifier "quitter", vous devez l'ajouter à votre condition if .

Faites également cette vérification et ajoutez uniquement si ce n'est pas votre condition de sortie. Donc, je suggère ceci:

names = ["Billy", "Trevor", "Rachel", "Victoria", "Steve"]
while True:
    names.append(input("Please enter your first name, "
                   "type q to exit: ", ))
    print(names) #Printing here will still show you the name 'q' or 'quit'. Move this down too.
    if names[-1] == 'q' or names[-1] == 'quit':
        names.pop() #This will remove the 'q' or 'quit'
        break

Si vous voulez vous en tenir à votre approche, avant de casser, vous voulez supprimer le dernier élément car ce serait un 'q' ou un 'quitter ». Donc:

# names of people that I know
names = ["Billy", "Trevor", "Rachel", "Victoria", "Steve"]
while True:
    name = input("Please enter your first name, type q to exit: ")
    if name == "q" or name == "quit":
        break
    names.append(name)
print(names)


0 commentaires

1
votes

Vous comparez la liste avec la chaîne 'q', qui sera toujours fausse. Vous pouvez modifier

while True:
    inp = input("Please enter your first name, "
                   "type q to exit: ", )
    names.append(inp)
    print(names)
    if inp == "q":
        break


4 commentaires

Cette réponse est incorrecte et fait la même chose que le code de l'OP.


Je vérifie avec q, pas avec le tableau. C'est similaire à votre solution


@ ksholla20 Il ajoute quand même q à la liste des noms.


Oui, vous enregistrez avec q, pas le tableau, mais vous avez déjà ajouté l'entrée «q» aux noms. C'est toujours le problème.