2016-09-23 38 views
1

我试图做的是Python动画文本funtion只工作了某些字符串

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”函数能够处理不仅仅是普通字符串的语句?

- 奥利Ë

回答

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类型。这会让你的代码难以阅读,也会导致微妙的错误。