Csatlakoztál a LinkLine-hoz, egy vezető kommunikációs vállalathoz, amely azon dolgozik, hogy mindenki számára megbízható kapcsolatot biztosítson. A csapat nagy kihívás előtt áll: a felhasználók mindenféle formátumban küldik be a telefonszámokat, kötőjelekkel, szóközökkel, pontokkal, zárójelekkel, sőt előtagokkal is. Egyes számok érvényesek, másokat viszont lehetetlen használni.
A küldetésed az, hogy rendet teremts ebben a káoszban. Megtisztítod az érvényes számokat, és úgy formázod őket, hogy használhatók legyenek a rendszerben. Ezzel egy időben felismered és kiszűröd az érvénytelen bejegyzéseket.
A LinkLine működésének sikere azon múlik, hogy képes vagy-e különválasztani a hasznosat a használhatatlantól. Készen állsz rá, hogy belevágj a kihívásba, és a kapcsolatok zökkenőmentesen működjenek?
Tisztítsd meg a telefonszámokat, hogy SMS-t lehessen rájuk küldeni.
A North American Numbering Plan (NANP) egy olyan telefonszámozási rendszer, amelyet Észak-Amerika számos országa használ, például az Egyesült Államok, Kanada vagy Bermuda.
Minden NANP-ország ugyanazt a nemzetközi országkódot használja: 1.
A NANP-számok tízjegyű számok, amelyek egy háromjegyű Numbering Plan Area kódból, közismertebb nevén körzetszámból, majd egy hétjegyű helyi számból állnak. A helyi szám első három jegye a központkód, amelyet az egyedi négyjegyű előfizetői szám követ.
A formátumot általában így jelölik:
NXX NXX-XXXX
ahol az N bármely 2 és 9 közötti számjegy, az X pedig bármely 0 és 9 közötti számjegy.
Néha az országkódot is a szám elé írják (amit 1 vagy +1 jelöl).
A feladatod, hogy a különböző formátumú telefonszámokat megtisztítsd: távolítsd el belőlük az írásjeleket, és ha van, az országkódot.
Például a következő bemenetek
+1 (613)-995-0253613-995-02531 613 995 0253613.995.0253mindegyikének a következő kimenetet kell adnia:
6139950253
Megjegyzés: Mivel ez a feladat csak a NANP-országokban használt telefonszámokkal foglalkozik, egyedül az 1 számít érvényes országkódnak.
Néha szükség van arra, hogy kivételt dobj. Amikor ezt teszed, mindig adj meg egy beszédes hibaüzenetet, amely jelzi, mi a hiba forrása. Ez olvashatóbbá teszi a kódodat, és nagyban segít a hibakeresésben. Ha tudod, hogy a hiba forrása egy bizonyos típusú lesz, választhatsz, hogy a beépített hibatípusok egyikét dobod, de ilyenkor is adj meg beszédes üzenetet.
Ez a feladat megköveteli, hogy a raise utasítás segítségével „dobj” több ValueErrors kivételt, ha a PhoneNumber() osztály konstruktorának olyan számot adsz át, amely nem érvényes telefonszám. Ez magában foglalja azokat az eseteket, amikor a körzetszám vagy a központi számok érvénytelenek, amikor a számnak túl sok (vagy túl kevés) számjegye van, és amikor írásjeleket vagy betűket adnak meg bemenetként. A tesztek csak akkor lesznek sikeresek, ha raise-elsz egy exception-t, és üzenetet is mellékelsz hozzá.
Ha egy ValueError-t üzenettel szeretnél dobni, írd az üzenetet az exception típus argumentumaként:
# if a phone number has less than 10 digits.
raise ValueError("must not be fewer than 10 digits")
# if a phone number has more than 11 digits.
raise ValueError("must not be greater than 11 digits")
# if a phone number has 11 digits, but starts with a number other than 1.
raise ValueError("11 digits must start with 1")
# if a phone number has an exchange code that starts with 0.
raise ValueError("exchange code cannot start with zero")
# if a phone number has an exchange code that starts with 1.
raise ValueError("exchange code cannot start with one")
# if a phone number has an area code that starts with 0.
raise ValueError("area code cannot start with zero")
# if a phone number has an area code that starts with 1.
raise ValueError("area code cannot start with one")
# if a phone number has punctuation in place of some digits.
raise ValueError("punctuations not permitted")
# if a phone number has letters in place of some digits.
raise ValueError("letters not permitted")
Iratkozz fel az Exercism-re, hogy megtanuld és elsajátítsd a(z) Python nyelvet 17 fogalom146 feladat segítségével, valódi emberi mentorálással, mindez ingyen.