如何让Python在同一行上一次打印一个字符?

时间:2016-04-27 17:28:04

标签: python python-2.7

所以,我一直试图制作一个小程序,询问用户各种问题,并根据输入提供分支输出,我一直试图让字符在屏幕上出现在字符上一次,每个角色之间有一个短暂的延迟,但在同一条线上。我已经看过其他各种方法,例如

print "H",
print "e",

等,但这非常耗时,要求我为每个字母输入一份打印件。我已经看到关于这个主题的其他问题,并尝试了放在其中的代码,但到目前为止似乎都没有。是否有更简单的方法来打印我想要的内容,或者将其打印成打印样式函数?

编辑:使这个功能变得非常简单,但我是Python的初学者

2 个答案:

答案 0 :(得分: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!")

答案 1 :(得分:2)

在python 3上,您可以在python 2上使用sep关键字。有几个选项。

可能还有其他人我对python 2并不太熟悉。

你可以使用sys.stdout这有点过分杀人。

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

再次使用sys ...您可以清除软空间

 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)