Задержка печати в рамках всей программы - PullRequest
0 голосов
/ 17 ноября 2018

Я хочу, чтобы каждое сообщение в моей программе печаталось с небольшой задержкой между каждым символом.

Я могу использовать

import time

string = "hello world"
for char in string:
   print(char, end='')
   time.sleep(.25)

чтобы сделать это для одной строки. Я могу экстраполировать это на класс, используя метод __print__, но это все еще требует, чтобы я использовал класс каждый раз, когда я хочу использовать мой отредактированный метод печати. Как я могу добавить задержку для каждого символа, напечатанного для всей программы, чтобы я мог использовать print("foo") в любом месте и ожидать, что он будет работать как положено?

Ответы [ 4 ]

0 голосов
/ 17 ноября 2018

Вы можете перегрузить функцию print следующим образом:

import builtins
import time

def print(*args, **kwargs):
    for char in args[0]:
        builtins.print(char, end='')
        time.sleep(.25)

Это перегрузит функцию на уровне модуля.

0 голосов
/ 17 ноября 2018

, как сказал Альбин в комментариях, лучше создать функцию и вызывать ее вместо print, например:

def delayed_print(v, *args, **kwargs):
    print(v,*args, **kwargs)
    time.sleep(.25)

string = "hello world"
for char in string:
    delayed_print(char, end='')
0 голосов
/ 17 ноября 2018

Вы можете переопределить печать:

import time
import sys

string = "hello world"

def print(x):
    for char in x:
      sys.stdout.write(char)
      time.sleep(.25)
    sys.stdout.write('\n')

print(string)

Получите то, что вы хотите.

0 голосов
/ 17 ноября 2018

Что вы можете сделать, это создать для этого функцию, например:

def print_delayed(string):
    for char in string:
       builtins.print(char, end='', flush=True) # flush gets the actual delay, otherwise
                                                # the text is printed after all the sleeps
       time.sleep(.25)

Затем вы можете установить print равной этой функции, то есть:

print = print_delayed

Тем не менее, я бы не рекомендовал делать это;просто вызовите новую функцию, которую вы сделали, вместо переопределения встроенных.

Вот рабочий пример .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...