Podstawy programowania w Pythonie Wykład 2 dr Andrzej Zbrzezny Instytut Matematyki i Informatyki Akademia Jana Długosza w Częstochowie 10 października 2012 dr Andrzej Zbrzezny (IMI AJD) Podstawy programowania w Pythonie 10.10.2012 1 / 21
Podstawy Pythona Zen Pythona Aby zapoznać się z Zen Pythona wystarczy zaimportować moduł this: >>> import this The Zen of Python Beautiful is better than ugly.... Tłumaczenie na język polski pochodzi ze strony http://wiki.sheep.art.pl/zenofpython Omówienie poszczególnych stwierdzeń można znaleźć na stronie http://lukasz.langa.pl/1/zen-pythona-i-ja/ dr Andrzej Zbrzezny (IMI AJD) Podstawy programowania w Pythonie 10.10.2012 2 / 21
Podstawy Pythona Zen Pythona tłumaczenie Piękne jest lepsze niż brzydkie. Wyrażone wprost jest lepsze niż domniemane. Proste jest lepsze niż złożone. Złożone jest lepsze niż skomplikowane. Płaskie jest lepsze niż wielopoziomowe. Rzadkie jest lepsze niż gęste. Czytelność się liczy. Sytuacje wyjatkowe nie sa na tyle wyjatkowe, aby łamać reguły. Choć praktyczność przeważa nad konsekwencja. Błędy zawsze powinny być sygnalizowane. Chyba że zostana celowo ukryte. dr Andrzej Zbrzezny (IMI AJD) Podstawy programowania w Pythonie 10.10.2012 3 / 21
Podstawy Pythona Zen Pythona tłumaczenie W razie niejasności powstrzymaj pokusę zgadywania. Powinien być jeden i najlepiej tylko jeden oczywisty sposób na zrobienie danej rzeczy. Choć ten sposób może nie być oczywisty jeśli nie jest się Holendrem. Teraz jest lepsze niż nigdy. Chociaż nigdy jest często lepsze niż natychmiast. Jeśli rozwiazanie jest trudno wyjaśnić, to jest ono złym pomysłem. Jeśli rozwiazanie jest łatwo wyjaśnić, to może ono być dobrym pomysłem. Przestrzenie nazw to jeden z niesamowicie genialnych pomysłów miejmy ich więcej! dr Andrzej Zbrzezny (IMI AJD) Podstawy programowania w Pythonie 10.10.2012 4 / 21
Obiekty, wartości i typy Obiekty sa w Pythonie abstrakcja danych. Każda dana jest reprezentowana przez obiekt lub przez relację pomiędzy obiektami. Zgodnie z modelem komputera z programem w pamięci von Neumanna kod również reprezentowany jest przez obiekty. Każdy obiekt ma tożsamość, typ i wartość. Od chwili utworzenia obiektu jego tożsamość nigdy się nie zmienia. O tożsamości obiektu można myśleć jak o adresie obiektu w pamięci. Do porównania tożsamości dwóch obiektów służy operator is. dr Andrzej Zbrzezny (IMI AJD) Podstawy programowania w Pythonie 10.10.2012 5 / 21
Obiekty, wartości i typy Wbudowana funkcja id zwraca wartość całkowita, reprezentujac a tożsamość obiektu. W standardowej implementacji funkcja ta zwraca adres obiektu, przekształcony do postaci liczbowej. Typ określa zbiór atrybutów i operacji, które można wykonać na obiekcie oraz definiuje zbiór dopuszczalnych wartości obiektu. Typ obiektu, podobnie jak jego tożsamość, również nie może ulec zmianie. Typ obiektu (który również jest obiektem) można pobrać za pomoca wbudowanej funkcji type. dr Andrzej Zbrzezny (IMI AJD) Podstawy programowania w Pythonie 10.10.2012 6 / 21
Zmienne Zmienna w Pythonie jest nazwa, która jest odniesieniem do obiektu. Aby utworzyć zmienna oraz nadać jej wartość należy użyć instrukcji przypisania: zmienna = wyrażenie Powyższa instukcja przypisuje do zmiennej zmienna odniesienie do obiektu utworzonego w wyniku obliczenia wartości wyrażenia wyrażenie. Przypisanie do zmiennej nie jest wypisywane przez interpreter. Wartość może być przypisana jednocześnie wielu zmiennym, np. a = b = c = 0 Możliwe sa też jednoczesne przypisania: a, b, c = 1, 2, 3 dr Andrzej Zbrzezny (IMI AJD) Podstawy programowania w Pythonie 10.10.2012 7 / 21
Przykłady >>> a = 3 >>> b = 3 >>> id(a) >>> id(b) >>> a is b True >>> a = 3.0 >>> b = 3.0 >>> id(a) >>> id(b) >>> a is b False dr Andrzej Zbrzezny (IMI AJD) Podstawy programowania w Pythonie 10.10.2012 8 / 21
Zmienne W trybie interaktywnym, ostatnio wydrukowane wyrażenie przypisywane jest do zmiennej _. Oznacza to, że jeśli używa się Pythona jako biurkowego kalkulatora, łatwym staje się kontynuowanie obliczeń, jak w poniższym przykładzie: >>> 53.4 * 3.56 11.747999999999999 >>> round(_, 2) 11.75 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 _ o tych magicznych właściwościach. dr Andrzej Zbrzezny (IMI AJD) Podstawy programowania w Pythonie 10.10.2012 9 / 21
Słowa kluczowe Nazwy zmiennych, funkcji i klas sa identyfikatorami. Identyfikator to dowolny ciag składajacy się z liter, cyfr oraz znaków podkreślenia zaczynajacy się od litery lub znaku podkreślenia. Spośród wszystkich możliwych nazw zmiennych 33 sa zarezerwowane. Sa to słowa kluczowe języka Python. False class finally is return None continue for lambda try True def from nonlocal while and del global not with as elif if or yield assert else import pass break except in raise dr Andrzej Zbrzezny (IMI AJD) Podstawy programowania w Pythonie 10.10.2012 10 / 21
Wprowadzanie napisów >>> imie = input("podaj swoje imię: ") >>> print("cześć", imie) Wprowadzanie liczb całkowitych >>> rok_ur = int(input("podaj rok urodzenia: ")) >>> print("urodziłeś się w roku", rok_ur) Wprowadzanie liczb zmiennoprzecinkowych >>> waga = float(input("podaj swoją wagę: ")) >>> print("ważysz", waga, "kg") dr Andrzej Zbrzezny (IMI AJD) Podstawy programowania w Pythonie 10.10.2012 11 / 21
Skrypty w języku Python Przez skrypt Pythona rozumiemy plik tekstowy zawierajacy program zapisany w języku Python. Zwyczajowo skrypty Pythona zapisuje się w plikach z rozszerzeniem.py, np. hello.py. Przykład (Przykładowy skrypt) #!/usr/bin/env python3 print("witajcie studenci!") print("ąćęłńóśźż") print("ąćęłńóśźż") dr Andrzej Zbrzezny (IMI AJD) Podstawy programowania w Pythonie 10.10.2012 12 / 21
Skrypty w języku Python Aby wykonać skrypt hello.py wydajemy w konsoli polecenie [student@laboratorium ]$ python3 hello.py Możemy też uruchomić skrypt hello.py wydajac w konsoli polecenie [student@laboratorium ]$./hello.py o ile w pierwszej linii pliku hello.py znajduje się odwołanie do interpretera: #!/usr/bin/env python3 a ponadto plik hello.py ma ustawiony atrybut wykonywalności. Python 3 akceptuje w skryptach znaki pochodzace z zestawu znaków Unikodu w systemie UTF-8. dr Andrzej Zbrzezny (IMI AJD) Podstawy programowania w Pythonie 10.10.2012 13 / 21
Prosta postać instrukcji iteracyjnej for (dla) Instrukcja iteracyjna for jest używana do iterowania po elementach sekwencji lub innego obiektu iterowalnego. Prosta postać instrukcji iteracyjnej for jest następujaca: for zmienna in wyrażenie: blokinstrukcji blokinstrukcji to ciag instrukcji, które umieszczone sa w kolejnych liniach, przy czym każda linia jest wcięta w stosunku do linii zaczynajacej się od for o tę sama liczbę spacji. dr Andrzej Zbrzezny (IMI AJD) Podstawy programowania w Pythonie 10.10.2012 14 / 21
Semantyka instrukcji iteracyjnej for Wyrażenie wyrażenie jest wartościowane raz, a jego wynikiem powinna być sekwencja. Dla każdego elementu tej sekwencji (w kolejności rosnacych indeksów) wykonywany jest podany ciag instrukcji, przy czym najpierw element ten jest przypisywany do zmiennej zmienna. Po wyczerpaniu elementów sekwencji (być może od razu, jeśli sekwencja ta jest pusta) wykonywanie instrukcji for kończy się. dr Andrzej Zbrzezny (IMI AJD) Podstawy programowania w Pythonie 10.10.2012 15 / 21
Schemat blokowy instrukcji iteracyjnej for Czy istnieją False elementy sekwencji, które nie zostały przetworzone? True zmienna = następny element blokinstrukcji dr Andrzej Zbrzezny (IMI AJD) Podstawy programowania w Pythonie 10.10.2012 16 / 21
Zakresy Funkcja wbudowana range jest uniwersalna funkcja tworzac a skończony ciag arytmetyczny. Funkcję tę można wywoływać z jednym, dwoma lub trzema argumentami: range(stop) start = 0, krok = 1 range(start, stop) krok = 1 range(start, stop, krok) W przypadku gdy krok > 0, elementy zakresu r określone sa wzorem r[j] = start + krok * j, gdzie j >= 0 oraz r[j] < stop. W przypadku gdy krok < 0, elementy zakresu r określone sa wzorem r[j] = start + krok * j, gdzie j >= 0 oraz r[j] > stop. dr Andrzej Zbrzezny (IMI AJD) Podstawy programowania w Pythonie 10.10.2012 17 / 21
Przykłady >>> list(range(10)) [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] >>> list(range(1, 11)) [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] >>> list(range(0, 30, 5)) [0, 5, 10, 15, 20, 25] >>> list(range(0, 10, 3)) [0, 3, 6, 9] >>> list(range(0, -10, -1)) [0, -1, -2, -3, -4, -5, -6, -7, -8, -9] >>> list(range(0)) [] >>> list(range(1, 0)) [] dr Andrzej Zbrzezny (IMI AJD) Podstawy programowania w Pythonie 10.10.2012 18 / 21
Przykład (Program z użyciem instrukcji iteracyjnej for) #!/usr/bin/env python3 n = int(input("podaj liczbę naturalną: ")) s = 0 for j in range(1, n + 1): s = s + j print("suma liczb od 1 do", n, "wynosi", s) dr Andrzej Zbrzezny (IMI AJD) Podstawy programowania w Pythonie 10.10.2012 19 / 21
Przykład (Program z użyciem instrukcji iteracyjnej for) """Oblicza sumę liczb naturalnych od 1 do n""" #!/usr/bin/env python3 n = int(input("podaj liczbę naturalną: ")) s = 0 for j in range(1, n + 1): s = s + j print("suma liczb od 1 do", n, "wynosi", s) dr Andrzej Zbrzezny (IMI AJD) Podstawy programowania w Pythonie 10.10.2012 20 / 21
Przykład (Program z użyciem instrukcji iteracyjnej for) """Oblicza sumę liczb naturalnych od 1 do n""" #!/usr/bin/env python3 def main(): n = int(input("podaj liczbę naturalną: ")) s = 0 for j in range(1, n + 1): s = s + j print("suma liczb od 1 do", n, "wynosi", s) main() dr Andrzej Zbrzezny (IMI AJD) Podstawy programowania w Pythonie 10.10.2012 21 / 21