Inteligentny menedżer kontaktów
Część sekcji Logika i przepływ programu ścieżki Python w Coddy. Lekcja 76 z 78.
Wyzwanie
ŚredniUtwórz funkcję o nazwie organize_contacts, która przetwarza listę słowników kontaktów, aby utworzyć uporządkowaną bazę kontaktów.
Każdy słownik kontaktu na liście wejściowej ma następujące klucze:
name: Imię i nazwisko osobyemail: Adres e-mail osobyphone: Numer telefonu osoby
Twoja funkcja powinna:
- Usuwać zduplikowane kontakty (kontakty z tym samym adresem e-mail lub numerem telefonu), zachowując pierwsze wystąpienie
- Standaryzować wszystkie adresy e-mail, zamieniając je na małe litery
- Odfiltrowywać kontakty z nieprawidłowymi adresami e-mail
- Odfiltrowywać kontakty z nieprawidłowymi numerami telefonu
- Zwracać listę uporządkowanych słowników kontaktów
Zasady walidacji:
- Prawidłowy adres e-mail: musi zawierać „@” i „.” oraz nie może zawierać spacji
- Prawidłowy numer telefonu: musi zawierać dokładnie 10 cyfr (zignoruj znaki niebędące cyframi, takie jak myślniki lub nawiasy)
Do czyszczenia numerów telefonów użyj metody str.isdigit() języka Python, aby wyodrębnić z numerów telefonów wyłącznie cyfry. Ta metoda zwraca True, jeśli znak jest cyfrą (0-9), a w przeciwnym razie zwraca False, dzięki czemu doskonale nadaje się do odfiltrowywania znaków niebędących cyframi.
Przykładowe dane wejściowe:
contacts = [
{"name": "John Doe", "email": "john@email.com", "phone": "123-456-7890"}
]Oczekiwany wynik:
[
{"name": "John Doe", "email": "john@email.com", "phone": "1234567890"}
]Spróbuj swoich sił
def organize_contacts(contact_list):
# Tu wpisz swoje rozwiązanie
# 1. Utwórz funkcje pomocnicze do walidacji
# - Funkcja do sprawdzania poprawności formatu adresu e-mail
# - Funkcja do czyszczenia i sprawdzania poprawności numerów telefonów
# 2. Przetwórz każdy kontakt
# - Oczyść adres e-mail (zamień litery na małe) i numer telefonu (pozostaw tylko cyfry)
# - Sprawdź, czy adres e-mail i numer telefonu są poprawne
# - Sprawdź, czy występują duplikaty
# 3. Zwróć oczyszczoną listę kontaktów
passWszystkie lekcje w sekcji Logika i przepływ programu
1Odkrywanie zmiennych
StałeWielokrotne przypisania zmiennychZamiana zmiennychZmienne zastępczeZaokrąglanie liczbKonwersja na listę4Aplikacja książki kontaktów
Wyświetl menuDodaj kontakt7Zbiory — część 2
Działania matematyczne — część 1Działania matematyczne — część 2Powtórka — poszukiwanie skarbówPodzbiory i nadzbioryIterowanie po zbiorachPowtórka — śledzenie turnieju10Podstawowe składanie list
SkładniaTworzenie prostych listDodawanie warunkówUżywanie agregacji danychPowtórka – dom listPowtórka – elementy wolności13System zarządzania zapasami
Przegląd projektuDodawanie produktu2Słowniki — część 1
Czym jest słownik?Tworzenie słownikaDostęp do wartościModyfikowanie słownikówPowtórzenie — menedżer przepisów5Zaawansowane podejmowanie decyzji
Operator warunkowySprawdzanie przynależnościSprawdzanie tożsamościBłędy wcięćPowtórka — filtr wakacyjny8Menedżer rekordów uczniów
Przegląd projektuDodawanie ucznia11Zaawansowane funkcje
Zwracanie wielu wartościFunkcje lambda — część 1Funkcje lambda — część 2Wyzwanie podsumowujące — sortowanie z lambdaFunkcje rekurencyjne — część 1Funkcje rekurencyjne — część 2Podsumowanie — suma elementów zagnieżdżonej listy14Funkcje wyższego rzędu
Funkcja mapFunkcja filterPodsumowanie – walidator adresów e-mailPodsumowanie – procesor liczb3Słowniki, część 2
Metody słownikówZagnieżdżone słownikiSprawdzanie kluczyIterowanie po słownikachPowtórzenie — licznik częstotliwości9Zaawansowana agregacja danych
Używanie sumyZnajdowanie minimum i maksimumEfektywne sortowanie danychPowtórka – sortowanie słowników12Podstawowa obsługa błędów
Czym jest obsługa błędów?Blok try i exceptObsługa wielu wyjątkówPodsumowanie – błędy w koszyku zakupowymPoćwicz samodzielnie: Kompilator Python online