不移动光标的转义字符

2024-04-27 00:38:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个函数,一次打印一个字符的文本。函数在打印出下一个字符之前等待.01秒,这给了它一种流畅的感觉。对于句号、逗号之类的字符,我也有稍微长一点的停顿,基本上是任何如果把句子大声说出来会导致说话中断的东西。你知道吗

我正试着写一个游戏的介绍,我想在每一段结束时暂停5秒钟。我的第一个想法是使用'\n',但由于一些格式问题,结果是灾难性的(任何时候在文本块中使用enter都会等待5秒钟)。我尝试使用'\r'和'\v',但我不喜欢它移动光标的方式(要么在行首,要么在中间)。你知道吗

我想知道是否有一个转义字符,我可以使用它不移动光标,也不打印任何东西?如果没有,我能自己做吗?你知道吗

以下是用于打印文本的代码:

def slowText(text, length):
    for c in text:
        sys.stdout.write( '%s' % c )
        sys.stdout.flush()

        if c == '.' or c == '!' or c == '?' or c == ';' or c == ':':
            time.sleep(.5)
        elif c == ',':
            time.sleep(.2)
        elif c == '\r':
            time.sleep(5)
        else:
            time.sleep(length)
    print "\n"

谢谢你的帮助!你知道吗


Tags: or函数text文本timestdoutsyssleep
1条回答
网友
1楼 · 发布于 2024-04-27 00:38:36

您可以使用任何您想用于此目的的字符;关键是不要将该字符打印到屏幕上,因为您只使用它来划分段落。您可能希望重新组织代码,使其看起来像这样:

PAR_SEP = '\r'

def slowText(text, length):
    for c in text:
        # Only print c if it is not the paragraph delimiter/separator
        if c != PAR_SEP:
            sys.stdout.write( '%s' % c )
            sys.stdout.flush()

        if c == '.' or c == '!' or c == '?' or c == ';' or c == ':':
            time.sleep(.5)
        elif c == ',':
            time.sleep(.2)
        elif c == PAR_SEP:
            time.sleep(5)
        else:
            time.sleep(length)
    print "\n"

“\r”和“\v”弄乱光标位置的唯一原因是代码将这些字符打印到屏幕上。一旦你加入这个快速检查,它应该表现出你想要的方式。你知道吗

相关问题 更多 >