I know that the regular input function can accept single lines, but as soon as you try to write a string paragraph and hit enter for the next line, it terminates. Is there a beginner-friendly way to accept multiline user string inputs as variables?
6 Answers
A common way of doing this in programs is to have an "I'm done" string (e.g. a single period), and to keep reading in lines until the line read matches that string.
print("Enter as many lines of text as you want.")
print("When you're done, enter a single period on a line by itself.")
buffer = []
while True:
print("> ", end="")
line = input()
if line == ".":
break
buffer.append(line)
multiline_string = "\n".join(buffer)
print("You entered...")
print()
print(multiline_string)
Comments
import sys
s = sys.stdin.read()
# print(s) # It will print everything
for line in s.splitlines(): # to read line by line
print(line)
1 Comment
Joe Ferndz
While this may address the issue, you also want to provide a way to get out of the loop. Otherwise, this will be an endless multiline user input.
Line=""
while True:
x=input()
Line=Line+" "+x
if "." in x:
break
print(Line)
1 Comment
Thierry Lathuille
Line=Line+" "+x is inefficient in Python, it's better to use join. Also, this would stop as soon as a line contains a dot, which could appear in many situations (Well... 3.14?). Finally, it removes the newlines between the inputs...