Sprawdź poprawność hasła

Zadanie 2 z 13 · rozdział 23Trudność: 2 z 3regexstringwalidacja

Treść zadania

Wczytaj hasło i sprawdź, czy spełnia wszystkie warunki:

  1. ma od 8 do 20 znaków (włącznie),
  2. zawiera co najmniej jedną małą literę a–z,
  3. zawiera co najmniej jedną wielką literę A–Z,
  4. zawiera co najmniej jedną cyfrę 0–9,
  5. zawiera co najmniej jeden znak specjalny spośród:
    ! # $ % & ' * + - / = ? ^ _ ` ` { | } ~`.

Hasło może zawierać także inne znaki (np. spację, @ albo ą). Są one dozwolone, ale nie liczą się do warunków 2–5: ą nie jest literą z zakresu a–z, a @ nie należy do listy znaków specjalnych.

Dane wejściowe

  • 1. linia: hasło

Dane wyjściowe

  • Prawda — jeśli hasło spełnia wszystkie warunki,
  • Fałsz — w przeciwnym razie.

Uwagi

  • Każdy z warunków 2–5 sprawdzisz osobnym re.search(), np. re.search(r"[a-z]", haslo).

Przykłady

Wejście
abc1234
Wyjście
Fałsz

Hasło jest za krótkie, nie ma wielkiej litery ani znaku specjalnego.

Wejście
Tajne_Haslo7
Wyjście
Prawda

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ąc input() n razy.
  • Dla wartości logicznych wypisuj dokładnie Prawda lub Fał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-czerwona to dwa słowa: biało i czerwona. 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.

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 uruchomiono
Wejście
Abcdef1!
Oczekiwane wyjście
Prawda

Test 2

Nie uruchomiono
Wejście
Abcde1!
Oczekiwane wyjście
Fałsz

Test 3

Nie uruchomiono
Wejście
Abcdefghijklmnop12#$
Oczekiwane wyjście
Prawda

Test 4

Nie uruchomiono
Wejście
Abcdefghijklmnop123#$
Oczekiwane wyjście
Fałsz

Test 5

Nie uruchomiono
Wejście
abcdefg1!
Oczekiwane wyjście
Fałsz

Test 6

Nie uruchomiono
Wejście
ABCDEFG1!
Oczekiwane wyjście
Fałsz

Test 7

Nie uruchomiono
Wejście
Abcdefgh!
Oczekiwane wyjście
Fałsz

Test 8

Nie uruchomiono
Wejście
Abcdefg12
Oczekiwane wyjście
Fałsz

Test 9

Nie uruchomiono
Wejście
Haslo123@
Oczekiwane wyjście
Fałsz

Test 10

Nie uruchomiono
Wejście
ĄĘÓ1abc!x
Oczekiwane wyjście
Fałsz

Test 11

Nie uruchomiono
Wejście
Zażółć1~gęślą
Oczekiwane wyjście
Prawda

Test 12

Nie uruchomiono
Wejście
Moje haslo 1-ok
Oczekiwane wyjście
Prawda
Uruchom z własnymi danymi