Sprawdź poprawność adresu e-mail
Treść zadania
Wczytaj napis i sprawdź, czy jest poprawnym adresem e-mail według poniższych (uproszczonych) reguł.
- Adres ma postać
identyfikator@domena: zawiera dokładnie jeden znak@, a identyfikator i domena są niepuste. - Identyfikator składa się wyłącznie z:
- liter
a–ziA–Z(bez polskich znaków), - cyfr
0–9, - znaków specjalnych
!#$%&'*+-/=?^_``{|}~`, - kropek
.— ale kropka nie może być pierwszym ani ostatnim znakiem identyfikatora i nie mogą stać dwie kropki obok siebie.
- liter
- Domena składa się wyłącznie z liter
a–ziA–Z, cyfr0–9, kropek.i myślników-, przy czym:- zawiera co najmniej jedną kropkę,
- nie zaczyna się ani nie kończy kropką ani myślnikiem,
- żadne dwa znaki spośród
.i-nie stoją obok siebie (niedozwolone są np...,--,.-,-.).
- Żadne inne znaki (np. spacje) nie mogą wystąpić w adresie.
Dane wejściowe
- 1. linia: napis do sprawdzenia
Dane wyjściowe
Prawda— jeśli napis jest poprawnym adresem e-mail,Fałsz— w przeciwnym razie.
Uwagi
- Do sprawdzenia, czy cały napis pasuje do wzorca, służy
re.fullmatch(wzorzec, napis). - Fragment „ciąg znaków bez kropek, a potem dowolnie wiele razy: kropka i znowu ciąg znaków” zapiszesz jako
X+(\.X+)*, gdzieXto klasa dozwolonych znaków. - W klasie znaków
[...]myślnik umieść na końcu albo poprzedź go\, inaczej oznacza zakres (np.+-/to zakres od+do/).
Przykłady
adam@gmail.com
Prawda
jan..nowak@poczta.pl
Fałsz
W identyfikatorze stoją obok siebie dwie kropki.
Potrzebujesz teorii?
Zasady obowiązujące w rozdziale 23
Poniższe zadania polegają na wczytywaniu danych ze standardowego wejścia (stdin) i wypisywaniu wyniku na standardowe wyjście (stdout). Rozwiązuj je za pomocą wyrażeń regularnych (moduł re).
Każde zadanie jest osobnym, niezależnym programem.
Konwencje wspólne:
- Każda wartość wejściowa znajduje się w osobnej linii — wczytuj je dokładnie w podanej kolejności.
- Tekst wielowierszowy jest poprzedzony linią z liczbą jego wierszy
n— wczytaj go, wywołującinput()nrazy. - Dla wartości logicznych wypisuj dokładnie
PrawdalubFałsz. - Wielkość liter ma znaczenie, chyba że zadanie mówi inaczej.
- Słowo to najdłuższy ciąg znaków dopasowywanych przez
\w, czyli liter (także polskich), cyfr i znaku podkreślenia_. Każdy inny znak — spacja, interpunkcja, myślnik — rozdziela słowa, np.biało-czerwonato dwa słowa:białoiczerwona. Granicę słowa w wyrażeniu regularnym oznacza\b. - Program nie wypisuje komunikatów typu „Podaj tekst:”. Tekst podany w
input("…")jest ignorowany przez sprawdzarkę.
Zadanie pochodzi z otwartego zbioru Nauka-Programowania (z rozwiązaniami wzorcowymi). Zgłoś błąd w treści lub testach.
Przywrócono Twój zapisany kod.
Python uruchomi się w przeglądarce przy pierwszym teście.
Kod zapisuje się automatycznie w tej przeglądarce. Tab wstawia wcięcie; aby opuścić edytor klawiaturą, naciśnij Esc, a potem Tab.
Testy
Program dostaje „Wejście” przez input() i musi wypisać „Oczekiwane wyjście”. Liczby porównywane są z tolerancją 0,01, a tekst podany w input("…") nie jest sprawdzany.
Test 1
Nie uruchomionojan.kowalski@poczta.example.pl
Prawda
Test 2
Nie uruchomionoa@b.c
Prawda
Test 3
Nie uruchomionofirst+last/{x}~@sub-domain.example.com
Prawda
Test 4
Nie uruchomionoo'connor@my-mail.co.uk
Prawda
Test 5
Nie uruchomiono1234567890@123.123.123.123
Prawda
Test 6
Nie uruchomiono.jan@example.com
Fałsz
Test 7
Nie uruchomionojan.@example.com
Fałsz
Test 8
Nie uruchomionojan@example
Fałsz
Test 9
Nie uruchomionojan@-example.com
Fałsz
Test 10
Nie uruchomionojan@example-.com
Fałsz
Test 11
Nie uruchomionojan@example..com
Fałsz
Test 12
Nie uruchomionojan@example.com.
Fałsz
Test 13
Nie uruchomionojan kowalski@example.com
Fałsz
Test 14
Nie uruchomionojan@ex@ample.com
Fałsz
Test 15
Nie uruchomiono@example.com
Fałsz
Test 16
Nie uruchomionojan@
Fałsz
Test 17
Nie uruchomionożaneta@example.com
Fałsz
Test 18
Nie uruchomionojan@exa_mple.com
Fałsz