Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class Telephones():
- def __init__(self):
- self.book = {}
- @staticmethod
- def beautify(st):
- num = ''
- flag = 1
- for elem in st:
- if elem in '0123456789':
- num += elem
- if elem not in '0123456789()-+ ':
- flag = 0
- if len(num) == 11:
- if num[0] != '7' and num[0] != '8':
- flag = 0
- elif num[1] != '9' and num[1:4] != '495':
- flag = 0
- else:
- return '+7' + '(' + num[1:4] + ')' + num[4::]
- elif len(num) == 10:
- if num[0] != '9' and num[0:3] != '495':
- flag = 0
- else:
- return '+7' + '(' + num[0:3] + ')' + num[3::]
- else:
- flag = 0
- if flag == 0:
- raise BaseException('Not a telephone number')
- def add(self, *args):
- if len(args) == 2:
- name = args[0]
- number = args[1]
- try:
- number_ok = Telephones.beautify(number)
- except:
- raise BaseException
- if name not in self.book:
- self.book[name] = [number_ok]
- else:
- self.book[name].append(number_ok)
- else:
- for temp in args:
- for (name, number) in temp:
- try:
- number_ok = Telephones.beautify(number)
- except:
- raise BaseException
- if name not in self.book:
- self.book[name] = [number_ok]
- else:
- self.book[name].append(number_ok)
- def __len__(self):
- return len(self.book)
- def __str__(self):
- res = ""
- for name in self.book:
- res += (name)
- tmp = False
- for number in sorted(self.book[name]):
- if not tmp:
- res += (" " + number + '\n')
- tmp = True
- else:
- res += (" " * (len(name) + 1) + number + '\n')
- return res
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement