fork download
  1.  
  2.  
  3. class whatisthere:#Класс проверяет список запросов и обращается к нужным функциям
  4. def __init__(self, requestlist):
  5. meetl = meetlist
  6. for line in requestlist:
  7. pareq=line.split()
  8. if pareq[0]=="APPOINT":
  9.  
  10. date = int(pareq[1])
  11. time = int(pareq[2])
  12. duration = int(pareq[3])
  13. pnumber = int(pareq[4])
  14. plist = pareq[5:]
  15. meetn = meet(date, time, duration, pnumber, plist)
  16.  
  17. meetl.addmit(self, meetn)
  18. elif pareq[0]=="PRINT":
  19. meetl.printmeet(int(pareq[1]), pareq[2])
  20.  
  21.  
  22. class meet:#Класс встречи. Сохраняет параметры
  23. def __init__(self,date,time,duration,pnumber,peoplelist):
  24. meet.date = date
  25. meet.time=time
  26. meet.duration=duration
  27. meet.pnumber=pnumber
  28. meet.peoplelist=peoplelist
  29.  
  30. def check(self,human): # Если на встрече будет этот человек - то выдать инфу о встрече
  31. if not human in meet.peoplelist:
  32. return ""
  33. else:
  34. prnt=str(meet.time)+' '+str(meet.date)
  35. for person in meet.peoplelist:
  36. prnt+=' '+person
  37. return prnt
  38.  
  39.  
  40.  
  41. class meetlist:#Класс списка встреч. Проверяет и добавляет новую встречу в список.
  42.  
  43. def __init__(self):#Создание списка встреч в объекте
  44. meetlist.meets=[]
  45.  
  46. def addmit(self,meet):#Сравнение добавляемой встречи со списком.
  47. print (meetlist.meets)
  48. print (meet)
  49. if not meetlist.meets:
  50. meetlist.meets.append(meet)
  51. return("OK")
  52. for mrel in self.meets:
  53. if meet.date==mrel.date: #Сравниваем даты
  54. if meetlist.comparetime(meet, mrel): #Сравниваем время
  55. listdiff = meetlist.comparepeople(meet,mrel)#Сравниваем людей
  56. if listdiff.count()==0:
  57. meetlist.meets.append(meet)
  58. return("OK")
  59. else:
  60. otp="FAIL "
  61. for p in listdiff:
  62. otp+=' '+p
  63. return otp
  64.  
  65. def comparetime(self, meet1, meet2): #Сравнение двух встреч по времени. Если пересечение - True
  66. if (meet1.time<meet2.time and meet1.time + meet1.duration>meet2.time):
  67. return True
  68. if (meet2.time<meet1.time and meet2.time + meet2.duration>meet1.time):
  69. return True
  70. return True
  71.  
  72.  
  73. def comparepeople(self,meet1,meet2): #Сравнение по людям. Если пересечение - то список.
  74. crosslist=[]
  75. for person in meet1.peoplelist:
  76. for human in meet2.peoplelist:
  77. if person==human:
  78. crosslist.append(human)
  79.  
  80. return crosslist #Возвращаем пересечение двух списков
  81.  
  82.  
  83.  
  84.  
  85. def printmeet(self, date, human): #печать информации о встрече
  86.  
  87. for meet in meetlist.meets():
  88. if (meet.date==date):
  89. meetcheck = meet.check(human)
  90. if meetcheck!='':
  91. print(meetcheck)
  92.  
  93. breakfast='''7
  94. APPOINT 1 120 30 2 andrey alex
  95. APPOINT 1 130 30 2 alex sergey
  96. APPOINT 1 10 60 2 alex andrey
  97. PRINT 1 alex
  98. PRINT 1 andrey
  99. PRINT 1 sergey
  100. PRINT 2 alex'''
  101. exempl = whatisthere(breakfast)
Runtime error #stdin #stdout #stderr 0.15s 23416KB
stdin
Standard input is empty
stdout
Standard output is empty
stderr
Traceback (most recent call last):
  File "./prog.py", line 101, in <module>
  File "./prog.py", line 8, in __init__
IndexError: list index out of range