9

I am trying to make a textual game in python. All goes well however, I would like to make a function that will allow me to print something to the terminal, but in a fashion hat looks like typing.

Currently I have:

def print_slow(str):
    for letter in str:
        print letter,
        time.sleep(.1)

print_slow("junk")

The output is:

j u n k

Is there a way to get rid of the spaces between the letters?

martineau
  • 119,623
  • 25
  • 170
  • 301
TechplexEngineer
  • 1,836
  • 2
  • 30
  • 48

4 Answers4

15

This is my "type like a real person" function:

import sys,time,random

typing_speed = 50 #wpm
def slow_type(t):
    for l in t:
        sys.stdout.write(l)
        sys.stdout.flush()
        time.sleep(random.random()*10.0/typing_speed)
    print ''
Bill Gross
  • 496
  • 3
  • 11
14

In Python 2.x you can use sys.stdout.write instead of print:

for letter in str:
    sys.stdout.write(letter)
    time.sleep(.1)

In Python 3.x you can set the optional argument end to the empty string:

print(letter, end='')
Mark Byers
  • 811,555
  • 193
  • 1,581
  • 1,452
9

Try this:

def print_slow(str):
    for letter in str:
        sys.stdout.write(letter)
        sys.stdout.flush()
        time.sleep(0.1)

print_slow("Type whatever you want here")
Sebastian
  • 91
  • 1
  • 1
1

Try this:

import sys,time

def sprint(str):
   for c in str + '\n':
     sys.stdout.write(c)
     sys.stdout.flush()
     time.sleep(3./90)

sprint('hello world')
Ahmed
  • 414
  • 4
  • 3