📜  多行输入python(1)

📅  最后修改于: 2023-12-03 15:23:43.577000             🧑  作者: Mango

多行输入Python

在Python中,我们经常需要从用户那里获取多行输入。这种情况可能需要从用户那里读取一篇文章,或者是一个代码块。

Python提供了多种方法来获取多行输入,下面我们一一介绍这些方法。

方法一:使用for循环

这是一种最简单的方法,只需要写一个for循环来不停地读取输入,直到用户输入空行为止。代码如下:

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

输出:

This is a multi-line input.
This is the second line.
And this is the third and final line.
方法二:使用sys.stdin

另一种获取多行输入的方法是使用sys.stdin。这种方法需要导入sys模块,然后使用sys.stdin.readlines()方法。注意,在使用这种方法之前,您需要告诉Python您已经完成了输入,这可以通过按Ctrl-D(在Windows上是Ctrl-Z)来完成。代码如下:

import sys
lines = sys.stdin.readlines()
text = '\n'.join(lines)
print(text)

输出:

This is a multi-line input.
This is the second line.
And this is the third and final line.
方法三:使用textwrap.dedent

如果您打算从用户那里获取一个代码块,并且想要自动去除缩进(即优化输入格式),则可以使用textwrap.dedent()方法。这种方法无需循环输入,直接读取所有的输入内容即可。代码如下:

import textwrap
code_block = textwrap.dedent('''\
    def func(x):
        if x % 2 == 0:
            return "Even"
        else:
            return "Odd"
    ''')
print(code_block)

输出:

def func(x):
    if x % 2 == 0:
        return "Even"
    else:
        return "Odd"
方法四:使用递归函数

最后一种获取多行输入的方法是使用递归函数。这种方法类似于第一种方法,但它使用递归函数来不停地读取输入,而不是使用循环。代码如下:

def multiline_input():
    line = input()
    if line:
        return [line] + multiline_input()
    else:
        return []

lines = multiline_input()
text = '\n'.join(lines)
print(text)

输出:

This is a multi-line input.
This is the second line.
And this is the third and final line.

以上就是Python中获取多行输入的所有方法。希望这些方法能够帮助您处理多行输入的问题。