Подтвердить что ты не робот

Создание таймера в python

import time
def timer():
   now = time.localtime(time.time())
   return now[5]


run = raw_input("Start? > ")
while run == "start":
   minutes = 0
   current_sec = timer()
   #print current_sec
   if current_sec == 59:
      mins = minutes + 1
      print ">>>>>>>>>>>>>>>>>>>>>", mins

Я хочу создать своего рода секундомер, который, когда минуты достигают 20 минут, вызывает диалоговое окно. Диалоговое окно не является проблемой. Но моя переменная минут не увеличивает этот код.

4b9b3361

Ответ 1

Вы можете упростить всю эту программу, используя time.sleep:

import time
run = raw_input("Start? > ")
mins = 0
# Only run if the user types in "start"
if run == "start":
    # Loop until we reach 20 minutes running
    while mins != 20:
        print ">>>>>>>>>>>>>>>>>>>>>", mins
        # Sleep for a minute
        time.sleep(60)
        # Increment the minute total
        mins += 1
    # Bring up the dialog box here

Ответ 2

Смотрите Объекты таймера из потока.

Как насчет

from threading import Timer
import time

def timeout():
    print("Game over")

# duration is in seconds
t = Timer(20 * 60, timeout)
t.start()

# do something else, such as
time.sleep(1500)

Если вы хотите передать аргументы функции timeout, вы можете указать их в конструкторе таймера:

def timeout(foo, bar=None):
    print('The arguments were: foo: {}, bar: {}'.format(foo, bar))

t = Timer(20 * 60, timeout, args=['something'], kwargs={'bar': 'else'})

Или вы можете использовать functools.partial для создания связанной функции или вы можете передать метод с привязкой к экземпляру.

Ответ 3

Я бы использовал объект timedelta.

from datetime import datetime, timedelta

...
period = timedelta(minutes=1)
next_time = datetime.now() + period
minutes = 0
while run == 'start':
    if next_time <= datetime.now():
        minutes += 1
        next_time += period

Ответ 4

Ваш код идеален, за исключением того, что вы должны выполнить следующую замену:

minutes += 1 #instead of mins = minutes + 1

или

minutes = minutes + 1 #instead of mins = minutes + 1

но здесь другое решение этой проблемы:

def wait(time_in_seconds):
    time.sleep(time_in_seconds) #here it would be 1200 seconds (20 mins)

Ответ 5

mins = minutes + 1

должен быть

minutes = minutes + 1

Кроме того,

minutes = 0

должен находиться вне цикла while.

Ответ 6

Я хочу создать своего рода секундомер, который, когда минуты достигают 20 минут, вызывает диалоговое окно.

Все, что вам нужно, - это спать указанное время. time.sleep() занимает несколько секунд, чтобы спать, поэтому 20 * 60 составляет 20 минут.

import time
run = raw_input("Start? > ")
time.sleep(20 * 60)
your_code_to_bring_up_dialog_box()

Ответ 7

# this is kind of timer, stop after the input minute run out.    
import time
min=int(input('>>')) 
while min>0:
    print min
    time.sleep(60) # every minute 
    min-=1  # take one minute 

Ответ 8

import time 

...

def stopwatch(mins):
   # complete this whole code in some mins.
   time.sleep(60*mins)

...

Ответ 10

Попробуйте использовать цикл while следующим образом:

minutes = 0

while run == "start":
   current_sec = timer()
   #print current_sec
   if current_sec == 59:
      minutes = minutes + 1
      print ">>>>>>>>>>>>>>>>>>>>>", mins

Ответ 11

import time
def timer(n):
    while n!=0:
        n=n-1
        time.sleep(n)#time.sleep(seconds) #here you can mention seconds according to your requirement.
        print "00 : ",n
timer(30) #here you can change n according to your requirement.

Ответ 12

import time
def timer():
   now = time.localtime(time.time())
   return now[5]


run = raw_input("Start? > ")
while run == "start":
   minutes = 0
   current_sec = timer()
   #print current_sec
   if current_sec == 59:
      mins = minutes + 1
      print ">>>>>>>>>>>>>>>>>>>>>", mins

Я действительно искал таймер сам, и ваш код, похоже, работает, вероятная причина ваших минут, которые не считаются, заключается в том, что, когда вы говорите, что

minutes = 0

а затем

mins = минуты + 1

это то же самое, что сказать

mins = 0 + 1

Я уверен, что каждый раз, когда вы печатаете минуты, он показывает вам "1" из-за того, что я только что объяснил, "0 + 1" всегда приведет к "1".

Что вам нужно сделать, прежде всего, разместите

minutes = 0

за пределами цикла while. После этого вы можете удалить

mins = минуты + 1

потому что в этом случае вам не нужна другая переменная, просто замените ее на

минуты = минуты + 1

Таким образом, минуты начинаются со значения "0", получают новое значение "0 + 1", получают новое значение "1 + 1", получают новое значение "2 + 1", и др.

Я понимаю, что многие люди уже ответили на это, но я подумал, что это поможет узнать больше, научиться мудрым, если вы увидите, где вы допустили ошибку, и попытайтесь ее исправить. Надеюсь, это помогло. Кроме того, спасибо за таймер.

Ответ 13

import time
mintt=input("How many seconds you want to time?:")
timer=int(mintt)
while (timer != 0 ):
    timer=timer-1
    time.sleep(1)
    print(timer)

Эта работа очень хороша для времени.