Python 2.7延迟逐字延迟

时间:2016-02-23 01:25:47

标签: python

import sys
import time
from random import randrange

words = ''' this is a cool delay typing program,
right now it print string by string.

I need to know how to make it print a word by word.'''

for i in words:
    sys.stdout.write(i)
    sys.stdout.flush()
    seconds = ".8" + str(randrange(1,5,2))
    seconds = float(seconds)
    time.sleep(seconds)

2 个答案:

答案 0 :(得分:0)

通过将字符串设为列表,然后在迭代中打印每个单词时添加空格,可以简化生活。像这样:

当你在迭代单词时,只需使用new_connection->get_subscriber_list使其成为一个列表。然后在split内,只需在每个单词后添加一个空格。

您的代码中进行的修改。这应该有效:

stdout.write

答案 1 :(得分:0)

idjaw的答案中的代码是直截了当的方法,但是它将每个空格序列转换为单个空格。我的代码保留了原始的空白字符,即源字符串中的多个空格的任何序列都按原样打印,以及换行和制表符等内容。

使用标准str方法适当地拆分源字符串有点乱,所以我使用了re模块。

import sys
from time import sleep
import re

words = ''' This is a cool delay typing program.
It used to print character by character...

But now it prints word by word. '''    

def delay_typer(words, delay=0.8, stream=sys.stdout):
    tokens = re.findall(r'\s*\S+\s*', words)
    for s in tokens:
        stream.write(s)
        stream.flush()
        sleep(delay)

delay_typer(words)
delay_typer('I hope\nyou\tlike it. :)\n', 0.2)

我放弃了随机的东西:我认为添加1或3百分之一秒的随机延迟并不重要。