Podstawy Informatyki dla Nauczyciela
Transkrypt
Podstawy Informatyki dla Nauczyciela
Podstawy Informatyki dla Nauczyciela Bożena Woźna-Szcześniak [email protected] Jan Długosz University, Poland Wykład 12 Bożena Woźna-Szcześniak (AJD) Podstawy Informatyki dla Nauczyciela Wykład 12 1 / 30 Jezyk ˛ Python - Instalacja interpretera jezyka ˛ Python W systemie Ubuntu Linux Aby zainstalować Pythona3 wykonaj w terminalu polecenie: $ sudo apt-get install python3 W systemie Debian Linux Aby zainstalować Pythona3 wykonaj w terminalu polecenie: # apt-get install python3 Bożena Woźna-Szcześniak (AJD) Podstawy Informatyki dla Nauczyciela Wykład 12 2 / 30 Jezyk ˛ Python - Instalacja interpretera jezyka ˛ Python W systemie Windows Interpreter Pythona 3 można bezpłatnie pobrać ze strony: http://www.python.org/download/releases/3.1.2/ Pobieramy plik python-3.1.2.msi poprzez link Windows x86 MSI Installer (3.1.2) lub plik python-3.1.2.amd64.msi poprzez link Windows X86-64 MSI Installer (3.1.2) Instalujemy Pythona klikajac na pobrany plik. Bożena Woźna-Szcześniak (AJD) Podstawy Informatyki dla Nauczyciela Wykład 12 3 / 30 Używanie interpretera Pythona Aby uruchomić interpreter Pythona 3 w systemie Linux otwieramy terminal i w konsoli wpisujemy polecenie: [xxx@xxx]$ python3 Pojawi sie˛ krótka informacja o interpreterze oraz znak zachety: ˛ >>> Od tej chwili można wpisywać instrukcje oraz wyrażenia jezyka ˛ Python, np. >>> 1 + 2 Po naciśnieciu ˛ klawisza <Enter> na ekranie zobaczymy obliczony przez interpreter wynik wyrażenia 1 + 2 oraz w nastepnej ˛ linii ponownie znak zachety. ˛ Bożena Woźna-Szcześniak (AJD) Podstawy Informatyki dla Nauczyciela Wykład 12 4 / 30 Zalecana Literatura Python 3 Mark Summerfield. Python 3. Kompletne wprowadzenie do programowania. Wydanie II. Wydawnictwo Helion. Gliwice, czerwiec 2010. Przewodnik po jezyku ˛ Python: http://docs.python.org/py3k/tutorial/ Mark Pilgrim. Dive into Python 3. http://diveintopython3.org/ Bożena Woźna-Szcześniak (AJD) Podstawy Informatyki dla Nauczyciela Wykład 12 5 / 30 Podstawy jezyka ˛ Python W jezyku ˛ Python dostepne ˛ sa˛ nastepuj ˛ ace ˛ rodzaje liczb: całkowite (0, 1, -2, itd.) – typ int boolowskie (tylko wartości False oraz True) – typ bool zmiennoprzecinkowe (3.14, 2.718, itd.) – typ float zespolone (2+3j, 1j, 1+0j) – typ complex Operatory arytmetyczne: dodawanie + oraz odejmowanie − mnożenie ∗ oraz dzielenie / dzielenie całkowite // reszta z dzielenia całkowitego % potegowanie ∗∗ Operatory z operandami typów mieszanych przekształcaja: ˛ operandy całkowite w zmiennoprzecinkowe lub zespolone. operandy zmiennoprzecinkowe w zespolone. Bożena Woźna-Szcześniak (AJD) Podstawy Informatyki dla Nauczyciela Wykład 12 6 / 30 Używanie interpretera Pythona bws@compaq:~$ python3 Python 3.1.3 (r313:86834, Nov 28 2010, 11:28:10) [GCC 4.4.5] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> 1+2 3 >>> 1-2 -1 >>> 3*5 15 >>> 10**2 100 >>> 100/3 33.333333333333336 >>> 100//3 33 >>> 100%3 1 >>> Bożena Woźna-Szcześniak (AJD) Podstawy Informatyki dla Nauczyciela Wykład 12 7 / 30 Operatory porównania Python oferuje standardowy zestaw binarnych operatorów porównania charakteryzujacych sie˛ oczekiwana˛ semantyka: < (mniejszy niż), > (wiekszy ˛ niż), == (równy), ! = (różny) <= (mniejszy lub równy), >= (wiekszy lub równy), Wymienione operatory porównuja wartości obiektów, do których odniesienia zostały wskazane w operatorze. Wynikiem porównania jest wartość typu bool: False albo True. Porównania, które nie maja sensu, beda powodowały zgłoszenie wyjatku. ˛ Bożena Woźna-Szcześniak (AJD) Podstawy Informatyki dla Nauczyciela Wykład 12 8 / 30 Operatory porównania Zmienna w Pythonie jest odniesieniem do obiektu. Aby utworzyć zmienna˛ oraz nadać jej wartość należy użyć instrukcji przypisania: zmienna = wyrazenie Przypisanie do zmiennej nie jest wypisywane przez interpreter. Wartość może być przypisana jednocześnie wielu zmiennym, np. a = b = c = 0 Bożena Woźna-Szcześniak (AJD) Podstawy Informatyki dla Nauczyciela Wykład 12 9 / 30 Zmienne W trybie interaktywnym, ostatnio wydrukowane wyrażenie przypisywane jest do zmiennej _. Oznacza to, że jeśli używa sie˛ Pythona jako biurkowego kalkulatora, łatwym staje sie kontynuowanie obliczeń: >>> 55/67 0.8208955223880597 >>> round(_,3) 0.821 >>> Zmienna _ powinna być traktowana przez użytkownika jak zmienna tylko do odczytu. Przypisanie do zmiennej _ jakiejkolwiek wartości stworzy lokalna˛ zmienna˛ z ta˛ sama˛ nazwa˛ przykrywajac ˛ a˛ wbudowana˛ zmienna˛ _. Bożena Woźna-Szcześniak (AJD) Podstawy Informatyki dla Nauczyciela Wykład 12 10 / 30 Słowa kluczowe Identyfikator to dowolny ciag składajacy sie z liter, cyfr oraz znaków podkreślenia zaczynajacy ˛ sie˛ od litery lub znaku podkreślenia. Spośród wszystkich możliwych nazw zmiennych 33 sa˛ zarezerwowane. Sa˛ to słowa kluczowe jezyka Python. False None True and as assert break class continue def del elif else except Bożena Woźna-Szcześniak (AJD) finally for from global if import in is lambda nonlocal not or pass raise Podstawy Informatyki dla Nauczyciela return try while with yield Wykład 12 11 / 30 Napisy Oprócz liczb Python może również manipulować ciagami ˛ znaków, które można wyrazić na pare sposobów. Moga one być objete ˛ znakami apostrofu lub znakami cudzysłowu: >>> ’Ala ma kota’ ’Ala ma kota’ >>> "Ala ma kota" ’Ala ma kota’ >>> "A\’propos" "A’propos" >>> ’A\’propos’ "A’propos" >>> ’’’A\’propos’’’ "A’propos" >>> ""A\’propos"" File "<stdin>", line 1 ""A\’propos"" ^ SyntaxError: invalid syntax >>> """A\’propos""" "A’propos" Bożena Woźna-Szcześniak (AJD) Podstawy Informatyki dla Nauczyciela Wykład 12 12 / 30 Napisy Interpreter wypisuje wynik działania na napisach w ten sam sposób, w jaki sa one wprowadzane. Sa˛ one objete ˛ apostrofami lub cudzysłowami i zawieraja˛ ewentualnie inne znaki poprzedzone znakiem ukośnika (\), tak aby w sposób dokładny pokazać zawartość ciagu. ˛ Ciag ˛ znaków objety ˛ jest para cudzysłowów, jeżli zawiera tylko apostrofy, w przeciwnym wypadku objety jest para apostrofów. Funkcja print, które zostanie opisane później, może zostać użyta do wypisywania ciagów znaków bez okalajacych je cudzysłowów i znaków cytowania. Ciagi znaków moga być sklejane za pomoca operatora + i powielane za pomoca operatora ∗. Bożena Woźna-Szcześniak (AJD) Podstawy Informatyki dla Nauczyciela Wykład 12 13 / 30 Napisy Ciagi znaków moga być indeksowane. Pierwszy znak w ciagu ma indeks (numer porzadkowy) 0. Nie istnieje osobny typ obejmujacy ˛ pojedyncze znaki − znak jest po prostu napisem o długości jeden. Ciagi znaków w Pythonie nie moga˛ być modyfikowane. Przypisanie do zaindeksowanej pozycji w ciagu powoduje powstanie błedu. Podciagi ˛ znaków moga˛ zostać wyspecyfikowane za pomoca˛ notacji tzw. wykrawania: dwóch indeksów przedzielonych dwukropkiem: >>> "Ala ma kota" ’Ala ma kota’ >>> _[3:6] ’ ma’ >>> "radość"[0:3] ’rad’ >>> "radość"[2:6] ’dość’ Bożena Woźna-Szcześniak (AJD) Podstawy Informatyki dla Nauczyciela Wykład 12 14 / 30 Napisy Indeksy wykrawania posiadaja nastepuj ˛ ace ˛ parametry domyślne: pominiety ˛ pierwszy indeks posiada domyślna˛ wartość zero, pominiety ˛ drugi domyślnie równy jest długości łańcucha znaków, którego dotyczy wykrawanie. >>> "radość"[:6] ’radość’ >>> "radość"[2:] ’dość’ >>> "radość"[:3] ’rad’ >>> "radość"[3:] ’ość’ >>> "radość"[:3]+"radość"[3:] ’radość’ indeks, który jest zbyt duży, zastepowany ˛ jest długościa˛ łańcucha, ograniczenie górne, które jest mniejsze od ograniczenia dolnego, powoduje powstanie pustego napisu. Bożena Woźna-Szcześniak (AJD) Podstawy Informatyki dla Nauczyciela Wykład 12 15 / 30 Napisy Aby wyznaczyć podciag, ˛ liczac ˛ od prawej strony ciagu znaków, używa sie indeksów bedacych liczbami ujemnymi: >> "radość"[-1] ’ć’ >>> "radość"[-2] ’ś’ >>> "radość"[-3] ’o’ >>> "radość"[:-1] #Wszystkie, prócz ostatniego ’radoś’ Ujemne wykrojenia, które przekraczaja˛ ograniczenia ciagu ˛ sa˛ skracane. Wbudowana w interpreter funkcja len zwraca długość łańcucha: >>> len("radość"[1:]) 5 Bożena Woźna-Szcześniak (AJD) Podstawy Informatyki dla Nauczyciela Wykład 12 16 / 30 Pierwsze kroki w programowaniu Przykład (Ciag ˛ Fibonaciego) >>> a = 0 >>> b = 1 >>> while a<10: ... print(a) ... a=b ... b=a+b ... 0 1 2 4 8 >>> Bożena Woźna-Szcześniak (AJD) Podstawy Informatyki dla Nauczyciela Wykład 12 17 / 30 Pierwsze kroki w programowaniu Uwagi do powyższego przykładu Ciało petli ˛ jest wciete: ˛ indentacja (wcinanie) jest sposobem na grupowanie instrukcji. W chwili, gdy wprowadza sie˛ jakaś ˛ instrukcje˛ złożona˛ w czasie sesji interpretera Pythona, trzeba zakończyć ja˛ pustym wierszem. Ważne jest, aby każdy wiersz należacy ˛ do tej samej grupy instrukcji, był wciety ˛ o taka sama liczbe spacji lub znaków tabulacji. Funkcja print() wypisuje na standardowym wyjściu wartości wyrażeń podanych w nawiasach. Łańcuchy znaków wypisywane sa˛ bez cudzysłowów, a pomiedzy ˛ wartościami wyrażeń wstawiane sa˛ spacje, tak aby można było ładnie sformatować pojawiajacy ˛ sie˛ napis. Bożena Woźna-Szcześniak (AJD) Podstawy Informatyki dla Nauczyciela Wykład 12 18 / 30 Pierwsze kroki w programowaniu >>> print("ala") ala >>> print(’ala’) ala >>> x = 8 * 8 >>> print(’Wartościa˛ x jest’, x) Wartościa˛ x jest 64 >>> x = 8 * 8.4 >>> print(’Wartościa˛ x jest’, x) Wartościa˛ x jest 67.2 >>> a = 6 >>> b = 10 >>> print(a, ’+’, b , ’=’, a+b) 6 + 10 = 16 Bożena Woźna-Szcześniak (AJD) Podstawy Informatyki dla Nauczyciela Wykład 12 19 / 30 Pierwsze kroki w programowaniu Przykład (Ciag ˛ Fibonaciego) #!/usr/bin/env python3 a = 0 b = 1 while a < 10: print (a) a = b b = a+b Uwagi do powyższego przykładu Ciało petli ˛ jest wciete: ˛ indentacja (wcinanie) jest sposobem na grupowanie instrukcji. Bożena Woźna-Szcześniak (AJD) Podstawy Informatyki dla Nauczyciela Wykład 12 20 / 30 Pierwsze kroki w programowaniu Przykład (Ciag ˛ Fibonaciego) #!/usr/bin/env python3 a,b = 0, 1 while a < 10: print (a) a,b = b,a+b Uwagi do powyższego przykładu Pierwsza linia niebed ˛ aca ˛ komentarzem zawiera tzw. wielokrotne przypisanie: zmiennym a i b przypisuje sie˛ jednocześnie wartości 0 i 1. W ostatniej linii zastosowano jeszcze raz ten mechaniz. Wyrażenia po prawej stronie sa obliczane od lewej do prawej. Bożena Woźna-Szcześniak (AJD) Podstawy Informatyki dla Nauczyciela Wykład 12 21 / 30 Instrukcja if #!/usr/bin/env python3 x = int(input("Prosze podac liczbe: ")) if x < 0: x = 0 print(’Ujemna zmieniła sie na zero’) elif x == 0: print(’Zero’) elif x == 1: print(’Jeden’) else: print(’Wiecej’) Uwagi do powyższego przykładu Fraza elif może wystapić ˛ zero lub wiecej ˛ razy. Fraza else może nie wystapić ˛ lub wystapić ˛ jeden raz na końcu instrukcji. Bożena Woźna-Szcześniak (AJD) Podstawy Informatyki dla Nauczyciela Wykład 12 22 / 30 Instrukcja if ./if.py Prosze podac liczbe: -1 Ujemna zmieniła sie na zero ./if.py Prosze podac liczbe: 0 Zero ./if.py Prosze podac liczbe: 1 Jeden ./if.py Prosze podac liczbe: 2 Wiecej Bożena Woźna-Szcześniak (AJD) Podstawy Informatyki dla Nauczyciela Wykład 12 23 / 30 Instrukcja for Instrukcja for Pythona iteruje poprzez elementy dowolnej sekwencji (listy lub łańcucha), w kolejności w jakiej te elementy wystepuj ˛ a˛ w sekwencji. >>> a = [’kot’, ’skacze’, ’przez’, ’okno’] >>> for x in a: ... print(x,len(x)) ... kot 3 skacze 6 przez 5 okno 4 Bożena Woźna-Szcześniak (AJD) Podstawy Informatyki dla Nauczyciela Wykład 12 24 / 30 Instrukcja for >>> a = [1,2,3,4,5,6,7,8,9,10] >>> for x in a: ... print(x) ... 1 2 3 4 5 6 7 8 9 10 Bożena Woźna-Szcześniak (AJD) Podstawy Informatyki dla Nauczyciela Wykład 12 25 / 30 Instrukcja for >>> a = [1,2,3,4,5,6,7,8,9,10] >>> for x in a: ... if x%2==0: ... print(x) ... 2 4 6 8 10 Bożena Woźna-Szcześniak (AJD) Podstawy Informatyki dla Nauczyciela Wykład 12 26 / 30 Instrukcja for Funkcja range() Jeżli zaszła potrzeba iteracji określonej zakresem liczbowym, można użyć wbudowanej w interpreter funkcji range(). Wynikiem jej działania jest iterator dostarczajacy ˛ kolejne liczby szeregu arytmetycznego z wybranego zakresu. >>> for x in range(5): ... print(x) ... 0 1 2 3 4 Bożena Woźna-Szcześniak (AJD) Podstawy Informatyki dla Nauczyciela Wykład 12 27 / 30 Instrukcja for Funkcja range() Funkcja range może być używana z jednym, dwoma lub trzema argumentami. >>> a = [’kot’, ’skacze’, ’przez’, ’okno’] >>> for x in range(len(a)): ... print(x,a[x]) ... 0 kot 1 skacze 2 przez 3 okno Bożena Woźna-Szcześniak (AJD) Podstawy Informatyki dla Nauczyciela Wykład 12 28 / 30 Instrukcja for Instrukcje petli ˛ posiadaja˛ klauzule˛ else: jest ona wykonywana w momencie zakończenia działania petli: przy wyczerpaniu sie˛ listy (petla ˛ dojdzie do końca) gdy warunek petli ˛ zwraca wartość fałszu (petla ˛ while) #!/usr/bin/env python3 for n in range(2, 10): for j in range(2, n): if n % j == 0: print(n, ’=’, j, ’*’, n // j) break else: print(n, ’jest pierwsza ’) Bożena Woźna-Szcześniak (AJD) Podstawy Informatyki dla Nauczyciela Wykład 12 29 / 30 Instrukcja for ./for.py 2 jest pierwsza 3 jest pierwsza 4 = 2 * 2 5 jest pierwsza 6 = 2 * 3 7 jest pierwsza 8 = 2 * 4 9 = 3 * 3 Bożena Woźna-Szcześniak (AJD) Podstawy Informatyki dla Nauczyciela Wykład 12 30 / 30