Ich möchte ein Programm schreiben, das mehrzeilige Eingaben erhält und zeilenweise damit arbeitet. Warum gibt es in Python 3 keine Funktion wie raw_input
?
input
erlaubt es dem Benutzer nicht, durch Zeilenvorschub getrennte Zeilen zu setzen (Enter) wird nur die erste Zeile ausgegeben.
Kann es in Variablen gespeichert oder sogar in einer Liste gelesen werden?
In Python 3.x wurde raw_input()
von Python 2.x durch die Funktion input()
ersetzt. In beiden Fällen können Sie jedoch keine mehrzeiligen Zeichenfolgen eingeben. Zu diesem Zweck müssen Sie die Eingabe Zeile für Zeile von dem Benutzer abrufen und dann .join()
mit \n
verwenden. Alternativ können Sie auch verschiedene Zeilen verwenden und sie mit dem +
-Operator getrennt voneinander trennen \n
Um mehrzeilige Eingaben vom Benutzer zu erhalten, können Sie wie folgt vorgehen:
no_of_lines = 5
lines = ""
for i in xrange(5):
lines+=input()+"\n"
print lines
Oder
lines = []
while True:
line = input()
if line:
lines.append(line)
else:
break
text = '\n'.join(lines)
raw_input
kann die EOF korrekt verarbeiten, sodass wir eine Schleife schreiben und lesen können, bis wir vom Benutzer eine EOF (Strg-D) erhalten:
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)
ist im Grunde gleichbedeutend mit
def input(Prompt):
print(Prompt, end='', file=sys.stderr)
return sys.stdin.readline()
Sie können direkt aus sys.stdin
lesen, wenn Sie möchten.
lines = sys.stdin.readlines()
lines = [line for line in sys.stdin]
five_lines = list(itertools.islice(sys.stdin, 5))
Die ersten beiden erfordern, dass die Eingabe irgendwie endet, indem entweder das Ende einer Datei erreicht wird oder der Benutzer Control-D (oder Control-Z in Windows) eingibt, um das Ende zu signalisieren. Die letzte Zeile wird zurückgegeben, nachdem fünf Zeilen gelesen wurden, entweder von einer Datei oder vom Terminal/der Tastatur.
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
Verwenden Sie die integrierte Funktion input()
, um eine Eingabezeile vom Benutzer abzurufen.
Sie können die Hilfe hier lesen .
Sie können den folgenden Code verwenden, um mehrere Zeilen auf einmal zu erhalten (durch eine leere Zeile zu beenden):
while input() != '':
do_thing