Tracks
/
Python
Python
/
Übungen
/
Telefonnummer
Telefonnummer

Telefonnummer

Einfach

Einführung

Du bist jetzt bei LinkLine, einem führenden Kommunikationsunternehmen, das zuverlässige Verbindungen für alle gewährleisten will. Das Team steht vor einer großen Herausforderung: Nutzer reichen Telefonnummern in allen möglichen Formaten ein, mit Bindestrichen, Leerzeichen, Punkten, Klammern und sogar Präfixen. Manche Nummern sind gültig, andere lassen sich unmöglich verwenden.

Deine Aufgabe ist es, dieses Chaos in Ordnung zu bringen. Du bereinigst gültige Nummern und formatierst sie passend für die Verwendung im System. Gleichzeitig erkennst du ungültige Einträge und filterst sie heraus.

Der Erfolg von LinkLine hängt davon ab, dass du Brauchbares von Unbrauchbarem trennen kannst. Bist du bereit, die Herausforderung anzunehmen und dafür zu sorgen, dass die Verbindungen reibungslos laufen?

Anleitung

Bereinige Telefonnummern, damit man ihnen SMS-Nachrichten senden kann.

Der North American Numbering Plan (NANP) ist ein Telefonnummernsystem, das in vielen Ländern Nordamerikas wie den Vereinigten Staaten, Kanada oder Bermuda verwendet wird. Alle NANP-Länder teilen sich dieselbe internationale Ländervorwahl: 1.

NANP-Nummern sind zehnstellige Nummern, die aus einer dreistelligen Numbering Plan Area-Nummer, allgemein bekannt als area code, bestehen, gefolgt von einer siebenstelligen lokalen Nummer. Die ersten drei Ziffern der lokalen Nummer bilden den exchange code, gefolgt von der eindeutigen vierstelligen Nummer, der subscriber number.

Das Format wird üblicherweise so dargestellt

NXX NXX-XXXX

wobei N eine beliebige Ziffer von 2 bis 9 und X eine beliebige Ziffer von 0 bis 9 ist.

Manchmal steht ihnen auch die Ländervorwahl (dargestellt als 1 oder +1) voran.

Deine Aufgabe ist es, unterschiedlich formatierte Telefonnummern zu bereinigen, indem du Satzzeichen und, falls vorhanden, die Ländervorwahl entfernst.

Zum Beispiel sollten die Eingabewerte

  • +1 (613)-995-0253
  • 613-995-0253
  • 1 613 995 0253
  • 613.995.0253

alle dieselbe Ausgabe erzeugen:

6139950253

Hinweis: Da sich diese Übung nur mit Telefonnummern befasst, die in NANP-Ländern verwendet werden, gilt nur 1 als gültige Ländervorwahl.

Ausnahmemeldungen

Manchmal ist es notwendig, eine Ausnahme auszulösen. Wenn du das tust, solltest du immer eine aussagekräftige Fehlermeldung angeben, die zeigt, woher der Fehler kommt. Das macht deinen Code besser lesbar und hilft enorm beim Debugging. In Situationen, in denen du weißt, dass die Fehlerquelle von einem bestimmten Typ ist, kannst du einen der eingebauten Fehlertypen auslösen, solltest aber trotzdem eine aussagekräftige Meldung mitgeben.

Diese Übung verlangt, dass du die raise-Anweisung verwendest, um mehrere ValueErrors zu „werfen“, wenn dem Konstruktor der Klasse PhoneNumber() eine Zahl übergeben wird, die keine gültige Telefonnummer ist. Das umfasst Fehler für den Fall, dass die Vorwahl oder der Vermittlungscode ungültig ist, dass die Nummer zu viele (oder zu wenige) Ziffern hat und dass Satzzeichen oder Buchstaben als Eingabe gegeben werden. Die Tests bestehen nur, wenn du die exception mit raise auslöst und eine Meldung mitgibst.

Um einen ValueError mit einer Meldung auszulösen, schreibe die Meldung als Argument an den exception-Typ:

# 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")
Über GitHub bearbeiten Der Link öffnet sich in einem neuen Fenster oder Tab
Python Exercism

Bereit, mit Telefonnummer zu starten?

Melde dich bei Exercism an, um Python mit 17 Konzepte146 Übungen und echtem menschlichen Mentoring zu lernen und zu meistern, alles kostenlos.