LINUX.ORG.RU

Секундомер на питоне

 


0

1

Изучаю понемногу Python, решил написать для практики секундомер. Вот он:

import time
import os
i = 0
while True:
    time.sleep(1)
    os.system('clear')
    i += 1
    print(i//3600,(i//60)%60,i%60,sep=':')
Интересуют несколько вопросов:

  • Как можно сделать простую смену цифр без полной очистки консоли каждую секунду?
  • Как изменить вывод прошедшего времени с 0:1:4 на 00:01:04?
  • Как в целом «причесать» код, где его можно было сделать лучше?

Насчёт первого посмотри этот тред.

Второе - .rjust(2, '0'), .zfill(2) или как в сях: '%02d:%02d:%02d' % (hours, minutes, seconds)

Kalashnikov ★★★
()

учти еще что твой код работает определенное время и суманный sleep 1 + d так что через ceil(1/d) секунд надо прибавить 2 сек вместо 1

bga_ ★★★★
()

Разобрался со вторым пунктом, и примерно понял, как решить первый. '\r' возвращает каретку на начало строки, но print переводит её на строку вниз — нужен аналог print, не переводящий строку.

Я правильно понял?

Arandelix
() автор топика
Ответ на: комментарий от bga_
[arandelix@NetBook Python]$ time python stopwatch.py
00:00:01
00:00:02
00:00:03
00:00:04
00:00:05

real    0m5.325s
user    0m0.297s
sys     0m0.023s

Одна итерация выполняется примерно 65 ms.
Если заменить time.sleep(1) на time.sleep(0.935) погрешность уменьшится?

Arandelix
() автор топика
Ответ на: комментарий от Arandelix

'\r' возвращает каретку на начало строки, но print переводит её на строку вниз — нужен аналог print, не переводящий строку

Можно написать сразу так:

print(something, end='\r')

pevzi ★★★★★
()
Ответ на: комментарий от pevzi
initial = time.time()
while True: print time.time() - initial

Очень сильно грузит процессор, да и сделано не совсем средствами Python'а.

Arandelix
() автор топика
Ответ на: комментарий от Arandelix

Очень сильно грузит процессор

Ну естественно, все равно нужен sleep. Просто в этом случае точность не будет зависеть от времени выполнения кода.

сделано не совсем средствами Python'а

Не понял.

pevzi ★★★★★
()
Ответ на: комментарий от pevzi

сделано не совсем средствами Python'а

Не понял.

А, это я сам с первого раза не разглядел. Просто выглядит очень похоже на какой-то системный bash'евый скрипт.

Arandelix
() автор топика
Ответ на: комментарий от Arandelix

Одна итерация выполняется примерно 65 ms.

не, неправильно. Больше всего отъедает старт программы. Проверь.

true_admin ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.