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?
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)
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:
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)
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)
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.
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
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