Weryfikacja nazwy użytkownika i hasła

Zadanie 14 z 17 · rozdział 6Trudność: 2 z 3funkcjewhilestringporównania

Treść zadania

Napisz dwie funkcje:

  1. pobierz_dane() — wczytuje nazwę użytkownika (login) i hasło, po czym zwraca je jako parę (login, haslo).
  2. sprawdz_dane(poprawny_login, poprawne_haslo) — w pętli wczytuje kolejne próby logowania (login i hasło), dopóki nie będą identyczne z przekazanymi danymi.
    Po każdej nieudanej próbie wypisuje Błędne dane. Spróbuj ponownie., a po udanej — Dane poprawne. Dostęp przyznany. i kończy działanie.

Program najpierw wywołuje pobierz_dane(), aby ustalić poprawne dane, a potem przekazuje je do sprawdz_dane(...).

W tym zadaniu funkcje same wczytują dane (input()), a sprawdz_dane sama wypisuje komunikaty.

Dane wejściowe

  • 1. linia: poprawny login
  • 2. linia: poprawne hasło
  • kolejne linie: próby logowania — po dwie linie na próbę (login, potem hasło)

Dane wyjściowe

Dla każdej nieudanej próby linia:

Błędne dane. Spróbuj ponownie.

a na końcu (po pierwszej udanej próbie) linia:

Dane poprawne. Dostęp przyznany.

Ograniczenia

  • Jedna z prób jest poprawna — program nie musi obsługiwać końca danych bez udanej próby.

Uwagi

  • Próba jest udana tylko wtedy, gdy zgadzają się oba pola: login i hasło.
  • Porównanie uwzględnia wielkość liter (Admin to nie to samo co admin).

Przykład

Wejście
admin
1234
root
pass
admin
1234
Wyjście
Błędne dane. Spróbuj ponownie.
Dane poprawne. Dostęp przyznany.

Poprawne dane to admin / 1234. Pierwsza próba (root / pass) jest błędna, druga — poprawna.

Potrzebujesz teorii?

Zasady obowiązujące w rozdziale 6

Zadania w tym rozdziale uczą pisania funkcji: definiowania ich instrukcją def, przekazywania argumentów i zwracania wyniku instrukcją return.

Konwencje wspólne:

  • Każde zadanie (i każdy podpunkt a, b, c…) to osobny program: czyta standardowe wejście i wypisuje wynik na standardowe wyjście.
  • Treść mówi, jaką funkcję napisać (nazwa, parametry, zwracana wartość). Program wczytuje dane, wywołuje funkcję i wypisuje zwrócony przez nią wynik.
  • „Funkcja zwraca” oznacza użycie instrukcji return. Funkcja nie wczytuje danych i nie wypisuje wyniku sama — robi to reszta programu (chyba że treść zadania mówi inaczej).
  • Sekcja „Kod startowy” zawiera gotowy szkielet: nagłówek funkcji oraz linie, które wczytują dane i wypisują wynik. Wystarczy uzupełnić ciało funkcji.
  • Liczby na wejściu podane są w osobnych liniach — wczytuj je dokładnie w podanej kolejności.
  • Program nie wypisuje komunikatów typu „Podaj liczbę:”.

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
user
pass
user
pass
Oczekiwane wyjście
Dane poprawne. Dostęp przyznany.

Test 2

Nie uruchomiono
Wejście
alice
qwerty
alice
123
Alice
qwerty
alice
qwerty
Oczekiwane wyjście
Błędne dane. Spróbuj ponownie.
Błędne dane. Spróbuj ponownie.
Dane poprawne. Dostęp przyznany.

Test 3

Nie uruchomiono
Wejście
jan
kot
kot
jan
jan
kot
Oczekiwane wyjście
Błędne dane. Spróbuj ponownie.
Dane poprawne. Dostęp przyznany.

Test 4

Nie uruchomiono
Wejście
ola
haslo1
ola
haslo
ola
haslo2
ola
HASLO1
ola
haslo1
Oczekiwane wyjście
Błędne dane. Spróbuj ponownie.
Błędne dane. Spróbuj ponownie.
Błędne dane. Spróbuj ponownie.
Dane poprawne. Dostęp przyznany.
Uruchom z własnymi danymi