Podstawy Pythona Krzysztof Gdawiec Instytut Informatyki Uniwersytet Śląski
Słownik jest typem mutowalnym. Każdy element to para: klucz wartość. W celu stworzenia słownika pary klucz wartość umieszczamy pomiędzy nawiasami klamrowymi i oddzielamy przecinkami. Parę klucz wartość podajemy w postaci: klucz : wartosc. 1 d1 = {"aa" : 1, "b" : 2.0, "cc" : 1} 2 d2 = {1 : 10, 2 : 10, 3 : 10} 3 d3 = {10 : [1, 2], 11 : (2, 3), 12 : 3} 4 d4 = {} Jeśli chcemy odczytać wartość ze słownika o danym kluczu, to używamy klucza pomiędzy nawiasami kwadratowymi, np. d1["aa"]. Jeśli chcemy zmienić wartość w słowniku o danym kluczu, to używamy operatora przypisania wraz z odwołaniem się do elementu, np. d1["aa"] = 10.
Po utworzeniu słownika możemy do niego dodawać nowe pary klucz wartość. Robimy to w taki sam sposób jak modyfikację wartości, tzn. d4[klucz] = wartosc. Mając słownik możemy odczytać listę kluczy, d4.keys(), oraz listę wartości, d4.values(), gdzie d4 to słownik. Do sprawdzenia czy dany klucz istnieje w słowniku możemy wykorzystać wyrażenie: klucz in d4.keys(). Wyrażenie zwróci True jeśli klucz jest wśród kluczy słownika, a False w przeciwnym przypadku.
Definiowanie funkcji w Pythonie jest bardzo proste: 1 def nazwa_funkcji( args ) : 2 """string dokumentujacy""" 3 instrukcje Argumenty oddzielane są przecinkami i są przekazywane do funkcji przez referencję. Możemy nadawać wartości domyślne argumentom: 1 def foo( arg1, arg2, arg3 = val1, arg4 = val2 ) : Argumenty z wartościami domyślnymi muszą znajdować się na końcu listy argumentów.
Do zwracania wartości z funkcji służy polecenie return. Możemy jednocześnie zwrócić kilka wartości. W tym celu możemy użyć m.in. krotki, np. return (l1, d2, 3). Pisząc funkcje niekiedy chcemy, aby argumenty miały określony typ. Możemy sprawdzić czy wartość przekazana do funkcji jest typu jaki chcemy w następujący sposób (v zmienna przekazana do funkcji): 1 if type( v ) == type( 1.0 ) :
W Pythonie podobnie jak w innych językach programowania zmienne zdefiniowane poza wszystkimi funkcjami to zmienne globalne. Do zmiennych globalnych mamy dostęp w każdej funkcji. Możemy odczytywać ich wartość, ale w przypadku gdy chcemy zmienić wartość takiej zmiennej to na początku funkcji musimy dodać słowo global, po którym umieszczamy nazwy zmiennych globalnych (oddzielone przecinkami), np. 1 counter = 0 2 3 def foo() : 4 global counter 5 6 counter += 1
Na zajęciach przydatna będzie umiejętność czytania/zapisu z/do plików tekstowych. W obu przypadkach pierwsze co musimy zrobić to otworzyć plik. Następnie wykonujemy operacje na plikach i na końcu zamykamy plik. Do otwarcia pliku służy funkcja: 1 f = open( path, access ) path jest ścieżką do pliku, który chcemy otworzyć, access jest informacją w jaki sposób chcemy go otworzyć: "w" do zapisu, "r" do odczytu, "a" dołączanie, "r+" zarówno do odczytu i zapisu. Do zamknięcia pliku służy funkcja: 1 f.close()
Zapisu tekstu do pliku f możemy dokonać następująco: 1 f.write(text) Odczytu tekstu z pliku f możemy dokonać na trzy sposoby: 1 # odczytuje tylko jedna linie 2 l = f.readline() 1 # odczytuje wszystkie linie 2 l = f.readlines() 1 # odczytuje caly plik 2 l = f.read()
Bardzo przydatną biblioteką do obliczeń numerycznych i macierzy jest NumPy. 1 import numpy 2 3 m = numpy.array( [[1, 2, 3], [4, 5, 6]] ) 4 5 print m[0, 1] # zwraca 2 6 print m[1, :] # zwraca 2. wiersz 7 print m[:, 1] # zwraca 2. kolumne W NumPy mamy różne funkcje tworzące standardowe macierze: zeros((n1, n2,..., nk)), ones((n1, n2,..., nk)), identity(n).
Przydatne funkcje macierzowe z NumPy: m.shape zwraca wymiary macierzy, m.size zwraca liczbę elementów macierzy, m.real, m.imag zwraca część rzeczywistą i urojoną macierzy, m.t zwraca macierz transponowaną, m.tolist() zwraca listę ze współczynnikami macierzy, m.flatten() zwraca jednowymiarową listę ze współczynnikami macierzy. Pełna lista funkcji macierzowych i do obliczeń numerycznych znajduje się w dokumentacji biblioteki NumPy.