添加到列表中的值时出现问题。[python 2.7.10]

时间:2015-10-26 12:55:03

标签: python python-2.7

我似乎无法增加时间。我试着用列表制作一个时钟。一个快进的时钟。

感谢您的帮助!问题将出现在第一个问题中,如果'言。

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.

2 个答案:

答案 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()