Saltar al contenido

Implementar un cronómetro

Ya no necesitas indagar más por otras páginas ya que has llegado al sitio exacto, tenemos la respuesta que quieres pero sin complicaciones.

Solución:

pitón 2, 167 129 bytes

-36 bytes principalmente* por usar la idea de captura de Maltysen ctrl-c usando una excepción: ¡da crédito!
-4 bytes gracias a DLosc (init n y b a 0 en lugar de f())
-1 byte gracias a FlipTack (uso p^=1 más bien que p=1-p)
-2 bytes gracias a Felipe Nardi Batista (eliminar especificadores de precisión)

import time
f=time.time
n=b=p=0
while 1:
 try:n=[n,f()][p];t=n-b;print'r%02d:%02d'%(t/60%60,t%60),
 except:b=[b-n+f(),b][p];p^=1

Funciona igual que mi original, a continuación, pero con el control key secuencia de ctrl+c.
(Probado por mí con Python 2.7.8 en Windows 7, 64 bits;
Probado por Brian Minton con Python 2.7.13 en Linux, 64 bits)

* también se derrumbó if declaración a una lista de búsqueda para obtener la try como una sola línea.

Mi original:

import time,msvcrt as m
f=time.time
n=b=p=0
while 1:
 if m.kbhit()and m.getch()==b'p':b=[b-n+f(),b][p];p^=1
 if p:n=f()
 t=n-b;print'r%0.2d:%0.2d'%(t/60%60,t%60),

(Probado por mí con Python 2.7.8 en Windows 7, 64 bits; este código, sin embargo, es específico de Windows debido al uso de la msvcrt biblioteca)

El control key es ‘p’.

n y b se inicializan con el mismo valor en el arranque, dando un “desplazamiento” de 0; p se inicializa a 0, lo que indica un estado de pausa.

Siempre que el mando key se presiona el valor de p está conmutado. Al pasar de un estado de pausa a un estado activo b se actualiza a un nuevo valor manteniendo cualquier compensación actual de los estados activos anteriores con b-n.

Durante un estado activo n se actualiza repetidamente a la hora actual llamando time.time().

La diferencia entre n y b, tes entonces el número total de segundos (incluida una parte fraccionaria) transcurridos durante los estados activos.

Los minutos transcurridos son entonces t/60 y cada uno de los minutos y segundos se visualizan mod 60 con (t/60%60,t%60). Los ceros iniciales se anteponen para cada uso string formato de la parte entera con '...%0.2d...'. Imprimiendo una tupla (el final ,) donde el primer elemento tiene un retorno de carro inicial (el r) hace que se sobrescriba el texto previamente impreso.

SmileBÁSICO, 8677 71 bytes

@L
N=N!=DIALOG(FORMAT$("%02D:%02D",F/60MOD 60,F MOD 60),,,N)[email protected]

DIALOG muestra un cuadro de texto en la pantalla táctil. N es el número de segundos que el cuadro de texto permanecerá en la pantalla antes de que desaparezca. Si N es 0permanece hasta que el usuario presiona el botón en la pantalla táctil.

DIALOG Devoluciones 1 si el usuario presionó el botón, y 0 si se cierra automáticamente. Entonces, cuando el usuario presiona el botón de pausa, regresa 1y el tiempo de visualización se establece en 0, pausando el cronómetro. Después de que el usuario presiona el botón nuevamente, configuramos el tiempo de visualización nuevamente a 1, reanudando el temporizador. Básicamente, cada vez DIALOG devoluciones 1el tiempo de visualización cambia entre 1 y 0 usando !=que es equivalente a un XOR lógico siempre que ambas entradas sean 1 o 0.

Pitón – 160159 143 bytes

¡Gracias a @JonathanAllan por ahorrarme 18 bytes!

Solo usa bibliotecas integradas, por lo que el control key es ctrl-catrapándolo con un except keyboardInterrupt.

import time
Z=0
print'00:00'
while 1:exec"try:n while 1:n  %snexcept:1n"*2%(1,"print'33c%02d:%02d'%divmod(Z%3600,60);Z+=1;time.sleep(1)")

Valoraciones y comentarios

No se te olvide dar visibilidad a este escrito si te ayudó.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *