2016-02-26 83 views
0

在IDLE中,沒有清晰的屏幕,在閱讀論壇後,最好的方法顯然是打印大量的「\ n」。然而,在玩了IDLE之後,我發現了一個問題。當我的遊戲在使用打印語句打印出指令後等待輸入時,我輸入'control-z',而不是輸入任何有用的字符,而IDLE開始逐個刪除由打印語句顯示的文本。控制 - Z在Python代碼

我的主要問題是,我該如何在代碼本身手動輸入'control-z',所以我可以利用這個功能?

如果您對我的故事感到困惑,請參閱以下示例代碼,並通過點擊control-z自己嘗試。

print("Some Text") 
print("More Text") 
input("The Input (Hit Control - Z Here):") 

回答

1

^Z有點亂。 ascii控件char^D通常被解釋爲EOT,傳輸結束,在Unix和許多其他系統上意味着文件結束,關閉應用程序。 Ascii^Z旨在被解釋爲SUB,替代,無論如何。編輯使用它作爲UNDO(意味着撤消^ X切)。微軟(和其他一些老系統)至少有時會將^ Z解釋爲文件結尾,與* nix上的^ D具有相同的效果。

Windows控制檯在^ Z後關閉文本應用程序。^D傳遞給應用程序。作爲跨平臺的應用程序,IDLE在^ D關閉。 IDLE用於在Windows上關閉^ Z,但現在對我來說,它只會刪除提示。 (我不知道這個替代方案是否有用。)我沒有看到您報告的漸進式刪除。你運行什麼操作系統和Python版本?

要回答你的主要問題:你不能。 input通常用於賦值語句:string = input('prompt')。模仿輸入語句的方法是直接分配'用戶輸入':s = 'simulated user input'。但是,對於被管理輸入窗口的程序攔截並且從未發送給python程序的字符,這不起作用。

IDLE的Shell通常模仿Python的交互式控制檯。後者(至少在Windows上)使除當前輸入以外的所有內容都成爲只讀。殼牌遵循套件。在執行用戶代碼方面,模仿特別嚴格。它的目的是在IDLE中測試的用戶代碼應該在沒有IDLE的情況下以Python運行。 IDLE在Python無法響應用戶代碼時清除交互式shell是錯誤的。

對於編輯器和輸出窗口,^ A(全部選中),然後是退格鍵(刪除),刪除或^ X(剪切)清除窗口。

然而,Shell的編輯命令比許多(大多數?)控制檯和菜單系統多。這些補充是允許的,因爲它們只是交互式的,不能從用戶代碼訪問。已經有各種建議和補丁來清除部分或全部的shell窗口。 https://bugs.python.org/issue6143有一些討論和建議。