Python обратный отсчет не построчно - PullRequest
0 голосов
/ 27 апреля 2020

, поэтому я попытался создать обратный отсчет в python. Это работает нормально, но я хочу улучшить вывод на печать. В данный момент он печатает оставшееся время построчно, поэтому мой вывод через некоторое время переполняется. Затем я попытался сделать:

import time

def countdown(t):
    while t:

        print(t, end="\r")
        time.sleep(1)
        t -= 1
    print('finished')

countdown(60)

, но он выводит для меня:

5
4
3
2
1
finished

Я бы хотел, чтобы он печатал обратный отсчет и все закончилось в одну строку и удаляет номер перед ним ... Спасибо за помощь :) Вот как это должно выглядеть: Но мне не нужен формат 00:00, для меня все в порядке

Ответы [ 3 ]

0 голосов
/ 27 апреля 2020

Удалить предыдущий символ, используя '\ b'

import time

def countdown(t):
    # how many digits
    digits = int(t / 10) + 1
    while t:
        print('\b{}'.format(str(t).zfill(digits)), end="\r")
        time.sleep(1)
        t -= 1
    print('finished')

countdown(10)
0 голосов
/ 27 апреля 2020

Следующее будет работать при вызове с Windows CMD

import time, sys, os

def pretty_format(seconds):
    seconds = seconds % (24 * 3600)
    hour = seconds // 3600
    seconds %= 3600
    minutes = seconds // 60
    seconds %= 60
    # Here's the formatting you asked for!  00:00:59 etc...
    return "%d:%02d:%02d" % (hour, minutes, seconds)  

def count_down(seconds):
    os.system("cls")  # Windows -> clear the cmd screen


    while seconds:
        sys.stdout.write("{}{}".format(pretty_format(seconds), "\b"*100)) # \b replaces the previous value. if we have a bunch of values we need to do multiple \b. Here's 100!
        time.sleep(1)
        seconds -=1
    print('finished')

count_down(60)
0 голосов
/ 27 апреля 2020

почти там, ниже код напечатает значение вашего таймера рядом. не уверен, что «удаляет номер перед ним». есть!

import time

def countdown(t):
    while t:

        print(t, end=" ")
        time.sleep(1)
        t -= 1
    print('finished')

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