Files
python/exercises/phone-number/example.py

39 lines
893 B
Python
Raw Normal View History

2013-08-01 11:42:00 -05:00
import re
2014-02-22 10:55:33 +08:00
2013-08-01 11:42:00 -05:00
class Phone(object):
def __init__(self, number):
self.number = self._clean(number)
def area_code(self):
return self.number[:3]
def exchange_code(self):
return self.number[3:6]
def subscriber_number(self):
return self.number[-4:]
def pretty(self):
return "(%s) %s-%s" % (
self.area_code(),
self.exchange_code(),
self.subscriber_number()
)
def _clean(self, number):
return self._normalize(
re.sub(r'[^\d]', '', number)
)
def _normalize(self, number):
if len(number) == 10 or len(number) == 11 and number.startswith('1'):
valid = number[-10] in "23456789" and number[-7] in "23456789"
else:
valid = False
2013-08-01 11:42:00 -05:00
if valid:
return number[-10:]
else:
return '0' * 10