Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何捕获Ctrl+;D当您已在原始输入中键入soemthing,但尚未按enter键时?_Python_Raw Input - Fatal编程技术网

Python 如何捕获Ctrl+;D当您已在原始输入中键入soemthing,但尚未按enter键时?

Python 如何捕获Ctrl+;D当您已在原始输入中键入soemthing,但尚未按enter键时?,python,raw-input,Python,Raw Input,我想为原始输入支持多行输入,以下代码中的ctrl+d仅在我位于空(新)行时有效 当前行为: 当用户键入xyz时,再次按enter键以获取新行,然后按ctrl+d 当用户键入xyz,然后按ctrl+d四次,前三次无效,第四次退出功能 预期行为: 当用户键入xyz时,按ctrl+d退出该函数(无需在空行上) def多行输入(提示=“”): 内容=[] 打印('ctrl+d以退出') i=0 尽管如此: 尝试: 如果我: 行=原始输入() 其他: 行=原始输入(提示) i+=1 除EOFErro

我想为
原始输入
支持多行输入,以下代码中的ctrl+d仅在我位于空(新)行时有效

当前行为:

  • 当用户键入
    xyz
    时,再次按enter键以获取新行,然后按ctrl+d
  • 当用户键入
    xyz
    ,然后按ctrl+d四次,前三次无效,第四次退出功能
预期行为:

当用户键入
xyz
时,按ctrl+d退出该函数(无需在空行上)


def多行输入(提示=“”):
内容=[]
打印('ctrl+d以退出')
i=0
尽管如此:
尝试:
如果我:
行=原始输入()
其他:
行=原始输入(提示)
i+=1
除EOFError外:
打破
contents.append(行)
返回'\n'.join(contents).strip()
x=多行输入(“请输入文本>>”)
打印('用户输入:',x)

“当前行为是,键入xyz,然后再次按enter键以获得新行,然后按ctrl+d。”这不是代码的行为,而是用户的行为!如果键入
xyz
然后键入Ctrl-D,会发生什么情况?这回答了你的问题?@ranifisch没有,对我来说,我必须按4次而不是2次。这可能是终端相关的行为,因为正是你的终端截取Control-D并将其解释为关闭标准输入的请求,而不是生成标准输入中出现的字符。