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
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
Plik z chomika:
elektronm
Inne pliki z tego folderu:
Python_wg_Regedita.html
(40 KB)
04-PythonMatematyk.pdf
(526 KB)
02-Podstawy.pdf
(16457 KB)
03-Wprowadzenie.pdf
(3234 KB)
01-Wstęp.pdf
(1166 KB)
Inne foldery tego chomika:
Zgłoś jeśli
naruszono regulamin