2016-02-25 3 views
0

Je souhaite demander à l'utilisateur une liste de phrases encore et encore jusqu'à ce qu'elles saisissent END et enregistrent toutes les entrées de l'utilisateur dans une liste. Comment puis je faire ça?Enregistrement des entrées utilisateur dans une liste en Python 3.5.1

Mon code à ce jour:

print("Please input passwords one-by-one for validation.") 
userPasswords = str(input("Input END after you've entered your last password.", \n)) 
boolean = True 
while not (userPasswords == "END"): 
+7

'(iter (entrée, 'END'))' –

+0

@KevinGuan: Vous cloue. Qui pourrait trouver une solution plus concise? – zondo

+0

@Alex j'ai édité OP avec le code – katherinethegrape

Répondre

2

Une façon de faire est avec un while loop:

phraseList = [] 

phrase = input('Please enter a phrase: ') 

while phrase != 'END': 
    phraseList.append(phrase) 
    phrase = input('Please enter a phrase: ') 

print(phraseList) 

Résultat:

>>> Please enter a phrase: first phrase 
>>> Please enter a phrase: another one 
>>> Please enter a phrase: one more 
>>> Please enter a phrase: END 
>>> ['first phrase', 'another one', 'one more'] 
3

Vous pouvez simplement utiliser iter(input, 'END'), qui retourne une callable_iterator. Ensuite, nous pouvons utiliser list() pour obtenir une réelle liste:

>>> l = list(iter(input, 'END')) 
foo 
bar 
foobar 
END 
>>> l 
['foo', 'bar', 'foobar'] 

A propos de comment ça marche, si vous jetez un oeil à help(iter):

iter(...) 
    iter(iterable) -> iterator 
    iter(callable, sentinel) -> iterator 

    Get an iterator from an object. In the first form, the argument must 
    supply its own iterator, or be a sequence. 
    In the second form, the callable is called until it returns the sentinel. 

Vous pouvez également utiliser un while boucle si vous pensez que c'est plus simple et clair de toute façon:

l = [] 
while True: 
    password = input() 
    if password != 'END': 
     l.append(password) 
    else: 
     break 

Démo:

>>> l = [] 
>>> while True: 
...  password = input() 
...  if password != 'END': 
...   l.append(password) 
...  else: 
...   break 
...   
...  
... 
foo 
bar 
END 
>>> l 
['foo', 'bar'] 
liste
+1

Bonne réponse Kevin! – idjaw