.:: KURS PROGRAMOWANIA W JĘZYKU PYTHON ::.




- Liczby i operatory arytmetyczne


Tryb interaktywny Pythona może być używany jako kalkulator. Wpiszmy:


>>> 2+2


aby dodać dwie dwójki. Powinniśmy otrzymać następujący wynik:


4
>>>


Poniżej wypróbujemy pozostałe trzy podstawowe operatory matematyczne – odejmowanie, mnożenie i dzielenie:


>>> 4-1
3
>>> 2*3
6
>>> 4/2
2
>>>


Próba dzielenia przez zero kończy się w Pythonie wyświetleniem komunikatu o błędzie:


>>> 2/0
Traceback (most recent call last):
  File "<interactive input>", line 1, in <module>
ZeroDivisionError: integer division or modulo by zero
>>> 


Dodatkowe dwa operatory arytmetyczne dostępne w Pythonie to potęgowanie:


>>> 3**2
9
>>>


oraz reszta z dzielenia:


>>> 8%3
2
>>>


Pojedyncze wyrażenie może zawierać wiele operatorów. Są one wykonywane w kolejności znanej z algebry:


>>> 2+4/2
4
>>> 25+2*-3**3+12/3
-25
>>>


W przypadku konieczności zmiany kolejności wykonywania operatorów używamy nawiasów okrągłych:


>>> (3+5)/2
4
>>> -((2+1)*(8-3))**2
-225
>>>



- Systemy liczbowe


Liczby całkowite mogą być w Pythonie zapisywane w systemach pozycyjnych innych niż dziesiętny: ósemkowym i szesnastkowym. Liczbę w systemie ósemkowym zapisujemy poprzedzając jej wartość znakiem zera "0" (interpreter Pythona zwraca tą samą wartość zapisaną dziesiętnie):


>>> 011
9
>>> 0764
500
>>>


Liczbę w systemie szesnastkowym zapisujemy poprzedzając jej wartość dwuznakiem "0x":


>>> 0x100
256
>>> 0xabc
2748
>>> 0xBADF00D
195948557
>>>



- Typy liczb


Obok liczb całkowitych w Pythonie są dostępne trzy inne typy liczbowe:

- długie liczby całkowite,
- liczby rzeczywiste,
- liczby zespolone.



- Długie liczby całkowite


Liczby całkowite mają rozmiar 32 bitów, stąd największą wartością jaką mogą przyjąć jest 2147483647. Większe wartości zapamiętywane są jako długie liczby całkowite, rozpoznajemy je po umieszczonej na końcu literze "L":


>>> 99999999999999999
99999999999999999L
>>>


Wartość mniejszą niż 2147483647 możemy oznaczyć jako długą sami dostawiając literę "L":


>>> 7l
7L
>>> 0xDEADF00L
233496320L
>>>


Jeżeli w wyrażeniu występuje choć jedna długa liczba całkowita, również rezultat jest długą liczbą całkowitą:


>>> 2+4*5L
22L
>>>



- Liczby rzeczywiste


Liczby rzeczywiste mogą być w Pythonie przedstawione w formie ułamka dziesiętnego (z separatorem w postaci kropki, nie przecinka!):


>>> 2.5
2.5
>>>


lub w notacji naukowej (mantysa”E”+–wykładnik):


>>> 1e+3
1000.0
>>>


Wartość całkowitą możemy oznaczyć jako liczbę rzeczywistą dostawiając na końcu ".0". Porównajmy:


>>> 3/2
1
>>> 3.0/2.0
1.5
>>>


Aby odrzucić z wyniku dzielenia część ułamkową należy użyć podwójnego znaku dzielenia:


>>> 3.0//2.0
1.0
>>>


Jak widać, jeżeli w wyrażeniu występuje choć jedna liczba rzeczywista, również rezultat jest liczbą rzeczywistą. Jeszcze jeden przykład na to:


>>> 1.5e+1+5000000000L*3
15000000015.0
>>>



- Liczby zespolone


Liczby zespolone są w Pythonie zapisywane jako suma części rzeczywistej i części urojonej (w celu prawidłowego wykonywania operacji arytmetycznych, najlepiej by suma była ujęta w nawiasy okrągłe). Część urojona oznaczana jest przez dostawioną na jej końcu literę "J":


>>> -1+1j
(-1+1j)
>>> 0.5+0.5j
(0.5+0.5j)
>>>


