jezykpython.pdf

(95 KB) Pobierz
40201118 UNPDF
J ezyk Python
dr inz. Paweł Kedzierski
1 Zaczynamy
Interpreter Python uruchamia sie komend a python :
%python
Python1.6(#1,Oct132000,01:16:18)[GCC2.7.2.3]onlinux2
Copyright(c)1995-2000CNRI.
AllRightsReserved.
Copyright(c)1991-1995StichtingMathematischCentrum,Amsterdam.
AllRightsReserved.
>>>
Gotowosc do wprowadzenia (kolejnej) instrukcji sygnalizowana jest znakami „ >>> ”. Jesli po-
przednia instrukcja wymaga doko nczenia, interpreter pokazuje „ ... ” (trzy kropki). W dalszych
przykładach, w ten sam sposób bede odrózniał instrukcje od wyników ich działania.
Jezyk Python został pomyslany tak, aby był prosty, zrozumiały dla czytaj acego i łatwy do naucze-
nia sie, a jednoczesnie elastyczny i zwiezły. Na przykład, zmiennych w ogóle nie trzeba deklarowac
— wystarczy nadac im wartosc:
>>>x=15.0
>>>imie=’Pawel’
Co wiecej, w tej samej zmiennej mozna przechowac dan a dowolnego typu, wiec nie bedzie błedem
napisanie po kolei:
>>>x=2
>>>x=1.1234
>>>x=’Ła´ncuchznaków’
1
Nie znaczy to, ze Python nie rozróznia rodzaju danych — musi to robic chociazby dlatego, ze ta
sama operacja, np. dodawanie, ma rózne znaczenie dla róznych typów: suma arytmetycznej dla
liczb, ł aczenia dla napisów itp.
Raz utworzona zmienna istnieje tak długo, jak jest potrzebna — Python sam sprz ata nieuzywan a
pamiec. Ale próba uzycia zmiennej, której nie ma, spowoduje bł ad (o nazwie NameError ).
Jezeli instrukcja, któr a wydamy, da jakis wynik (wartosc), wartosc ta zostanie wypisana . Mozna
wiec uzywac Pythona jako kalkulatora:
>>>a=1
>>>a+5
6
>>>(a+5)/2.5
2.3999999999999999
Ale uwaga! Nie zawsze wynik moze byc zgodny z oczekiwaniem. Wezmy taki przykład:
>>>1/5
0
Wbrew pozorom, jest to wynik prawidłowy . Poniewaz Python rozpoznaje typ zmiennych po ich
zapisie, w podanym wyrazeniu widzi on dwie liczby całkowite. Przy próbie dzielenia, stosuje
do nich zatem operacje dzielenia całkowitego , odrzucaj ac reszte. Aby uzyskac dzielenie rzeczywi-
ste, co najmniej jeden operand musi byc liczb a rzeczywist a:
>>>1/5.0
0.2
Niestety, problem taki pojawia sie jesli dane s a podawane przez uzytkownika programu, od którego
nie mozna przeciez wymagac stosowania sie do takich reguł. Dlatego Python umozliwia zamiane
typu na wymagany przez programiste. Ponizsza tabelka zestawia odpowiednie funkcje:
Funkcja Zamienia
chr() wartosc całkowit a na znak o odpowiednim kodzie ASCII
complex() wartosc całkowit a, rzeczywist a lub napisow a na zespolon a
ord() znak na jego kod ASCII
float() wartosc całkowit a lub napisow a na rzeczywist a
int() wartosc rzeczywist a lub napisow a na całkowit a
str() jak akolwiek wartosc na napis
eval() interpretuje wartosc napisow a tak, jak Python, i oblicza wynik
Tylko podczas interaktywnej pracy z interpreterem. Programy w Pythonie, a takze procedury z zewnetrznych modułów,
wypisz a tylko to co jest objete instrukcjami print .
Z punktu widzenia konwencji tego jezyka, stosuj acego róznie działaj ace operatory, w zaleznosci od typu operandów.
2
40201118.004.png
A oto konkretny przykład: program prosi uzytkownika o dane (funkcja input() ), nastepnie za-
mienia typ na rzeczywisty i oblicza wynik dzielenia:
>>>a=input(’Podaja:’)
>>>b=input(’Podajb:’)
>>>print’Wynikdzielenia:’,float(a)/b
1.1 Biblioteki podprogramów
Zestaw działa n udostepnianych przez sam interpreter Pythona jest raczej skromny, nawet jezeli
chcielibysmy uzywac go tylko jako kalkulatora. Natomiast bardzo bogaty zestaw róznych funk-
cji mozna znalezc w bibliotekach podprogramów. Nawet standardowe funkcje matematyczne nie
s a „ładowane” bez potrzeby, aby nie zajmowały pamieci. Aby z nich skorzystac, trzeba wczytac
odpowieni a biblioteke (moduł) Pythona:
>>>importmath
>>>math.sin(math.pi/2)
1.0
Instrukcja import słuzy własnie do tego, aby załadowac do pamieci interpretera z adan a biblioteke
podprogramów. Mozna to zrobic tak jak powyzej, ale jak widac, korzystanie z zawartosci modułu
nie jest wtedy zbyt wygodne, bo trzeba uzywac składni moduł.funkcja() lub moduł.stała . Dla-
tego czesto ładuje sie z wybranego mudułu albo wszystko hurtem, albo tylko wybrane elementy:
>>>frommathimportsin,pi#Wczytajfunkcj˛esin()istał˛api
>>>sin(pi/2)
1.0
>>>frommathimport*#Ładujwszystkieobiektymodułumath
>>>cos(pi)
-1.0
Wszystko od znaku # do ko nca linii jest traktowane jako komentarz (czyli po prostu ignorowane).
W rzeczywistosci, mozna bardzo łatwo tworzyc własne moduły. Jesli zapiszesz kod Pythona w
pliku z rozszerzeniem .py , np. funkcje.py , to wydanie w interpreterze komendy
>>>importfunkcje
wystarcza, aby móc z niego korzystac (jeszcze do tego wrócimy).
Standardowa instalacja Pythona zawiera dziesi atki róznych modułów, zawieraj ace od podprogra-
mów audiomedialnych do procedur obsługi plików zip. Przykład ponizej ładuje z modułu string
funkcje do konwersji wielkosci liter i pokazuje jej zastosowanie:
Modułu string uzyłem dla prostoty przykładu. W rzeczywistosci, jest on przestarzały, bo wszystkie funkcje operuj ace
na napisach s a dostepne bezposrednio w samych napisach (patrz rozdział 2.1).
3
>>>fromstringimportcapwords
>>>capwords(’JaKI ´ sTAKInapis’)
’Jaki\266TakiNapis’
Przykład ten pokazuje cos jeszcze: wartosci bed ace ła ncuchami znaków wypisywane s a w apo-
strofach i ze znakami nie-ASCII zamienionymi na kody numeryczne.
1.2 Formatowanie wyników
Na wypisywaniu ostatnio obliczonej wartosci przez Python nie mozna polegac: z jednej strony,
nie zawsze wygl ad bedzie nam odpowiadał, z drugiej zas, wartosci te nie s a wypisywane, jesli
uruchamia sie program zapisany w pliku (tzn. nie jest wpisywany interakcyjnie). Dlatego do wy-
prowadzania wyników nalezy uzywac wbudowanej instrukcji print :
>>>print"Cze´s´c"
Cze´s´c
>>>a,b,c=1,2,3
>>>print"Wynik:",a+5
Wynik:6
>>>print’Współczynniki:a=%d,b=%d,c=%d’%(a,b,c)
Współczynniki:a=1,b=2,c=3
Stop. Ten przykład jest dosc skondensowany i ilustruje kilka rzeczy na raz:
Mozna przypisywac wartosci kilku zmiennym jednoczesnie (linia 3);
Napisy mozna wpisywac w apostrofach lub cudzysłowach. Jest to bardzo wygodne:
>>>print’Przykład"a"’
Przykład"a"
>>>print"Przykład’b’"
Przykład’b’
Do „wstawiania” wartosci w napis mozna uzyc pól formatowanych ’%d’ oraz operatora %
(patrz dwie ostatnie linie).
Wyjasnienia wymaga to ostatnie. Operator % jest operatorem dwuargumentowym, którego lewym
argumentem jest ci ag znaków, a prawym dane do sformatowania i wstawienia w ten ci ag znaków.
Wynikiem jest takze ci ag znaków, w którym pola oznaczone znakami % w lewym argumencie zo-
stały zast apione odpowiednio sformatowanymi wartosciami danych z prawego argumentu. Jesli
danych jest wiecej niz jedna, trzeba je wzi ac w nawias (aby były potraktowane jako jeden argu-
ment).
4
Oznaczenia pól s a podobne jak w jezyku C . Po znaku % moze wyst apic liczba całkowita okre-
slaj aca docelow a szerokosc pola — dodatnia oznacza dosuniecie wartosci do prawej strony pola,
ujemna — do lewej. Jesli wartosci a do wstawienia jest liczba rzeczywista, mozna oprócz szero-
kosci pola podac (po kropce) liczbe miejsc po przecinku. Wzorzec pola jest zako nczony liter a
okreslaj ac a typ wpisywanej wartosci. Podane w tabeli 1 przykłady powinny wyjasnic reszte.
Tablica 1: Formatowanie danych za pomoc a operatora % . W przykładzie szóstym od dołu, podana
szerokosc pola ( 2 ) jest za mała, dlatego zostaje zignorowana. W wynikowych ła ncuchach znaków
zaznaczono spacje.
Kod typu wartosci Przykład Wynik
c (znakowa) ’%4c’%65 ’ A’
’%-4c’%66 ’B ’
d , i (całkowita dziesietna) ’%4d’%65 ’65’
’%04d’%65 ’0065’
’%-4i’%65 ’65’
e , E (rzeczywista wykładnicza) ’%e’%250 ’2.500000e+02’
’%.3e’%250 ’2.500e+02’
’%10.1E’%250 ’ 2.5E+02’
f (rzeczywista zmiennoprzecinkowa) ’%f’%250 ’250.000000’
’%10.3f’%250 ’ 250.000’
’%.2f’%250 ’250.00’
’%-10.3f’%250 ’250.000 ’
’%-5.0f’%3.14159’3 ’
g , G (jak f lub e ) ’%g’%250 ’250’
’%g’%250.01’250.01’
’%g’%2500000’2.5e+06’
o (całkowita ósemkowa) ’%2o’%250 ’372’
’%05o’%250 ’00372’
s (ci ag znaków) ’%5s’%’bis’ ’bis’
’%-5s’%’bis’ ’bis’
x , X (całkowita szesnastkowa) ’%x’%250 ’fa’
’%04X’%250 ’00FA’
1.3 Zestaw survival poskramiacza w ezy
Zeby sie umiec odnalezc w g aszczu modułów, podprogramów i innych obiektów jezyka Python,
niezwykle pomocne s a dwie rzeczy: wbudowana funkcja dir() oraz ła ncuchy dokumentacji obiek-
tów __doc__ . Wynikiem funkcji dir() jest lista nazw atrybutów podanego obiektu (w Pythonie
prawie wszystko jest obiektem):
Róznice s a jednak istotne. Python dokona konwersji typu wyprowadzanej wartosci na odpowiedni dla typu pola,
natomiast C nie.
5
40201118.005.png 40201118.006.png 40201118.007.png 40201118.001.png 40201118.002.png 40201118.003.png
Zgłoś jeśli naruszono regulamin