使用Python更新以前打印的行(在CLI中)?

时间:2016-12-01 00:30:07

标签: python python-2.7 command-line-interface

我正在使用Python开发一个命令行游戏,我想实现一个为玩家提供时间限制的功能。基本上我想要做的是更新第一行(打印后)来自:

    "5.."
    "5 + 3 = ?"

到:

   "5..4..3..2..1..Lost"
   "5 + 3 = ?"

5秒后

    print "5..3..2..1..Lost"
    print "5 + 3 = ?"

2 个答案:

答案 0 :(得分:2)

print(num, end='\r')

end=关键字就是这样的原因,print()以换行符\n结尾,但这可以替换为任何字符串,例如以回车符结束行而不是返回光标到当前行的开头。您将需要from __future__ import print_function使用python2.7

对于同时接收输入,您需要使用threading模块并在线程中打印更新计数器

import time
from _thread import *
def printcount(secs):
    i=5
    while i != 0:
        print(i, end='\r')
        i -= 1
        time.sleep(secs)

start_new_thread(printcount, (1))

答案 1 :(得分:0)

如果您正在开发游戏,则需要完全控制控制台输出,而不仅仅是当前行。你需要类似Python的内置curses模块。

看看我使用curses创建的this little game,它会在整个屏幕上修改控制台输出,这样可能会有所帮助。