Jeżeli w wyrażeniu występuje choć jedna liczba urojona, rezultat jest liczbą zespoloną:


>>> 1j**2
(-1+0j)
>>> 6.8*200L/(1+2j)
(272-544j)
>>> 



- Tworzenie i zmiana wartości zmiennych


Python pozwala używać zmiennych w celu przechowywania wartości dowolnego typu.
Utworzenie zmiennej polega na nadaniu jej początkowej wartości. Poniżej utworzymy zmienną "a", nadając jej wartość "4":


>>> a=4
>>>


Sprawdźmy, czy a rzeczywiście równe jest cztery:


>>> a
4
>>>


Stwórzmy nową zmienną:


>>> b=5
>>>


Aby wykonać dwa polecenia Pythona w jednym wierszu rozdzielamy je średnikiem. Sprawdźmy wartości obu zmiennych:


>>> a;b
4
5
>>>


W każdej chwili możemy zmienić wartość zmiennej:


>>> a=7
>>> a
7
>>>


Do zmiennej możemy podstawić wartość innej zmiennej:


>>> a=10
>>> b=20
>>> b=a
>>> b
10
>>> 


lub dowolnie skomplikowane wyrażenie:


>>> c=1+17*(32/8)
>>> d=(a*b)/(a+b+2.0)
>>> c;d
69
1.5
>>>


Jak widać, zmienna przyjmuje wartość typu rzeczywistego tylko wtedy, gdy wyrażenie, które do niej podstawiono było takiego typu (czyli zawierało przynajmniej jedną liczbę rzeczywistą – w powyższym przypadku 2.0).
Nowa wartość zmiennej może być wyliczona o dotychczasową wartość jej samej:


>>> a=a+7
>>> b=b-3
>>> c=c*2
>>> d=d/3
>>> a;b;c;d
12
0
138
0.5
>>>


Operację zmiany wartości zmiennej z wykorzystaniem jej dotychczasowej wartości można zapisać prościej, łącząc odpowiedni operator arytmetyczny ze znakiem równości:


>>> a+=2
>>> b-=2
>>> c*=2
>>> d/=2
>>> a;b;c;d
14
-2
276
0.25
>>>


Próba użycia zmiennej, której wcześniej nie nadano żadnej wartości, kończy się wyświetleniem komunikatu o błędzie:


>>> e
Traceback (most recent call last):
  File "<interactive input>", line 1, in <module>
NameError: name 'e' is not defined
>>> 


Istniejącą zmienną można skasować instrukcją "del":


>>> del a
>>> a
Traceback (most recent call last):
  File "<interactive input>", line 1, in <module> 
NameError: name 'a' is not defined
>>> 


a potem stworzyć od nowa:


>>> a=71.0
>>> a
71.0
>>>



- Zasady nazywania zmiennych


Nazwy zmiennych w Pythonie mogą być dowolnie długie:


>>> NieprawdopodobnieOkrutnieDługaNazwaZupełnieNieważnejZmiennej=1234
>>> NieprawdopodobnieOkrutnieDługaNazwaZupełnieNieważnejZmiennej*2
2468
>>>


i mogą zawierać zarówno małe, jak i duże litery alfabetu, tak łacińskiego, jak i polskiego. Takie same nazwy, ale napisane małymi bądź dużymi literami, oznaczają różne zmienne:


>>> aa=1
>>> Aa=2
>>> aA=3
>>> AA=4
>>> aa;Aa;aA;AA
1
2
3
4
>>>


Zmiennym nie można nadawać nazw zastrzeżonych dla instrukcji języka Python:


and       del       for       is        raise    

assert    elif      from      lambda    return   

break     else      global    not       try      

class     except    if        or        while    

continue  exec      import    pass      yield    

def       finally   in        print


Próba użycia któregoś z powyższych słów kluczowych jako nazwy zmiennej, kończy się wyświetleniem komunikatu o błędzie:


>>> del=1
SyntaxError: invalid syntax
>>>


Nazwy nie mogą zawierać spacji:


>>> dwie nazwy=1
SyntaxError: invalid syntax
>>>


Mogą jednak zawierać znak podkreślenia:


>>> jedna_nazwa=2
>>> jedna_nazwa
2
>>>


Nazwy zmiennych mogą także zawierać cyfry:


