You are on page 1of 5

Język Python

Python należy do grupy języków interpretowanych. Jego cechą charakte-


rystyczną jest grupowanie składowych kodu poprzez indentację (wcięcie
zamiast zwyczajowych nawiasów). W języku tym zmienne same w sobie są
uniwersalne, natomiast wartości zmiennych zawsze posiadają określony typ
(liczba, łańcuch, lista, strumień etc.). Dokumentację języka Python można
znaleźć na stronie python.org. Istnieją dwie wzajemnie niekompatybilne
wersje tego języka. Będziemy używać nowszej, Python 3.
Interpreter uruchamiamy poleceniem python3, natomiast zamykamy go
wyrażeniem exit(). Może być on wykorzystywany jak zwykły kalkulator.
Wyrażenia wykonywane ciągiem oddzielamy od siebie średnikiem.
Wartość zmiennej przypisujemy za pomocą znaku równości (=).
W Pythonie dostępne są liczby zespolone, gdzie rolę jednostki urojonej pełni
symbol j. Liczby zespolone można również tworzyć z par liczb rzeczywistych
za pomocą funkcji complex. Na przykładzie liczb zespolonych możemy
wyróżnić trzy ogólne rodzaje operacji na zmiennych:
- metody, właściwe odpowiednim typom wartości zmiennych, np. z.real,
z.imag (część rzeczywista i urojona),
- funkcje, np. abs(z) (wartość bezwzględna),
- instrukcje, np. del z (usunięcie zmiennej).

Stałymi logicznymi są True i False, a podstawowymi operatorami logiczny-


mi są and, or i not. Dostępne są również operatory porównań (==, !=, <, <=
etc.) oraz operator zawierania in.
Stałe i funkcje matematyczne zawarte są w module math, a ich wersje
działające na liczbach zespolonych zawiera moduł cmath.
Importowanie modułów odbywa się za pomocą instrukcji import następu-
jąco:
- import math, wówczas wywołujemy funkcję jako np. math.sin(pi),
- from math import *, wówczas wywołujemy funkcję jako np. sin(pi).

Generalnie importowanie funkcji z danego modułu (będącego plikiem


o rozszerzeniu py) odbywa się w następujący sposób:
from modul.py import funkcja

Wyrażenie dir() wypisuje nazwy wszystkich dostępnych modułów i po-


jedynczo zaimportowanych funkcji. Wyrażenie dir(modul) wypisuje na-
zwy wszystkich dostępnych funkcji danego modułu. Z kolei wyrażenie
dir(funkcja) wypisuje nazwy wszystkich dostępnych metod danej funkcji.
Skrypty pisane w języku Python rozpoczynamy, wskazując plik wykony-
walny interpretera, zwykle jest to:

1
#!/usr/bin/python3

