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)
答案 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百分之一秒的随机延迟并不重要。