"Criar animações" com texto em python [RESOLVIDO]

1. "Criar animações" com texto em python [RESOLVIDO]

Jorge Luiz
UmanoBlu

(usa Kali)

Enviado em 14/01/2019 - 03:59h

Serei breve. Eu sei programar em C e pra quem sabe ja deve estar ciente de que não é muito difícil fazer uma animação com texto na tela.
Um simples programa pode fazer isso em C:


#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(void){

char frase[100];

strcpy(frase,"Frase animada aqui");

for(int i = 0 ; frase[i] != '\0' ; i++){
printf("%c", frase[i]);
system("sleep 0.2");
}

return 0;
}


Não precisa entender o programa que eu fiz acima, mas basicamente ele mostra uma animação na qual aparece letra por letra da frase "Frase animada aqui" na tela com um intervalo de 0.2 segundos. Acontece que ja tentei esse mesmo efeito de várias maneiras no Python só que percebi uma coisa. O python sempre "renderiza" uma linha inteira para depois pular para a próxima, ou seja, até onde eu sei é impossível fazer com que letra após letra apareça na tela como se fosse uma animação na mesma linha. Porém depois de inúmeras tentativas resolvi testar um programa.


# encoding: utf-8

frase = " Frase animada aqui "

i = 0

while i < 1:
print(frase, end = '')


Quanto testei esse programa no shell, consegui ver que ele ia adicionando a variável frase na linha infinitas vezes. Então me subiu uma chama de esperança e eu resolvi fazer um post nesse site para procurar a resposta de apenas uma(ou duas) pergunta(s).

É possível fazer uma animação que aparece letra por letra em python?
Se sim, como?


  


2. Re:

Matheus
pylm

(usa Gentoo)

Enviado em 14/01/2019 - 22:58h

Cê pode usar uma lista:


frase = " Frase animada aqui "

import time, sys

for i in list(frase):
print(i, end='')
#O stdout só é atualizado quando há nova linha e como nós estamos mandando tudo na mesma é preciso forçar a atualização.
sys.stdout.flush()
time.sleep(0.2)


A lista vai quebrar a frase de letra em letra.

Se quiser mostra indefinidamente simplesmente coloque dentro de um While


frase = " frase animada aqui "

import time, sys, os


while True:
for i in list(frase):
print(i, end='')
sys.stdout.flush()
time.sleep(0.25)
os.system('clear')




3. Re: "Criar animações" com texto em python [RESOLVIDO]

Guilherme
guipsp

(usa Ubuntu)

Enviado em 15/01/2019 - 15:03h

Quando li o título lembrei do cara que fez video-to-ascii em python:

https://github.com/joelibaceta/video-to-ascii


4. Re: "Criar animações" com texto em python [RESOLVIDO]

Jorge Luiz
UmanoBLu

(usa Kali)

Enviado em 16/01/2019 - 01:32h

Nossa que louco... testarei.

-UB


5. Re:

Lisandro Guerra
Lisandro

(usa Arch Linux)

Enviado em 22/01/2019 - 23:16h

Tente este:

import os
import time

frase = " Frase animada aqui "

while True:
os.system('clear')
for letra in frase:
print(letra, end = '', flush = True)
time.sleep(0.3)


Obs.: tem que rodar no terminal, no IDLE não vai dar o efeito.






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts