web-dev-qa-db-fra.com

Comment obtenir une entrée multiligne de l'utilisateur

Je veux écrire un programme qui accepte plusieurs lignes et le manipule ligne par ligne. Pourquoi n'y a-t-il pas de fonction comme raw_input dans Python 3?

input n'autorise pas l'utilisateur à mettre des lignes séparées par une nouvelle ligne (Enter), il n’imprime que la première ligne.

Peut-il être stocké dans une variable ou même lu dans une liste?

15
MaciejPL

Dans Python 3.x, la raw_input() de Python 2.xa été remplacée par la fonction input(). Cependant, dans les deux cas, vous ne pouvez pas saisir de chaînes multilignes. Pour cela, vous devez obtenir les entrées ligne par ligne de l'utilisateur, puis .join() à l'aide de \n, ou vous pouvez également prendre différentes lignes et les concaténer à l'aide de l'opérateur + séparé par \n

Pour obtenir une saisie multi-lignes de l'utilisateur, vous pouvez utiliser:

no_of_lines = 5
lines = ""
for i in xrange(5):
    lines+=input()+"\n"

print lines

Ou

lines = []
while True:
    line = input()
    if line:
        lines.append(line)
    else:
        break
text = '\n'.join(lines)
22
ZdaR

raw_input peut gérer correctement l'EOF, nous pouvons donc écrire une boucle, à lire jusqu'à ce que nous ayons reçu un EOF (Ctrl-D) de l'utilisateur:

Python 3

print("Enter/Paste your content. Ctrl-D or Ctrl-Z ( windows ) to save it.")
contents = []
while True:
    try:
        line = input()
    except EOFError:
        break
    contents.append(line)

Python 2

print "Enter/Paste your content. Ctrl-D or Ctrl-Z ( windows ) to save it."
contents = []
while True:
    try:
        line = raw_input("")
    except EOFError:
        break
    contents.append(line)
26
xiaket

input(Prompt) est fondamentalement équivalent à

def input(Prompt):
    print(Prompt, end='', file=sys.stderr)
    return sys.stdin.readline()

Vous pouvez lire directement à partir de sys.stdin si vous le souhaitez. 

lines = sys.stdin.readlines()

lines = [line for line in sys.stdin]

five_lines = list(itertools.islice(sys.stdin, 5))

Les deux premiers nécessitent que l’entrée se termine d’une manière ou d’une autre, soit en atteignant la fin du fichier, soit en tapant Ctrl-D (ou Control-Z sous Windows) pour signaler la fin. Le dernier reviendra après que cinq lignes aient été lues, que ce soit depuis un fichier ou depuis le terminal/clavier.

3
chepner
no_of_lines = 5
lines = ""
for i in xrange(5):
    lines+=input()+"\n"
    a=raw_input("if u want to continue (Y/n)")
    ""
    if(a=='y'):
        continue
    else:
        break
    print lines
0
mohankumar.A

Utilisez la fonction intégrée input() pour obtenir une ligne de saisie de l'utilisateur.

Vous pouvez lire l'aide ici .

Vous pouvez utiliser le code suivant pour obtenir plusieurs lignes à la fois (terminant par une ligne vide):

while input() != '':
    do_thing
0
maggick