Advertisement
Guest User

Untitled

a guest
Nov 19th, 2019
133
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.17 KB | None | 0 0
  1. class Telephones():
  2.     def __init__(self):
  3.         self.book = {}
  4.     @staticmethod
  5.     def beautify(st):
  6.         num = ''
  7.         flag = 1
  8.         for elem in st:
  9.             if elem in '0123456789':
  10.                 num += elem
  11.             if elem not in '0123456789()-+ ':
  12.                 flag = 0
  13.        
  14.         if len(num) == 11:
  15.             if num[0] != '7' and num[0] != '8':
  16.                 flag = 0
  17.             elif num[1] != '9' and num[1:4] != '495':
  18.                 flag = 0
  19.             else:
  20.                 return '+7' + '(' + num[1:4] + ')' + num[4::]
  21.         elif len(num) == 10:
  22.             if num[0] != '9' and num[0:3] != '495':
  23.                 flag = 0
  24.             else:
  25.                 return '+7' + '(' + num[0:3] + ')' + num[3::]        
  26.         else:
  27.             flag = 0
  28.        
  29.         if flag == 0:
  30.             raise BaseException('Not a telephone number')
  31.  
  32.     def add(self, *args):
  33.         if len(args) == 2:
  34.             name = args[0]
  35.             number = args[1]
  36.             try:
  37.                 number_ok = Telephones.beautify(number)
  38.             except:
  39.                 raise BaseException
  40.             if name not in self.book:
  41.                 self.book[name] = [number_ok]
  42.             else:
  43.                 self.book[name].append(number_ok)
  44.         else:
  45.             for temp in args:
  46.                 for (name, number) in temp:
  47.                     try:
  48.                         number_ok = Telephones.beautify(number)
  49.                     except:
  50.                         raise BaseException
  51.                     if name not in self.book:
  52.                         self.book[name] = [number_ok]
  53.                     else:
  54.                         self.book[name].append(number_ok)
  55.  
  56.     def __len__(self):
  57.         return len(self.book)
  58.     def __str__(self):
  59.         res = ""
  60.         for name in self.book:
  61.             res += (name)
  62.             tmp = False
  63.             for number in sorted(self.book[name]):
  64.                 if not tmp:
  65.                     res += (" " + number + '\n')
  66.                     tmp = True
  67.                 else:
  68.                     res += (" " * (len(name) + 1) + number + '\n')
  69.         return res
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement