Advertisement
nq1s788

clock

Feb 16th, 2024
768
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.88 KB | None | 0 0
  1. class Clock:
  2.     time = 0
  3.     timers = []
  4.  
  5.     def set_timer(self, t):
  6.         cur_timer = self.format(t)
  7.         self.timers.append(cur_timer)
  8.         self.timers.append(cur_timer + 24 * 60)
  9.         self.timers.sort()
  10.         h, m = t.split(':')
  11.         h, m = '0' * (2 - len(h)) + h, '0' * (2 - len(m)) + m
  12.         print('Установлен будильник на', h + ':' + m)
  13.  
  14.     def time_rest(self):
  15.         if len(self.timers) == 0:
  16.             print('Нет заведенных будильников')
  17.             return
  18.         next = None
  19.         for e in self.timers:
  20.             if e >= self.time:
  21.                 next = e
  22.                 break
  23.         print('Ближайший будильник сработает через', self.back_format(next - self.time) + '.')
  24.  
  25.     def change_time(self, t):
  26.         h, m = t.split(':')
  27.         h, m = '0' * (2 - len(h)) + h, '0' * (2 - len(m)) + m
  28.         print('Время установлено на', h+':'+m)
  29.         self.time = self.format(t)
  30.         prev = None
  31.         for e in self.timers:
  32.             if e <= self.time:
  33.                 prev = e
  34.             else:
  35.                 break
  36.         if prev != None:
  37.             if prev == self.time:
  38.                 print('Сработал будильник!')
  39.                 while self.time in self.timers:
  40.                     self.timers.remove(self.time)
  41.                 while self.time + 24 * 60 in self.timers:
  42.                     self.timers.remove(self.time + 24 * 60)
  43.             else:
  44.                 h, m = str(prev // 60), str(prev % 60)
  45.                 h, m = '0' * (2 - len(h)) + h, '0' * (2 - len(m)) + m
  46.                 print('Вы пропустили будильник на ' + h + ':' + m + '!')
  47.  
  48.     def format(self, t):
  49.         h, m = map(int, t.split(':'))
  50.         return h * 60 + m
  51.  
  52.     def back_format(self, t):
  53.         h, m = t // 60, t % 60
  54.         if h:
  55.             return self.hours(h) + ' и ' + self.minuts(m)
  56.         else:
  57.             return self.minuts(m)
  58.  
  59.     def hours(self, h):
  60.         if h == 1:
  61.             return '1 час'
  62.         elif h < 5:
  63.             return str(h) + ' часа'
  64.         else:
  65.             return str(h) + ' часов'
  66.  
  67.     def minuts(self, m): # 0,5-20,25-30,35-40 минут 1,21,31 минута 2-4,22-24,32-34 минуты
  68.         if 5 <= m and m <= 20:
  69.             return str(m) + ' минут'
  70.         else:
  71.             if m % 10 == 1:
  72.                 return str(m) + ' минуту'
  73.             elif m % 10 == 0 or m % 10 < 5:
  74.                 return str(m) + ' минуты'
  75.             else:
  76.                 return str(m) + ' минут'
  77.  
  78.  
  79. clock = Clock()
  80. request = input()
  81. while request != '0':
  82.     if request[0] == '1':
  83.         clock.set_timer(request[2:])
  84.     elif request == '2':
  85.         clock.time_rest()
  86.     else:
  87.         clock.change_time(request[2:])
  88.     request = input()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement