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
5 Réponses :
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.
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.
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)
Génial, veuillez voter pour / accepter la réponse si cela vous a aidé
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)
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)
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
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.
Les réponses données sont toutes correctes, mais dans votre exemple, vous tapez
quitau lieu deq.@ 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.