Komentarze w skryptach umieszczamy po znaku hash (#). Do wypisywania


tekstu (łańcuchów) służy funkcja print.
Łańcuchy tworzymy za pomocą cudzysłowu "...", apostrofu ’...’ lub
funkcji str. Łańcuchy łączy się za pomocą znaku plus (+). Listę poszcze-
gólnych słów, z których zbudowany jest łańcuch, uzyskuje się za pomocą
metody split, wskazując jako jej argument rodzaj separatora (domyślnie
jest nim spacja), następująco:
’ala ela ola’.split()

Aby tworzyć łańcuchy dynamiczne, np. zawierające wartości zmiennych,


należy używać metody format następująco:
’Wartosc x wynosi {0}, a wartosc y wynosi {1}.’.format(x,y)

Interaktywne przypisywanie wartości zmiennym odbywa się za pomocą


funkcji input następująco:
x=input(’Podaj wartosc x: ’)

Należy zwrócić uwagę, że przypisywane w ten sposób wartości są domyślnie


łańcuchami. Aby przetworzyć je na liczby całkowite lub rzeczywiste należy
użyć odpowiednio funkcji int lub float.
Zmienne specjalne (opcje), z którymi uruchamiany jest skrypt języka
Python, przechowywane są w liście argv. Zmienna ta jest dostępna po
zaimportowaniu modułu sys.
Listy tworzymy za pomocą nawiasów kwadratowych [...] lub za pomocą
funkcji list, oddzielając elementy przecinkiem. Elementami list mogą być
inne listy zagnieżdżone dowolnie głęboko. Listy łączy się za pomocą znaku
plus (+). Długość listy podaje funkcja len. Elementy listy indeksowane są od
zera. Pobiera się je za pomocą nawiasów kwadratowych [...], wskazując
indeks żądanego elementu, np. [i] lub zakres interesujących nas elementów,
np. [i:j]. Kopię listy niezależną od oryginału można utworzyć jako:
lista2=lista1[:]

Zauważmy, że następujące przypisanie:


lista2=lista1

tworzy listę, która jest funkcyjnie zależna od oryginału i w przypadku jego


zmian zmienia się wraz z nim. Dołączanie elementu na koniec listy odbywa
się za pomocą metody append następująco:
lista.append(element)

Dołączanie elementu przed danym indeksem w liście odbywa się za pomocą


metody insert następująco:

2
lista.insert(indeks,element)

Zakres o stałym kroku generowany jest przez funkcję range w następujący


sposób:

range(min,max,krok)

Minimum, maksimum i krok muszą być liczbami całkowitymi. Wynikiem


powyższego wyrażenia jest tak zwany generator. Jeśli chcemy utworzyć
z niego listę, należy na niego zadziałać funkcją list.
Instrukcja warunkowa if posiada następującą ogólną konstrukcję:

if warunek1:
wyrazenia1
elif warunek2:
wyrazenia2
else:
wyrazenia3

Proszę zwrócić uwagę na indentację porządkującą kod. Warunki są tutaj


wyrażeniami, które przyjmują określoną wartość logiczną. Instrukcję wa-
runkową wykorzystuje się również w postaci wyrażenia trójargumentowego
jako:

wyrazenie1 if warunek else wyrazenie2

Pętla warunkowa while posiada następującą ogólną konstrukcję:


while warunek:
wyrazenia

Pętla licznikowa for posiada następującą ogólną konstrukcję:


for element in zakres:
wyrazenia

Pętla ta przebiega po wszystkich elementach z zadanego zakresu.


Definiowanie funkcji odbywa się za pomocą instrukcji def następująco:
def funkcja(argumenty):
wyrazenia
return(wyrazenie)

Poszczególne argumenty w definicji oddzielane są przecinkiem. Definiowana


funkcja ostatecznie zwraca wartość działania funkcji return. Przykłado-
wo definicja funkcji podnoszącej swój argument do kwadratu wygląda
następująco:
def f(x):
return(x**2)

3
Funkcję anonimową definiujemy za pomocą instrukcji lambda następująco:
lambda argumenty: wyrazenie

Poszczególne argumenty w definicji oddzielane są przecinkiem. Formuła


definiująca funkcję może składać się wyłącznie z pojedynczego wyrażenia
(a nie bloku wyrażeń). Przykładowo definicja funkcji sprawdzającej dodat-
niość jej argumentu za pomocą instrukcji lambda wygląda następująco:
f=lambda x: x>0

Działanie funkcji na elementy danego zakresu generowane jest przez funkcję


map następująco:

map(funkcja,zakres)

Działająca funkcja musi mieć postać funkcji anonimowej. Wynikiem po-


wyższego wyrażenia jest generator.
Filtrowanie elementów zakresu ze względu na daną funkcję generowane
jest przez funkcję filter następująco:
filter(funkcja,zakres)

Działająca funkcja musi mieć postać funkcji anonimowej. Wynikiem po-


wyższego wyrażenia jest generator.
Rozszerzona składnia list pozwala łączyć w pojedynczym wyrażeniu zadania
funkcji map i filter. Ogólna konstrukcja tego typu wygląda w następujący
sposób:
[wyrazenie for element in zakres if warunek]

Warunek jest tutaj wyrażeniem. Wynikiem powyższej konstrukcji jest


przetworzona za pomocą danego wyrażenia lista elementów rozważanego
zakresu, dla których to elementów zachodzi zadany warunek. W szczegól-
ności wyrażenie:
- [funkcja(element) for element in zakres] jest równoważne wyraże-
niu map(funkcja,zakres),
- [element for element in zakres if funkcja(element)] jest równowa-
żne wyrażeniu filter(funkcja,zakres).
Ćwiczenie 1.
Proszę zapoznać się poprzez elementarne użycie z każdym modułem, in-
strukcją, funkcją i metodą, które zostały wspomniane w powyższym wpro-
wadzeniu.
Ćwiczenie 2.
6 x
Zdefiniować funkcję o równaniu f (x) = x 5 − e 3 i przygotować zbiór X
liczb od 0 do 10 rozłożonych co 0.1. Następnie:

4
- znaleźć zbiór Y wartości funkcji f na zbiorze X,
- znaleźć zbiór W dodatnich wartości funkcji f na zbiorze X,
- znaleźć zbiór Z liczb ze zbioru X, dla których funkcja f jest dodatnia,
na dwa sposoby: przy użyciu wyłącznie funkcji f oraz przy użyciu
wyłącznie zbioru Y .
Osoby, którym uda się wykonać to ćwiczenie, proszę o przesłanie do mnie
rozwiązań do niedzieli, 19 kwietnia.

You might also like