Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

[Dúvida] algortimo de contagem regressiva

Meu código até faz a contagem regressiva e imprime "Final...", mas parece ignorar o "print(timer, end='\r') ". Alguém sabe me dizer qual a raz

import time 
def contagem_regressiva(intervalo_em_segundos): 

while intervalo_em_segundos: 
    mins, secs = divmod(intervalo_em_segundos, 60) 
    timer = '{:02d}:{:02d}'.format(mins, secs) 
    print(timer, end='\r') 
    time.sleep(1) 
    intervalo_em_segundos -= 1

print('Final do intervalo!') 

contagem_regressiva(5)
2 respostas
solução!

Olá, Murilo!

O problema que você está enfrentando é que o print(timer, end='\r') não está funcionando como esperado.

O que acontece é que o caractere especial \r é usado para retornar o cursor para o início da linha. No entanto, dependendo do ambiente em que você está executando o código, isso pode não funcionar corretamente.

Uma alternativa para resolver esse problema é utilizar a biblioteca sys e o método sys.stdout.write() para imprimir a contagem regressiva. Aqui está um exemplo de como você pode fazer isso:

import time
import sys

def contagem_regressiva(intervalo_em_segundos):
    while intervalo_em_segundos:
        mins, secs = divmod(intervalo_em_segundos, 60)
        timer = '{:02d}:{:02d}'.format(mins, secs)
        sys.stdout.write('\r' + timer)
        sys.stdout.flush()
        time.sleep(1)
        intervalo_em_segundos -= 1

    print('\nFinal do intervalo!')

contagem_regressiva(5)

Dessa forma, a contagem regressiva será impressa corretamente, substituindo a linha anterior a cada segundo.

Espero ter ajudado e bons estudos!

Simplesmente resolveu kkkkk, obrigado!