Strona główna » Poradniki » Logomocja » Python i Żółw » Wczytywanie Danych
OK
 

Wczytywanie Danych

Wstęp

Okna dialogowe pozwalają na komunikację z użytkownikiem, aby ten wprowadził jakąś liczbę, albo tekst. Na podstawie przekazanej wartości program może zmienić np. rozmiar rysowanego rysunku. W tym artykule zostaną przedstawione dwa sposoby na wczytanie danych od użytkownika w module turtle.

Implementacja

Przygotowanie

Przedstawione dalej textinput() oraz numinput() są wykonywane bezpośrednio na oknie, a nie na żółwiu. W celu pobrania ekranu należy wpisać poniższą linijkę, aby póżniej można było wywołać metody poprzez odwołanie do ekranu.

  1. ekran = turtle.Screen()

Wczytywanie tekstu

Zazwyczaj wszystkie dane wczytywane od użytkownika, niezależnie od języka platformy czy języka programowania, jest traktowane jako tekst. Takie dane można następnie odpowiednio skonwertować, aby uzyskać wartości liczbowe, znaki itd. W celu wyświetlenia okna dialogowego do którego użytkownik może wpisać tekst należy użyć metody textinput(). Obowiązkowo należy podać kolejno dwa argumenty: tytuł okna oraz treść komunikatu. Jeśli użytkownik zamknie okno inaczej niż przez potwierdzenie "OK" to zostanie zwrócona wartość None.

Przykładowo jeśli chcemy wczytać od użytkownika długość boku kwadratu to należy wpisać:

  1. bok = ekran.textinput("Kwadrat", "Podaj rozmiar boku")

W podanym przykładzie zostanie wyświetlone następujące okno:

Wartość, która zostanie wpisana w pole tekstowe zostanie zwrócona i zapisana do zmiennej bok. Należy jednak pamiętać, że wartość zostanie potraktowana jako tekst, więc w dalszej części kodu należy skonwertować na liczbę np. poleceniem int. Z tego powodu lepiej skorzystać z dedykowanego okna do wczytywania liczb.

Wczytywanie liczby

Drugie okno dialogowe otwiera się poleceniem numinput(). W wyniku otrzymuje się wartość tekstową od razu skonwertowaną na liczbę. Dodatkową zaletą jest fakt, że okno nie pozwoli na akceptację wyrażenia, które nie jest liczbą. Takie okno dialogowe można wywołać z takimi samymi argumentami jak okno dialogowe do wprowadzania tekstu.

Opcjonalnie można dopisać trzy kolejne argumenty, które kolejno oznaczać będą: domyślną wartość, minimalną wartość oraz maksymalną wartość. Wtedy okno dialogowe po otworzeniu okna wpisze domyślną wartość i nie pozwoli jej zmienić na wartość poza przekazanym zakresem minimum / maksimum. Użytkownik otrzyma wtedy komunikat, że wprowadzona wartość nie należy do zakresu i jaka wartość minimalna / maksymalna jest akceptowana.

Przykładowo pozwala to ograniczyć możliwości wyboru wielkości boku.

  1. bok = ekran.numinput("Kwadrat", "Podaj rozmiar boku", 100, 50, 350)

W tym przypadku przyjmujemy, że minimalny bok kwadratu wynosi 50, a maksymalny 350, ponieważ nie wychodzi wtedy poza ramy ekranu. Jednak domyślnie użytkownik ma wpisaną wartość 100.

Testowanie funkcji

W celu przetestowania wczytywania wartości można skorzystać z poniższego fragmentu kodu, który sprawdza czy wartość została wpisana prawidłowo, a następnie rysuje kwadrat o zadanej długości.

  1. if bok != None:
  2.   bok = int(bok)
  3.   for i in range(4):
  4.     żółw.fd(bok)
  5.     żółw.rt(90)

Zadania

Zadanie 1

Napisz program, który wczyta od użytkownika dwie liczby a i b, a następnie narysuje prostokąt, który będzie rozmiarów a×b. Ustal zakres rozmiaru boku prostokąta oraz wartość domyślną. Pamiętaj, aby sprawdzić czy użytkownik podał obydwie wartości! Przetestuj działanie skryptu.