2016-04-27 60 views
1

因此,我一直在试图制作一个小程序,向用户询问各种问题并根据输入提供分支输出,并且我一直试图使打印文本一次显示在屏幕上,每个角色之间的短暂延迟,但在同一行上。我见过其他各种方法,如如何让Python在同一行上一次打印一个字符?

print "H", 
print "e", 

等,但这是非常耗时,需要我输出每个字母的打印。我已经看到了关于这个主题的其他问题,并尝试了其中的代码,但目前没有任何工作。是否有更简单的方法来打印我想要的内容,或者将它变成打印样式函数?

编辑:使此功能可能是很容易的,但我是一个有点与Python

回答

3

初学者的简单for循环将让你从任何字符串中的单个字符。唯一真正的技巧是在每个字符后清空输出以使其立即打印。

import sys, time 

for c in "Hello there!": 
    sys.stdout.write(c) 
    sys.stdout.flush() 
    time.sleep(0.1) 
print 

使之成为功能确实简单:

def print1by1(text, delay=0.1): 
    for c in text: 
     sys.stdout.write(c) 
     sys.stdout.flush() 
     time.sleep(delay) 
    print 

print1by1("Hello there!") 
2

关于Python 3,你可以使用关键字sep,在蟒蛇2.有几个选项。

可能还有其他我不是太熟悉Python 2

您可以使用sys.stdout这是一个有点矫枉过正海事组织。

sys.stdout.write('H') 
sys.stdout.write('e') 

使用sys再次...您可以清除softspace

print "H", 
sys.stdout.softspace=0 
print "e", 

或者,

print 'H', 'e' 

或者,

print "H",; print "e" 

更方便,使用+

print "H" + "e" 

有字符的列表,并加入他们的行列,"".join是刚刚加盟的字符到一个字符串,它等效于print "He"

my_chars = ['H', 'e'] 
print "".join(my_chars) 
相关问题