2016-04-07 23 views
-1

Bir "zamanlama" oluşturmaya çalışıyorum. Bir sınıf "Gün" (Pazartesi-Pazar) içerecek ve her Gün çeşitli "Görevler" e sahip olacak bir sınıf: Yaptığım yol budur (aşağıdaki kod), bu durumda "day_of_the_week [1]" olur Salı eşdeğeri. Bu hatPython: Görevler listesini yönetme

class Task(object): 
    def __init__(self,name,start,end): 
     self.name = name 
     self.start = start 
     self.end = end 



class Day(object): 
    time_available = [] 
    check_time = [] 

    def __init__(self): 
     self.tasks = [] 
     for i in range(24): 
      self.time_available.append(i) 
    def add_task(self,name,start,end): 
     for i in range(start, end + 1, 1): 
      self.check_time.append(i) 
     if set(self.check_time).issubset(self.time_available): 
      # check if timeslot is available 
      for i in range(start, end + 1, 1): 
       self.time_available.remove(i) 
      del self.check_time[:] 
      self.tasks.append(Task(name, start, end)) 
      print "TRUE" 
      return True 
     else: 
      del self.check_time[:] 
      print "FALSE" 
      return False 

     #check if task can be added 





class Schedule(object): 
    def __init__(self): 
     self.day_of_the_week = [] 
    def add_day(self): 
     self.day_of_the_week.append(Day()) 



schedule = Schedule() 
schedule.add_day() 
schedule.add_day() 
schedule.day_of_the_week[0].add_task("swimming", 11, 13) 
schedule.day_of_the_week[0].add_task("swimming", 14, 17) 
schedule.day_of_the_week[0].add_task("swimming", 10, 12) 
schedule.day_of_the_week[1].add_task("swimming", 10, 12) 
schedule.day_of_the_week[1].add_task("swimming", 10, 13) 
+0

Takvime hiçbir zaman eklemediğiniz bir güne görev eklemeyi deniyorsunuz. – user2357112

+0

"daha fazla gün eklersem", "time_available" öğesinin sıfırlanacağı gibi göründüğünü keşfettim. Günün [0] belirli bir zaman diliminde mevcut olup olmadığını kontrol ediyordum. Şu anda olduğu gibi üçüncü yüzme görevi takılmayacaktı. Ama bir kez daha fazla gün ekledim, ekleyecekti. Değişkenlerim "Gün" de doğru şekilde bildirildi mi? – algoBaller

+0

Doğru görünmüyorlar. "time_available" ve "check_time", bir nedenle örnek değişkenler yerine sınıf değişkenleri olarak beyan edilir. – user2357112

cevap

0

sadece

schedule.add_day() 

sadece bir eleman eklenir

ile ilk elemanı tanımlanan "kapsam dışı liste indeksi" bir hata verir. İlk öğe "0" dizinine sahip. bu çizgiler hatalara neden olmaz yüzden:

schedule.day_of_the_week[0].add_task("swimming", 11, 13) 
schedule.day_of_the_week[0].add_task("swimming", 14, 17) 
schedule.day_of_the_week[0].add_task("swimming", 10, 12) 

Ama sonra dizine "1" ile ikinci girdiye ulaşmak, ama sadece bir tane var.

İlgili konular