Język skryptowy: Laboratorium 1. Wprowadzenie do języka Python Język PYTHON Podstawowe informacje Python to język skryptowy, interpretowany - co oznacza, że piszemy skrypt, a następnie wykonujemy go za pomocą interpretera. Istnieją dwie główne wersje Pythona, Python 2 i Python 3. Na zajęciach laboratoryjnych wykorzystywana będzie wersja 2, ze względu na jej popularność i wsparcie. Przez skrypt rozumiemy plik tekstowy o rozszerzeniu.py. By go wykonać wydajemy polecenie: python nazwa_pliku.py Hello, World! Do wypisywania łańcuchów tekstowych w Pythonie służy polecenie print. Zapisz podany kod jako hello_world.py i uruchom go opisaną wcześniej metodą: #!/usr/bin/env python print """Hello world""" print "Hello again" print 'Hello again' W Pythonie napisy zamykane są poprzez pojedynczy lub podwójny cudzysłów. Istnieje możliwość ograniczenia tekstu potrójnymi cudzysłowami (dowolnego typu) - tekst będzie mógł wtedy zajmować więcej niż jeden wiersz. Kolejny skrypt prezentuje wykorzystanie operatora indeksowania. Wykonaj go w środowisku Pythona: #!/usr/bin/env python a = "Welcome to Python's world!" i = 0 j = 7 print a[0] print a[i:j]
Wyjściem skryptu jest określony fragment łańcucha tekstowego, który jest ograniczony półotwartym przedziałem. Zwróć uwagę, że takie indeksowanie pomija element a[j]. Indeksowanie rozpoczynamy od 0. Operatorem konkatenacji (łączenia) jest +. dopuszczalnymi indeksami są nie tylko dodatnie, ale i ujemne liczby całkowite. Oznaczają one dostęp do końcowych elementów tablicy. Wykonaj poniższy kod: print a[-2] print a[-5:] Wcięcia Python wykorzystuje wcięcia jako definicję bloków - taka struktura jest elementem składni języka (w C/C++ czy Javie odpowiednikiem są nawiasy klamrowe). x = 1 if x == 1: # indented four spaces print "x is 1." Wykonaj powyższy fragment kodu. Następnie usuń wcięcia przed instrukcją print i zaobserwuj wynik. Typy i operatory Typy numeryczne: W Pythonie w wersji 2.X występują cztery typy numeryczne: całkowite, całkowite nieskończone, zmiennoprzecinkowe i zespolone (int, long, float, complex). Dodatkowo występuje typ logiczny, który jest podtypem int. Liczby całkowite są zaimplementowane wykorzystując typ long w C, co daje im co najmniej 32 bity precyzji. Typ zmiennoprzecinkowy jest zazwyczaj zaimplementowany przy wykorzystaniu typu double w C. Typ zespolony ma część rzeczywistą i urojoną, obie są zmiennoprzecinkowe. Aby uzyskać dostęp do tych części dla zmiennej z, wykorzystaj : z.real z.imag Wszystkie numeryczne typy wbudowane wspierają następujące operacje: Operator Rezultat
x + y x - y x * y x / y Operator x // y x % y -x -x +x x abs(x) int(x) long(x) float(x) complex(re,im) suma x oraz y różnica x oraz y iloczyn x oraz y iloraz x oraz y (zaokrąglony w dół) iloraz x oraz y reszta z dzielenia x / y wartość bezwzględna x x zamienione na typ całkowity Rezultat x zamienione na typ całkowity nieskończony x zamienione na typ zmiennoprzecinkowy liczba zespolona z częścią rzeczywistą re, urojoną im. im o wartości domyślnej 0. c.conjugate() sprzężenie liczby zespolonej divmod(x, y) para (x // y, x % y) pow(x, y) x ** y x do potęgi y x do potęgi y Listy: Są bardzo podobne do tablic, mogą zawierać każdy typ zmiennych oraz dowolną ich liczbę. Przykład listy: mylist = [] mylist.append(1) mylist.append(2) mylist.append(3) print(mylist[0]) # prints 1 print(mylist[1]) # prints 2 print(mylist[2]) # prints 3 # prints out 1,2,3 for x in mylist: print x Uruchom powyższy przykład. Próba dostępu do elementu listy o indeksie, który nie istnieje generuje wyjątek: mylist = [1,2,3] print(mylist[10])
Listy mogą składać się z elementów różnego typu. Rozbuduj poszczególny przykład o wszystkie poznane dotychczas typy języka Python. Metody listy: s.append(x) - dodaje nowy element x na końcu s s.extend(t) - dodaje nową listę t na końcu s s.count(x) - zlicza wystąpienie x w s s.index(x) - zwraca najmniejszy indeks i, gdzie s[i] == x s.pop([i]) - zwraca i-ty element i usuwa go z listy. Jeżeli nie podamy parametru to usunięty zostanie ostatni element s.remove(x) - odnajduje x i usuwa go z listy s s.reverse() - odwraca w miejscu kolejność elementów s s.sort([funkcja]) - Sortuje w miejscu elementy. "funkcja" to funkcja porównawcza Krotki (ang. Tuple): struktura danych będąca odzwierciedleniem matematycznej n-ki, tj. uporządkowanego ciągu wartości. Krotka jest sekwencją, tak jak lista. Różni się od niej jednak brakiem możliwości zmiany jej elementów. Krotki wykorzystują nawiasy okrągłe. Utwórz krotki zgodnie z poniższym przykładem: tup1 = ('physics', 'chemistry', 1997, 2000); tup2 = (1, 2, 3, 4, 5 ); tup3 = "a", "b", "c", "d"; Aby uzyskać dostęp do poszczególnych elementów krotki użyj nawiasów kwadratowych: print "tup1[0]: ", tup1[0] print "tup2[1:5]: ", tup2[1:5] Spróbuj zaktualizować wartości krotki i zaobserwuj wynik: tup1 = (12, 34.56); tup2 = ('abc', 'xyz'); tup1[0] = 100; Można jednak używać krotek bądź ich elementów do tworzenia nowych krotek: tup3 = tup1 + tup2; print tup3;
ZADANIA DO SAMODZIELNEGO WYKONANIA: 1. Sprawdź działanie wszystkich operatorów numerycznych. 2. Korzystając z funkcji range oraz sum oblicz sumę liczb naturalnych od 8 do 80. (Skorzystaj z dokumentacji dla tych funkcji). 3. Korzystając z informacji dostępnych na: http://www.tutorialspoint.com/python/python_command_line_arguments.htm napisz prosty skrypt, który przyjmuje jako parametry liczby i wykonuje na nich proste operacje arytmetyczne. napisz skrypt, który wylicza na podstawie zadanego argumentu (daty w postaci rrrr-mm-dd) liczbę dni od tego czasu do daty aktualnej. Skorzystaj z: https://docs.python.org/2/library/datetime.html#date-objects