>>> odpowiedz_nr_234=7
>>> odpowiedz_nr_234
7
>>>


Cyfry jednak nie mogą rozpoczynać nazwy zmiennej:


>>> 7mil=12
SyntaxError: invalid syntax
>>>


Znak podkreślenia może rozpoczynać nazwę zmiennej:


>>> _a=1
>>> _a
1
>>>


Jednak nie powinno się go w tym miejscu używać bez przemyślenia, gdyż w języku Python nazwy zaczynające się od "_" mają specjalne znaczenie.
Ponadto, sam znak podkreślenia zwraca w trybie interaktywnym (tylko w tym trybie!) wartość ostatniego obliczonego wyrażenia:


>>> 7+3*2
13
>>> _
13
>>>



- Napisy


Innym niż liczby rodzajem danych, którymi możemy posługiwać się w Pythonie są napisy. Napisy ograniczamy cudzysłowami bądź apostrofami. Jeżeli początek napisu oznaczyliśmy cudzysłowem, to tak samo powinniśmy go zakończyć:


>>> "napis"
'napis'
>>>


Jeżeli początek napisu oznaczyliśmy apostrofem, to tak samo powinniśmy go zakończyć:


>>> 'inny napis'
'inny napis'
>>>


W napisach ograniczonych cudzysłowami możemy używać apostrofów:


>>> "I can't help"
"I can't help"
>>>


W napisach ograniczonych apostrofami możemy używać cudzysłowów:


>>> '"Moby Dick" is thick'
'"Moby Dick" is thick'
>>>


Napisy ograniczone pojedynczymi cudzysłowami bądź apostrofami muszą kończyć się przed końcem linii:


>>> "napis bez końca
SyntaxError: EOL while scanning single-quoted string
>>>


Napisy mogą ciągnąć się przez wiele linii jeżeli ograniczymy je potrójnymi cudzysłowami:


>>> """Ten napis
ma
wiele
linii"""
'Ten napis\nma\nwiele\nlinii'
>>>



- Podstawowe operacje na napisach


Napisy możemy podstawiać do zmiennych tak samo jak liczby:


>>> p="pies"
>>> k="kot"
>>> p
'pies'
>>> k
'kot'
>>>


Na napisach możemy wykonywać dwie podstawowe operacje – łączenie:


>>> p+k
'pieskot'
>>>


i powielanie:


>>> p*3
'piespiespies'
>>>


możemy je również łączyć:


>>> 2*k+" "+p
'kotkot pies'
>>>



- Konwersja liczb na napisy


Aby skonwertować liczbę na napis posługujemy się odwróconym apostrofem (klawisz nad tabulatorem "`"):


>>> a=2
>>> b=5
>>> "A="+`a`
'A=2'
>>> "B="+`b`
'B=5'
>>> `a`+`b`
'25'
>>>



- Konwersja napisów na liczby


Jeżeli liczby przechowywane są w postaci napisów:


>>> x="1"
>>> y="2"
>>> x;y
'1'
'2'
>>>


to operacje na nich będą działały tak jak na napisach, a nie jak na liczbach:


>>> x+y
'12'
>>>


Aby móc wykonać na nich operacje arytmetyczne należy najpierw skonwertować napisy na liczby. Służy do tego jedna z czterech funkcji:


>>> int(x)
1
>>> long(x)
1L
>>> float(x)
1.0
>>> complex(x)
(1+0j)
>>>


A zatem:


>>> int(x)+int(y)
3
>>>



- Ćwiczenia kontrolne


I. Wiedząc, że pierwiastek n-tego stopnia z x równa się x do potęgi 1/n i wykorzystując wiedzę o użyciu liczb zespolonych w Pythonie, wylicz wartość pierwiastka drugiego stopnia z –7.

II. Używając instrukcji Pythona oblicz resztę z dzielenia 11 przez 7 i zapamiętaj wynik w zmiennej o nazwie Z. Następnie, pojedynczym poleceniem Pythona i bez użycia nawiasów, przemnóż zmienną Z przez Z+1.

III. Spowoduj pojedynczym poleceniem Pythona, by na ekranie 200-krotnie wyświetliła się wartość wyrażenia 1.23e+4+45.0 każdorazowo rozdzielona średnikiem.

IV. Napisz skrypt, który zsumuje dwie liczby, nie używając znaku "+" (w całym skrypcie).





-- back