如何让Python控制台支持Shift+Enter提交多行输入而非Enter?
实现Python控制台段落输入(Shift+Enter换行,Enter提交)
默认的input()函数确实无法区分Enter和Shift+Enter,因为终端会把这两个按键都解析为换行符,导致按下Enter就直接提交单行内容。要实现段落输入需求,可以用以下几种方法:
方法1:循环读取多行,连续两次Enter提交
这种方法让用户按Shift+Enter换行输入,输入完最后一行后按两次Enter提交整个段落:
print("输入段落,按两次Enter提交:") lines = [] while True: line = input() if not line: # 空行代表触发提交 break lines.append(line) text = '\n'.join(lines) print("\n你输入的内容是:") print(text)
方法2:读取全部输入直到结束符
利用sys.stdin.read()读取所有输入,直到用户按下系统结束键(Windows按Ctrl+Z,Linux/macOS按Ctrl+D):
import sys print("输入段落,按Ctrl+Z(Windows)或Ctrl+D(Linux/macOS)提交:") text = sys.stdin.read() print("\n你输入的内容是:") print(text)
注意事项
- 终端对Shift+Enter的解析因系统和终端程序不同有差异,部分终端中Shift+Enter和Enter行为完全一致,此时只能通过上述方法间接实现段落输入。
- 若使用Jupyter Notebook或IPython这类交互式环境,默认就支持Shift+Enter换行、Enter执行代码,无需额外处理。
内容的提问来源于stack exchange,提问作者ShyMike
相关产品推荐
相关产品推荐

