计算语句下的值

时间:2016-01-03 16:13:04

标签: python python-2.7

我需要一些关于代码的帮助,我计算self.channel_count的值,以便在每次传递每个语句以计算值时输出它们。

以下是我在每次传递语句时计算的值的输出:

15:36:47 T:5080  NOTICE: program has finished
15:36:47 T:5080  NOTICE: 0
15:36:47 T:5080  NOTICE: program is half way
15:36:47 T:5080  NOTICE: 1
15:53:41 T:1468  NOTICE: 3029
15:53:41 T:1468  NOTICE: 3157
15:53:41 T:1468  NOTICE: 3285
15:53:41 T:1468  NOTICE: 3413
15:53:41 T:1468  NOTICE: 3541
15:53:41 T:1468  NOTICE: 3669
15:53:41 T:1468  NOTICE: 3797
15:36:47 T:5080  NOTICE: program has finished
15:36:47 T:5080  NOTICE: 2
15:36:47 T:5080  NOTICE: program is half way
15:36:47 T:5080  NOTICE: 3
15:36:47 T:5080  NOTICE: program is half way
15:36:47 T:5080  NOTICE: 4
15:36:47 T:5080  NOTICE: program has finished
15:36:47 T:5080  NOTICE: 5
15:36:47 T:5080  NOTICE: program has finished
15:36:47 T:5080  NOTICE: 6

以下是完整代码:

self.program_remaining = False
self.channel_count = 0


for channel in channels:
    #get the stop_date data from the programs list
    cur = con.cursor()
    cur.execute('SELECT start_date, stop_date FROM programs where channel=?', [channel])
    stop_date = cur.fetchone()


    if stop_date is not None:
       start_date = str(stop_date[0])
       stop_date = str(stop_date[1])
       get_current_time = datetime.datetime.now().strftime('%H:%M')
       get_start_time = time.strptime(start_date, '%Y%m%d%H%M%S')
       start_time = time.strftime('%H:%M', get_start_time)
       get_stop_time = time.strptime(stop_date, '%Y%m%d%H%M%S')
       stop_time = time.strftime('%H:%M', get_stop_time)
       current_time = str(get_current_time)

       if current_time == start_time:
           print "the program has started"


       elif start_time < current_time < stop_time:
           print "program is half way"
           currenttime = self.parseDateTimeToMinutesSinceEpoch(start_date)
           program_stop = self.parseDateTimeToMinutesSinceEpoch(stop_date)
           program_stop - currenttime
           datetime.timedelta(0, 8100)
           current_program_length = program_stop - currenttime
           print self.channel_count

           if current_program_length >= 30:
              if self.program_remaining == True:
                 self.program_remaining = False
                 program_button = [elem.control for elem in self.program_buttons]
                 progId = list()
                 posX = list()
                 posY = list()

                 for elem in program_button:
                     progId.append(elem.getId())
                     posX.append(elem.getX())
                     posY.append(elem.getY())
                 progId = map(str, progId)
                 posX = map(str, posX)
                 posY = map(str, posY)

                 for posX, posY, progId in zip (posX, posY, progId):
                     if int(posX) == 375:
                         print progId


           elif start_time <> current_time <> stop_time:
               print "program has finished"
               print self.channel_count

           self.channel_count += 1

我试图了解如何在self.channel_count下获取值elif start_time < current_time < stop_time:以输出if current_program_length >= 30:下的值,以便我可以得到这样的结果。

15:36:47 T:5080  NOTICE: 1
15:36:47 T:5080  NOTICE: 3
15:36:47 T:5080  NOTICE: 4

我试着用这个:

elif start_time < current_time < stop_time:
    ...etc
    print self.channel_count

    if current_program_length >= 30:
        for elem in program_button:
            progId.append(elem.getId())
            posX.append(elem.getX())
            posY.append(elem.getY())
         progId = map(str, progId)
         posX = map(str, posX)
         posY = map(str, posY)

         for posX, posY, progId in zip (posX, posY, progId):
             if int(posX) == 375:
                print progId

我会得到这样的结果:

15:53:41 T:1468  NOTICE: program has finished
15:53:41 T:1468  NOTICE: program is half way
15:53:41 T:1468  NOTICE: 1
15:53:41 T:1468  NOTICE: 3029
15:53:41 T:1468  NOTICE: 3157
15:53:41 T:1468  NOTICE: 3285
15:53:41 T:1468  NOTICE: 3413
15:53:41 T:1468  NOTICE: 3541
15:53:41 T:1468  NOTICE: 3669
15:53:41 T:1468  NOTICE: 3797
15:53:41 T:1468  NOTICE: program has finished
15:53:41 T:1468  NOTICE: program is half way
15:53:41 T:1468  NOTICE: 3
15:53:41 T:1468  NOTICE: 3029
15:53:41 T:1468  NOTICE: 3157
15:53:41 T:1468  NOTICE: 3285
15:53:41 T:1468  NOTICE: 3413
15:53:41 T:1468  NOTICE: 3541
15:53:41 T:1468  NOTICE: 3669
15:53:41 T:1468  NOTICE: 3797
15:53:41 T:1468  NOTICE: program is half way
15:53:41 T:1468  NOTICE: 4
15:53:41 T:1468  NOTICE: 3029
15:53:41 T:1468  NOTICE: 3157
15:53:41 T:1468  NOTICE: 3285
15:53:41 T:1468  NOTICE: 3413
15:53:41 T:1468  NOTICE: 3541
15:53:41 T:1468  NOTICE: 3669
15:53:41 T:1468  NOTICE: 3797
15:53:41 T:1468  NOTICE: program has finished
15:53:41 T:1468  NOTICE: program has finished

我在传递语句时每次使用变量self.program_remaining来阻止循环。我想获取值,然后我可以使用它们使用数组prog_id

中的值来搜索元素

以下是prog_id的元素列表:

>>> value 0 15:53:41 T:1468  NOTICE: 3029
>>> value 1 15:53:41 T:1468  NOTICE: 3157
>>> value 2 15:53:41 T:1468  NOTICE: 3285
>>> value 3 15:53:41 T:1468  NOTICE: 3413
>>> value 4 15:53:41 T:1468  NOTICE: 3541
>>> value 5 15:53:41 T:1468  NOTICE: 3669
>>> value 6 15:53:41 T:1468  NOTICE: 3797

以下是我试图实现的目标:

15:53:41 T:1468  NOTICE: 3157
15:53:41 T:1468  NOTICE: 3413
15:53:41 T:1468  NOTICE: 3541

因此,我在每次传递语句时计算值,而我只获得1的值34elif start_time < current_time < stop_time:所以我想在if current_program_length >= 30:下使用这些值,但是当我阻止变量阻止它们每次传递时我都不知道如何做到这一点。

您能否告诉我如何在elif start_time < current_time < stop_time:下计算值以输出if current_program_length >= 30:下的值,以便我可以使用值搜索数组中的元素?

0 个答案:

没有答案