2017-03-15 56 views
0

在我爲這個擴展之前,我知道有些帖子詳細說明了如何清除單元格中的所有輸出,但我只想清除它的一部分。清除IPython單元格輸出的一部分

讓我提供一些背景知識。我正在創建一個像LINGO這樣的猜字遊戲,其中提示用戶猜測一個五個字母的單詞,然後使用CSS提供一些關於哪些字母處於正確位置的視覺反饋,以及哪些字母在單詞中,但是在錯誤的位置。我的程序結構化的方式是,它在每次猜測後顯示反饋,然後再次提示用戶並顯示猜測。因此,像這樣:

猜一個字:字

反饋再次

猜測:字

反饋 ...

你得到的圖片。我的目標是儘可能地複製LINGO,這意味着在用戶輸入提交併顯示一系列反饋後,將屏幕上的用戶輸入刪除。這對我來說意味着三件事情之一:

1)找到一個方法來清除輸出

2)的一部分,找到一個方法來提示進行文字輸入的用戶,而不在屏幕上顯示它

3)緩存用戶輸入,每次迭代後刪除所有輸出,並顯示緩存的猜測。

我研究了1和2,但一直未能找到任何東西。 3會是PITA,所以在我遇到麻煩之前,我想我會問。

回答

0

1想想要麼是不可能的,要麼是非常困難的 - 在普通的python中很難,不用擔心Jupyter。在普通的python中,你可能會使用像curses之類的東西,但是我在Jupyter中嘗試過它,並且它影響Jupyter運行的控制檯 - 而不是筆記本中的stdout。

如果你真的想要2,你可以編寫自己的input版本,通過編寫一個循環監聽按鍵並按下一個換行符後提交的函數,剝離尾隨換行符後使用回車\r。回車應該表示下一行覆蓋前一行。

3緩存輸入不應該太困難,但我認爲?只需將它們存儲在數組中或其他東西中,然後在使用IPython.display.clear_output後可以將它們顯示給用戶。