Środowisko programisty 1/34 Środowisko programisty Język Python cz. 1 dr inż. Grzegorz Michalski 24 marca 2014
Środowisko programisty 2/34 Wstęp Uruchamianie interpretera python Wykonywalne skrypty #!/usr/bin/python #!/usr/bin/env python chmod +x nazwa_skryptu.py
Środowisko programisty 3/34 Komentarze Tworzenie komentarzy # krótki komentarz Kodowanie plików źródłowych # -*- coding: symbol_kodowania -*- # -*- coding: iso-8859-2 -*-
Środowisko programisty 4/34 Liczby Operacje na liczbach >>> 2+2 4 >>> 2 + 2 4 >>> (36 2 6)/4 6 >>> 7/3 2 >>> 7/ 3 3 >>> 2 5 32
Środowisko programisty 5/34 Zmienne Tworzenie zmiennych >>> s z e r o k o s c = 20 >>> wysokosc = 5 2 5 >>> s z e r o k o s c wysokosc 1000 Zmienne niezdefiniowane >>> wysokosc 50 >>> Wysokosc Traceback ( most r e c e n t c a l l l a s t ) : F i l e "<stdin >", l i n e 1, i n <module> NameError : name Wysokosc i s not d e f i n e d
Środowisko programisty 6/34 Zmienne (2) Liczby zmiennoprzecinkowe >>> 3 3.75 / 1. 5 7. 5 >>> 7. 0 / 2 3. 5 Liczby zespolone >>> a =1.5+0.5 j >>> a. r e a l 1. 5 >>> a. imag 0. 5 >>> a (1.5+0.5 j )
Środowisko programisty 7/34 Łańcuchy znaków Cudzysłów >>> spam eggs spam eggs >>> doesn\ t "doesn t" >>> " doesn t" "doesn t" >>> "Yes," he said. "Yes," he said. >>> "\"Yes,\" he said." "Yes," he said. >>> "Isn\ t," she said. "Isn\ t," she said.
Środowisko programisty 8/34 Specjalne cudzysłowy Potrójny p r i n t S k a d n i a : nazwa programu [ OPCJE ] O g l n y o p i s programu. Argumenty : h W y w i e t l ten komunikat pomocy Składnia: nazwa_programu [OPCJE] Ogólny opis programu. Argumenty: -h Wyświetl ten komunikat pomocy
Środowisko programisty 9/34 Operacje na napisach >>> slowo = Napis + A >>> slowo NapisA >>> < + slowo 5 + > <NapisANapisANapisANapisANc ++ apisa > >>> str ing string >>> str. s t r i p ( ) + ing string >>> str. s t r i p ( ) ing F i l e "<stdin >", l i n e 1 str. s t r i p ( ) ing ˆ S y n t a x E r r o r : i n v a l i d s y n t a x
Środowisko programisty 10/34 Podciągi >>> slowo = NapisA >>> slowo [ 5 ] A >>> slowo [ 0 : 2 ] c++ Na >>> slowo [ 3 : 5 ] is >>> slowo [ : 2 ] Na >>> slowo [ 4 : ] sa
Środowisko programisty 11/34 Podciągi (2) >> slowo [ : 2 ] + slowo [ 2 : ] NapisA >>> slowo [ : ] NapisA >>> slowo [ 1 : 1 0 0 ] apisa c++ >>> slowo [ 1 0 : ] >>> slowo [ 2 : 1 ] >>> slowo [ 1 0 0 ] Traceback ( most r e c e n t c a l l l a s t ) : F i l e "<stdin >", l i n e 1, i n <module> I n d e x E r r o r : s t r i n g i n d e x out o f range
Środowisko programisty 12/34 Podciągi (3) Ujemne indeksy >>> slowo [ 1] A >>> slowo [ 2:] sa >>> slowo [: 2] Napi Uwaga na: >>> slowo [ 100:] NapisA >>> slowo [ 10] Traceback ( most r e c e n t c a l l l a s t ) : F i l e "<stdin >", l i n e 1, i n <module> I n d e x E r r o r : s t r i n g i n d e x out o f range
Środowisko programisty 13/34 Ciągi znaków są niezmienne >>> slowo [ 0 ] = x Traceback ( most r e c e n t c a l l l a s t ) : F i l e "<stdin >", l i n e 1, i n <module> TypeError : str o b j e c t does not s u p p o r t item assignment >>> slowo = x + slowo [ 1 : ] >>> slowo xapisa >>> slowo [ : 1 ] = Wiekszy Traceback ( most r e c e n t c a l l l a s t ) : F i l e "<stdin >", l i n e 1, i n <module> TypeError : str o b j e c t does not s u p p o r t item assignment >>> slowo = Wiekszy + slowo [ 1 : ] >>> slowo WiekszyapisA
Środowisko programisty 14/34 Operacje na łańcuchach znaków >>> l i = [ pwd=secret, user=master, uid=sa ] >>> s = ";". j o i n ( l i ) >>> s pwd= secret; user= master; uid=sa >>> s. s p l i t ( ";" ) [ pwd=secret, user=master, uid=sa ] >>> s. s p l i t ( ";", 1) [ pwd=secret, user=master;uid=sa ]
Środowisko programisty 15/34 Listy Tworzenie >>> a = [ spam, eggs, 100, 1234] >>> a [ spam, eggs, 100, 1234] Pusta lista >>> b = [ ] >>> p r i n t b [ ]
Środowisko programisty 16/34 Listy (2) Odwoływanie się do elementów >>> a [ 0 ] spam >>> a [ 3 ] 1234 >>> a [ 2] 100 >>> a [1: 1] [ eggs, 100] >>> a [ : 2 ] + [ bacon, 2 2] [ spam, eggs, bacon, 4 ] >>> 2 a [ : 3 ] + [ Boo! ] [ spam, eggs, 100, spam, eggs, 100, Boo! ]
Środowisko programisty 17/34 Listy (3) Przypisywanie wartości >>> p r i n t a [ spam, eggs, 100, 1234] >>> a [ 2 ] = a [ 2 ] + 23 >>> p r i n t a [ spam, eggs, 123, 1234]
Środowisko programisty 18/34 Listy (4) Przypisywanie wartości cd. >>> a [ 0 : 2 ] = [ 1, 1 2 ] >>> a [ 1, 12, 123, 1234] >>> a [ 0 : 2 ] = [ ] >>> a [ 1 2 3, 1234] >>> a [ 1 : 1 ] = [ b, xyz ] >>> a [ 1 2 3, b, xyz, 1234] >>> a [ : 0 ] = a >>> a [ 1 2 3, b, xyz, 1234, 123, b, xyz, 1234] >>> a [ : ] = [ ] >>> a [ ]
Środowisko programisty 19/34 Listy zagnieżdżone >>> q = [ 2, 3 ] >>> p = [ 1, q, 4 ] >>> l e n ( p ) 3 >>> p [ 1 ] [ 2, 3 ] >>> p [ 1 ] [ 0 ] 2 >>> p [ 1 ]. append ( xtra ) >>> p [ 1, [ 2, 3, xtra ], 4 ] >>> q [ 2, 3, xtra ]
Środowisko programisty 20/34 Krotki >>> k = ( 1, a, 1. 7 5 ) >>> k ( 1, a, 1. 7 5 ) >>> k [ 1 ] a >>> k [ 1 ] = b Traceback ( most r e c e n t c a l l l a s t ) : F i l e "<stdin >", l i n e 1, i n <module> TypeError : tuple o b j e c t does not s u p p o r t item assignment >>> k [ 2 : ] ( 1. 7 5, )
Środowisko programisty 21/34 Reguły składni języka Python Podstawowe reguły Instrukcje wykonywane są kolejno, chyba że nakażemy inaczej Bloki i granice instrukcji są wykrywane automatycznie Instrukcje złożone to nagłówek, :, instrukcje wcięte Spacje i komentarze są przeważnie ignorowane
Środowisko programisty 22/34 Reguły składni języka Python Ograniczniki instrukcji Instrukcje mogą rozciągać się na kilka wierszy, jeśli obejmują otwartą parę synktatyczną Instrukcje mogą obejmować wiele wierszy, jeśli się kończą ukośnikiem
Środowisko programisty 23/34 Przykłady wierszy kontynuacyjnych L = [ "Dobry", "Zly", "Brzydki" ] i f a == b and c == d and \ d == e and f == g : p r i n t prawda i f ( a == b and c == d and d == e and f == g ) : p r i n t prawda
Środowisko programisty 24/34 Instrukcja if Składnia i f <t e s t 1 >: <i n s t r u k c j e 1 > e l i f <t e s t 2 >: <i n s t r u k c j e 2 > e l s e : <i n s t r u k c j e 3 >
Środowisko programisty 25/34 Instrukcja if (2) Przykład: >>> wybor = jajka >>> i f wybor == mielonka :... p r i n t 1.25... e l i f wybor == szynka :... p r i n t 1.99... e l i f wybor == jajka :... p r i n t 0.99... e l i f wybor == bekon :... p r i n t 1.10... e l s e :... p r i n t Zly wybor... 0.99
Środowisko programisty 26/34 Instrukcja while Składnia while <t e s t >: <i n s t r u k c j e 1 > e l s e : <i n s t r u k c j e 2 >
Środowisko programisty 27/34 Instrukcja while Przykłady >>> x = mielonka >>> while x :... p r i n t x,... x = x [ 1 : ]... mielonka i e l o n k a e l o n k a l o n k a onka nka ka a >>> a =0; b=10 >>> while a < b :... p r i n t a,... a = a + 1... 0 1 2 3 4 5 6 7 8 9
Środowisko programisty 28/34 break, continue, pass i else break continue pass pętla else blok Ogólny format pętli while <t e s t >: <i n s t r u k c j e 1 > i f <t e s t >: break i f <t e s t >: continue e l s e : <i n s t r u k c j e 2 >
Środowisko programisty 29/34 Pętla for Składnia f o r <c e l > i n <o b i e k t >: <i n s t r u k c j e > i f <t e s t >: break i f <t e s t >: continue e l s e : <i n s t r u k c j e >
Środowisko programisty 30/34 Pętla for - przykłady Przykład 1: >>> f o r x i n [ "mielonka", "jajka", "szynka" ] :... p r i n t x,... mielonka j a j k a szynka Przykład 2: >>> sum = 0 >>> f o r x i n [ 1, 2, 3, 4 ] :... sum = sum + x... >>> sum 10
Środowisko programisty 31/34 Pętla for - przykłady (2) Przykład 3: >>> seq1 = "kulka" >>> seq2 = "kurka" >>> >>> r e s = [ ] >>> f o r x i n seq1 :... i f x i n seq2 :... r e s. append ( x )... >>> r e s [ k, u, k, a ]
Środowisko programisty 32/34 Pętle licznikowe i range() Funkcja range() >>> range ( 5 ) [ 0, 1, 2, 3, 4 ] >>> range ( 0, 10, 2) [ 0, 2, 4, 6, 8 ]
Środowisko programisty 33/34 Pętle licznikowe >>> X = mielonka >>> f o r p o z y c j a i n X : p r i n t pozycja,... m i e l o n k a >>> i = 0 >>> while i < l e n (X ) :... p r i n t X[ i ], ; i = i +1... m i e l o n k a >>> f o r i i n range ( l e n (X ) ) : p r i n t X[ i ],... m i e l o n k a >>> f o r i i n range ( 3 ) : p r i n t i, Drzwi... 0 Drzwi 1 Drzwi 2 Drzwi
Środowisko programisty 34/34 W wykładzie wykorzystano materiały The Python Tutorial, http://docs.python.org/tutorial/index.html Mark Lutz, David Ascher, Python. Wprowadzenie, Helion, 2002