Создание таймера в 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 минут, вызывает диалоговое окно. Диалоговое окно не является проблемой. Но моя переменная минут не увеличивает этот код.
Ответы
Ответ 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)
...
Ответ 9
Вероятно, вы ищете объект Timer: http://docs.python.org/2/library/threading.html#timer-objects
Ответ 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)
Эта работа очень хороша для времени.