我似乎无法增加时间。我试着用列表制作一个时钟。一个快进的时钟。
感谢您的帮助!问题将出现在第一个问题中,如果'言。
import random
import time
ctime = [10, 00] #current_time
#s = random.uniform(.3,1)
s = float(.01)
while True:
if ctime[1] == 59:
time.sleep(s)
ctime.remove(ctime[1])
ctime.insert(00,1)
nhour = int(ctime[0]+1) #next_hour
ctime.insert(nhour, 0)
elif ctime[0] == 23 and ctime[1] == 59:
ctime.remove(ctime[0 and 1])
ctime.insert(00)
ctime.insert(00)
else:
ctime[1]+=1
time.sleep(s)
print(ctime)
忘了给你看输出,抱歉。它继续正常,分钟从0-59开始然后再回到0,但是小时变为02,即使在分钟过后也保持为02.
答案 0 :(得分:0)
我认为你的list.insert()
混淆了你的论点顺序。
https://docs.python.org/2/tutorial/datastructures.html#more-on-lists
list.insert(i,x)在给定位置插入一个项目。首先 argument是要插入的元素的索引,所以 a.insert(0,x)插入列表的前面,a.insert(len(a), x)相当于a.append(x)。
编辑抱歉,忘记进行实际更正。
请尝试ctime.insert(1,0)
。
还有ctime.insert(0, nhour)
答案 1 :(得分:0)
您使用了错误的数据结构。列表用于移动一堆类似的项目,以便每个项目都可以单独处理。这是一个集合。这不是你正在做的事情。你试图把一组东西当作一个单独的单位对待,这已经知道了相互作用。
你需要的是一堂课。 Python已包含many date/time classes,但我们可以继续这样实现您的用例,仅用于说明。
class Ticker(object):
def __init__(self, hour, minute):
self.hour = hour
self.minute = minute
def tick(self):
self.minute = (self.minute + 1) % 60
self.hour = (self.hour + 1) % 24 if self.minute == 0 else self.hour
现在你的循环更简单了
ticker = Ticker()
while True:
print("%d:%d" % (ticker.hour, ticker.minute))
time.sleep(s)
ticker.tick()