清除IPython单元格输出的一部分

时间:2017-03-15 20:10:06

标签: ipython anaconda ipython-notebook jupyter-notebook jupyter

在我为此进行扩充之前,我知道有一些帖子详细说明如何清除单元格中的所有输出,但我只对清除部分输出感兴趣。

让我提供一些背景知识。我正在创建一个像LINGO这样的猜词游戏,提示用户猜测一个五个字母的单词,然后使用CSS提供一些视觉反馈,确定哪些字母位于正确的位置,哪些字母在单词中但是在错误的立场。我的程序结构的方式,它在每​​次猜测后显示反馈,然后再次提示用户并显示猜测。所以像这样:

猜一个字:字

反馈

再次猜测:单词

FEEDBACK ...

你得到了照片。我的目标是尽可能接近复制LINGO,这意味着在提交之后从屏幕上删除用户输入并让它显示一系列反馈。这对我来说意味着三件事之一:

1)找到清除部分输出的方法

2)找到一种方法来提示用户输入文本而不在屏幕上显示

3)缓存用户输入,在每次迭代后删除所有输出,并显示缓存的猜测。

我研究了1和2并且找不到任何东西。 3在我遇到麻烦之前我会问一个PITA。

1 个答案:

答案 0 :(得分:0)

1,认为要么不可能,要么非常困难 - 在常规蟒蛇中很难,更别提Jupyter了。在常规python中,你可能会使用像curses这样的东西,但我在Jupyter中尝试过它会影响Jupyter运行的控制台 - 而不是笔记本中的stdout。

如果你真的想要2,你可以编写自己的input版本,它通过写一个循环监听键击并提交一个换行符的函数来删除尾随换行符后使用回车\r被压了。回车应该意味着下一行会覆盖前一行。

3虽然我认为缓存输入不应该太难吗?只需将它们存储在数组或其他内容中,然后您可以在使用IPython.display.clear_output后将它们显示回用户。