【问题标题】:How to hide something that you have already printed in Python [duplicate]如何隐藏您已经在 Python 中打印的内容 [重复]
【发布时间】:2015-05-25 15:40:35
【问题描述】:

我目前正在制作一个记忆游戏,我打印几个单词,然后在给定时间后将单词打乱,然后删除一个单词并用新单词替换。然后我会让用户回答哪个词被删除了,然后哪个词替换了那个词。例如,它将打印:

CAT DOG MOUSE HORSE

10 秒后,我希望隐藏这些单词,将其打乱并用新单词替换一个单词以便打印,例如:

DOG HORSE RABBIT CAT

我知道我可以使用time.sleep() 让程序暂停任何其他代码的执行。

基本上“取消打印”第一组单词然后打印新单词或替换用新单词替换第一组单词会更容易吗?

【问题讨论】:

  • 你不能。一旦某些东西被打印到控制台上,它就会永远存在。如果你愿意进行简单的 GUI 编程,那么你可以做到。
  • 你可以使用curses(或者一些variant,如果你有Windows)。
  • 在 Windows 上,您可以使用 "\r" 而不是 "\n" sys.stdout.write("...\r" % (variables) sys.stdout.flush( )
  • @Zizouz212 这不是真的。您可以回车到行首并覆盖

标签: python


【解决方案1】:

您需要使用可让您写入屏幕坐标的库。我已经编写了 doscmd-screen 包来执行此操作 (http://doscmd-screen.readthedocs.org/),它的工作方式类似于:

import screen, time
scr = screen.Screen()
scr.writexy(scr.left, scr.top, "CAT DOG MOUSE HORSE")
time.sleep(10)
scr.writexy(scr.left, scr.top, " " * scr.width)

注意:这个包原本只支持dos,现在也支持*nix了。

【讨论】:

  • 谢谢 :-) 大部分繁重的工作都是由 colorama 完成的,我只是添加了从各种系统调用中获取屏幕信息的功能。它的体积很小,对于执行简单的任务来说相当方便。跨度>
  • 看起来很复杂 :) 但谢谢。它实际上是说“没有名为屏幕的模块”我需要下载或安装一些东西吗? (我已经导入屏幕)
  • 是的,您需要遵循文档中的安装说明(链接到我的回答中),基本上是pip install doscmd-screen
  • 你只是在我的代码中输入“pip install doscmd-screen”吗?因为如果是这样,它说“安装”是一个语法错误
【解决方案2】:

如果你在终端上操作,可以使用os.system('clear'),如下:

import os
import time

# first statement
print('CAT DOG MOUSE HORSE')

# wait then clear
time.sleep(10)
os.system('clear')

#second statement
print('DOG HORSE RABBIT CAT')

【讨论】:

    猜你喜欢
    • 2016-06-19
    • 2021-11-04
    • 2023-03-09
    • 1970-01-01
    • 2011-06-16
    • 1970-01-01
    • 1970-01-01
    • 2013-08-19
    • 1970-01-01
    相关资源
    最近更新 更多