3

我正在编写一个涉及数据库的 Python 应用程序。对于它的地狱,我包括一个复活节彩蛋。如果用户决定核对他的数据库,所有这一切都来自终端,他将被提示用一个简单的 (y/n) 进行确认。但是,如果他改为键入 DLG2209TVX,则会打印出 WarGames 场景中的台词。除非他们查看我的来源,否则怀疑任何人都会找到它,但这没关系。

问题是简单地打印线条太快地播放场景,真的只是毁了它。我在每个角色的台词之间设置了一个计时器来减慢速度,效果更好,但仍然看起来不自然。有没有一种标准化的方法来慢慢打印每个单词或字符,而不是一次打印一行?还是我应该开始在单词之间添加计时器?

4

3 回答 3

4

标准化?从来没听说过。但是试试这个:

import random
import sys
import time

def slowprint(s):
    for c in s + '\n':
        sys.stdout.write(c)
        sys.stdout.flush() # defeat buffering
        time.sleep(random.random() * 0.1)

slowprint('Hello, world.')

调整0.1以更改字符之间的最大延迟,并在行time.sleep()间添加 long s 以增加更戏剧性的效果。

于 2013-03-13T01:25:19.650 回答
1
import sys
import time
for c in gettysburg_address:
  sys.stdout.write(c)
  sys.stdout.flush()
  # 110 baud:
  time.sleep( 8./110 )
  # 300 baud:
  #  time.sleep( 8./300 )
于 2013-03-13T01:28:58.900 回答
1

您也可以尝试curses.delay_output()

In [48]: import curses

In [49]: for x in "foo bar":
    sys.stdout.write(x)     #prints each char with a delay of 100ms
    curses.delay_output(100)
   ....:     
foo bar
于 2013-03-13T01:40:21.580 回答