动画文字功能仅适用于某些字符串

时间:2016-09-23 11:17:42

标签: python function variables

我正在尝试创建一个在Python中显示动画文本的函数

import sys
def anitext(str):
    for char in str:
            sys.stdout.write(char)
            time.sleep(textspeed)
    print ("")

此功能适用于

等字符串
anitext ("String")

对于唯一的变量,如

name = ("Stack")
anitext (name)

但不适用于输入语句或连接语句,如

anitext (name, "This is a string")

这个“Anitext”函数有没有办法处理不仅仅是普通字符串的语句?

- Olli E

1 个答案:

答案 0 :(得分:1)

你只需要使用参数解包。请参阅官方Python教程中的Arbitrary Argument Lists

import sys
import time

textspeed = 0.2

def anitext(*args):
    for s in args:
        for char in s:
            sys.stdout.write(char)
            sys.stdout.flush()
            time.sleep(textspeed)
        print("")

anitext("String", "Another string", "More stuff")

我对您的脚本进行了其他一些更改。 sys.stdout.flush()调用确保实际上一次打印一个字符;大多数终端都会缓冲整行文本,所以你实际上看不到动画的发生。

另外,我使用s作为当前动画字符串的名称。您不应该使用str作为变量名称,因为它会影响内置str类型。这使得您的代码难以阅读,也可能导致细微的错误。