2013-03-13 124 views
3

我正在写一个涉及数据库的Python应用程序。对于它的地狱,我包括一个复活节彩蛋。如果用户决定核实他的数据库,所有这些来自终端,他会被提示用简单的(y/n)进行确认。但是如果他改为输入DLG2209TVX,那么WarGames的这一行将会打印出来。怀疑有人会发现它,除非他们通过我的来源看,但没关系。在Python中逐字逐字打印终端打印?

问题是,简单地打印线条播放场景的方式太快,真的只是毁了它。我在每个角色的线条之间实施了一个计时器来减慢速度,这样会更好,但它看起来还不自然。是否有一种标准化的方式来逐一打印每个单词或字符,而不是一次一行地进行打印?或者我应该开始在单词之间添加计时器?

+1

您是否尝试过'time.sleep()'? '睡眠(秒):延迟执行给定的秒数。参数可能是 是亚秒级精度的浮点数.' – 2013-03-13 01:23:51

+1

他们不必读取源代码,他们只需要遇到这个stackoverflow问题! :-) – Celada 2013-03-13 01:27:00

+0

相关:['curl -L cueup.com/jobs'](http://tech.cueup.com/blog/2013/03/06/how-our-terminal-friendly-jobs-page-works /)(展示慢速打印) – jfs 2013-03-13 03:30:21

回答

3

标准化?从来没听说过。不过,试试这个:

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() s到添加更多戏剧性的效果。

+0

你真棒。谢谢 – 2013-03-13 01:33:29

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) 
+0

muchas gracias,作品像魅力 – 2013-03-13 01:39:47

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 
+1

aha,这就是我的意思是标准化。谢谢 – 2013-03-13 02:00:37