Форум сайта python.su
День добрый ребятки. Возникла проблема, которую в гугле не найти, а самому придумать никак не получается. Было проделано много попыток, но всё бесполезно.
Задача: Последовательно вывести предложение в 1 строку. Т.е не просто эффект ctrl+v - ctrl+c, а эффект набора текста на клавиатуре. Всё что я хочу сделать, можно увидеть на нижеприведенной гиф-анимации.
Вывод побуквенно с малой задержкой, примерно в 0.1 - 0.2 секунды, что бы получился такой красивый эффект. Сам смысл проблемы в том, что строкой хрен выведешь, а столбиком я это вывести могу как 2 пальца обосса…
import time my_string = "Wake up, Neo..." for string in my_string: time.sleep(0.1) print(string)
print(x, y, z, sep = "", end = "")
import time my_string = "Wake up, Neo..." for string in my_string: time.sleep(0.1) print(string, end = "")
Офлайн
НА форуме уже была тема подобная - чото там проефект печатной машинки - поищите
Офлайн
Спасибо, нашел, вот тема, если вдруг кому надо - http://python.su/forum/topic/29676/.
Спасительной шлюпкой оказался аргумент flush. На деле всё будет выглядеть так:
import time my_string = "Wake up, Neo..." for string in my_string: time.sleep(0.1) print(string, end = "", flush=True)
Этот аргумент используется если ты используешь аргумент file, который позволяет указывать объект файла в который нужно записать вывод. По умолчанию (с flush=False), запись в файл произойдёт после выхода из цикла, а если flush=True запись в файл будет произведена сразу-же.
Офлайн
Whether output is buffered is usually determined by file, but if the flush keyword argument is true, the stream is forcibly flushed.
Пишет в буфер когда False, либо принудительно скидывает в stdout при True.
Офлайн
Есть несколько более улучшенная версия - с симуляцией разной скорости набора символов. Примерно так:
#!/usr/bin/env python3 import time import random def neo_print(value, base_delay=0.1): for char in value: print(char, end='', flush=True) time.sleep(base_delay + random.randint(1, 100) * base_delay / 100) print() if __name__ == '__main__': neo_print('Hello, Neo! Matrix waiting for you! Your Mr. Smith!')
Офлайн