Python konsola tekstowa Krzysztof Katarzyński Centrum Astronomii UMK Mój maż, jak większość ludzi w jego wieku, ma 50 lat. Latajacy Cyrk Monty Pythona
Tryb tak zwanej konsoli tekstowej W systemach MS Windows wykonujemy polecenie cmd aby otworzyć tzw. konsolę tekstowa (Command Shell), w której możemy uruchomić interpreter Pythona. Krzysztof Katarzyński, CA UMK Konsola, strona 2/33
Python w konsoli tekstowej Tryb konsolowy uruchamiamy piszac po prostu python Python 2.7.1+ ( r271 :86832, Apr 11 2011, 18:05:24) [ GCC 4.5.2] on linux2 Type " help ", " copyright ", " credits " or " license " for more information. >>> Konsola zawiera podręczna dokumentację, która możemy wywołać pisz ac help() >>> help () Welcome to Python 2.7! This is the online help utility. If this is your first time using Python, you should definitely check out the tutorial on the Internet at http :// docs. python.org / tutorial /. Enter the name of any module, keyword, or topic to get help on writing Python programs and using Python modules. To quit this help utility and return to the interpreter, just type " quit ". To get a list of available modules, keywords, or topics, type " modules ", " keywords ", or " topics ". Each module also comes with a one -line summary of what it does ; to list the modules whose summaries contain a given word such as "spam ", type " modules spam ". Krzysztof Katarzyński, CA UMK Konsola, strona 3/33
Pomoc Wpisujac w modzie pomocy np. help> math Help on built - in module math : NAME math FILE ( built -in) DESCRIPTION This module is always available. It provides access to the mathematical functions defined by the C standard. FUNCTIONS acos (...) acos (x) Return the arc cosine ( measured in radians ) of x. otrzymamy informacje o module math, który zawiera podstawowe funkcje matematyczne. Z danej stron pomocy wychodzimy klawiszem q a z całego trybu przez quit. Krzysztof Katarzyński, CA UMK Konsola, strona 4/33
Podstawowe obliczenia matematyczne Najprostszym sposobem wykorzystania konsoli sa obliczenia >>> 123.7+12.5 # dodawanie 136.2 >>> 17. 6-45. 2 # odejmowanie -27.6 >>> 6*9 # mno ż enie 54 >>> 37.8*1.35 51.03 >>> 12/ 4 # dzielenie 3 >>> 12/ 5 # UWAGA! 2 # ca ł kowity wynik! Należy jednak pamiętać, że operacja dzielenia wykonana na zmiennych całkowitych da również całkowity rezultat (12/5 = 2). Jest to częsta przyczyna trudnych do wykrycia błędów obliczeniowych, nie tylko w Pythonie ale również w innych językach programowania. Krzysztof Katarzyński, CA UMK Konsola, strona 5/33
Podstawowe obliczenia matematyczne cd. Rezultat dzielenia będzie liczba rzeczywista jeżeli jedna z liczb użytych w tej operacji będzie rzeczywista >>> 12.0/5 2.4 >>> 12/5.0 2.4 Inne ważne działania matematyczne >>> 2**8 # pot ę gowanie x**n 256 >>> 9**(0.5) # pierwiastkowanie x **(1/ n) 3.0 >>> (9+5)/(7+2)**2.0 # stosowanie nawias ó w 0. 17 28 39 50 61 72 83 95 Krzysztof Katarzyński, CA UMK Konsola, strona 6/33
Moduł math Do bardziej złożonych obliczeń będzie potrzebny nam moduł math. wszystkie (*) funkcje zawarte w tym module możemy wczytać poleceniem: from math import * Możemy teraz przećwiczyć: >>> log ( e) # logarytm naturalny 1.0 >>> log10 (1000) # logarytm dziesi ę tny 3.0 >>> sin ( pi /2)**2+ cos ( pi /2)**2 # jedynka trygonometryczna 1.0 >>> degrees ( pi) # zamiana radian ów na stopnie 180.0 >>> pi # sta ła pi 3.141592653589793 >>> e # liczba Eulera 2.718281828459045 Oprócz znanych funkcji moduł ten zawiera również stałe π i e. Krzysztof Katarzyński, CA UMK Konsola, strona 7/33
Zmienne liczbowe Python nie wymaga deklarowania zmiennych tak jak to jest w innych językach programowania (Fortran, Pascal, C), zmienna jest tworzona w momencie gdy zostanie przypisana jej jakaś wartość: >>> x =3.0 >>> y=7 Na zmiennych liczbowych można wykonywać dowolne operacje matematyczne >>> x+y 10.0 >>> x* y 21.0 >>> x/ y 0.42857142857142855 >>> x**y 2187.0 >>> (x+y )/(x-y) -2.5 Krzysztof Katarzyński, CA UMK Konsola, strona 8/33
Zmienne liczbowe cd. Wartość zmiennej może być wynikiem działania matematycznego >>> z=x*y -2* x+y >>> z 22.0 Użytej wcześniej zmiennej można oczywiście przypisać nowa wartość >>> x=y/z >>> x 0. 31 81 81 81 81 81 81 82 Jeżeli zmienna zostanie użyta bez przypisania jej wcześniej wartości, wygeneruje to bład: >>> a*x Traceback ( most recent call last ): File "< stdin >", line 1, in <module > NameError : name a is not defined Krzysztof Katarzyński, CA UMK Konsola, strona 9/33
Zmienne tekstowe Zmienne tekstowe tworzymy podajac ciag znaków w apostrofie ( ) lub podwójnym apostrofie (" ") >>> a= Ala >>> a Ala >>> b="ma " # podw ó jny apostrof >>> b ma >>> c= kota. Zmienne tekstowe można łatwo dodawać lub mnożyć >>> d=a+b+c >>> d Ala ma kota. >>> 5* b ma ma ma ma ma Krzysztof Katarzyński, CA UMK Konsola, strona 10/33
Zmienne tekstowe jako ciagi znaków Zmienna tekstowa może być traktowana jak ciag znaków. Każdemu znakowi przypisany jest odpowiedni indeks. Pierwszy znak w zmiennej posiada indeks 0 a ostatni indeks n-1, gdzie n jest liczba znaków. Pojedyncze znaki zmiennej tekstowej możemy odczytać podajac w nawiasie kwadratowym odpowiedni indeks >>> d Ala ma kota. >>> d [0] A >>> d [7] k Należy pamiętać, że odstępy (space) to też znaki. Krzysztof Katarzyński, CA UMK Konsola, strona 11/33
Zmienne tekstowe jako ciagi znaków cd. Podajac dwa indeksy możemy pobrać fragment zmiennej tekstowej >>> d Ala ma kota. >>> d [0:3] Ala # znaki o indeksach 0, 1, 2 bez 3! >>> d [4:10] ma kot # znaki o indeksach od 4 do 9 bez 10! >>> d [0:11]+ " i psa." # zmienna d bez kropki na końcu Ala ma kota i psa. # plus dodatkowy człon z psem Jeżeli nie podamy jednego z indeksów to zostanie to potraktowane jak indeks zerowy lub końcowy. >>> d [:7] # od pocz ą tku do znaku o indeksie 6 Ala ma >>> d [7:] # od znaku o indeksie 7 do końca kota. Krzysztof Katarzyński, CA UMK Konsola, strona 12/33
Polskie znaki diakrytyczne pl=" Zażółcić gęślą jaźń" >>> pl Za\xc5 \ xbc \ xc3 \ xb3 \ xc5 \ x82ci \ xc4 \ x87 g\ xc4 \ x99 \ xc5 \ x9bl \ xc4 \ x85 ja\ xc5 \ xba \ xc5 \ x84 # w zmiennej tekstowej zapisane zosta ło # kodowanie polskich liter, przez co # jest ona dużo dłuż sza od tego co # zosta ło bezpo ś rednio wprowadzone >>> print pl Zażółcić gęślą jaźń # aby poprawnie wyś wietli ć tą # zmienn ą musimy użyć polecenia print >>> upl =u" Zażółcić gęślą jaźń" # kodowanie UTF -8 uzyskujemy # wstawiaj ąc literk ę u # przed definicj ą ciągu >>> upl u Za\ u017c \ xf3 \ u0142ci \ u0107 g\ u0119 \ u015bl \ u0105 ja\ u017a \ u0144 >>> print ulp # ponownie stosujemy print Zażółcić gęślą jaźń Krzysztof Katarzyński, CA UMK Konsola, strona 13/33
Znaki specjalne w zmiennych tekstowych \\ backslash (\) \ apostrof ( ) \" podw ó jny apostrof (") \a dźwięk \ b backspace \f formfeed \ n prze ł amanie linii \ N{ name } nazwa znaku w unikodzie \r powr ót kursora \ t tabulacja horyzontalna \ uxxxx 16- bit hex ( unikod ) \ Uxxxxxxxx 32- bit hex ( unikod ) \ v wertykalna tabulacja \ ooo octal oo \ xhh hex hh Krzysztof Katarzyński, CA UMK Konsola, strona 14/33
Przykład zastosowania znaków specjalnych >>> t="\\ ważna sprawa \\" # \\ backslash >>> print t \ ważna sprawa \ >>> t="\"ś wietna \" sprawa " # \" apostrof >>> print t "ś wietna " sprawa >>> t=" bip \ a" # \ a sygna ł konsoli >>> print t >>> t=" schody \ fschody \ fschody " # \ f formfeed >>> print t schody schody schody >>> t=" prze ł amanie \ nlinii " # \n >>> print t prze ł amanie linii Krzysztof Katarzyński, CA UMK Konsola, strona 15/33
Zastosowanie znaków specjalnych cd. >>> t=" ------\r +++ " # \r powr ót do pocz ą tku linii >>> print t +++ - - - >>> t=" tabulacja \ thoryzontalna " # \ t >>> print t tabulacja horyzontalna >>> t=" tabulacja \ vwertykalna " # \ v >>> print t tabulacja wertykalna >>> t=" o kreskowane czyli \ xc3 \ xb3 " # \ xhh zapis >>> print t # heksadecymalny o kreskowane czyli ó Krzysztof Katarzyński, CA UMK Konsola, strona 16/33
Zmienna tekstowa jako obiekt Zmienna tekstowa jest obiektem klasy string (większość elementów Pythona to obiekty), który posiada szereg tzw. metod. Metody te stosujemy poprzez: nazwa_zmiennej.metoda(argumenty) >>> t=" abcdefghijk "# przyk ł adowy ciąg znak ów - string >>> t. capitalize () # wstawia dużą pierwsz ą liter ę Abcdefghijk >>> t. center (22) # centruje napis na zadanej dł ugo ści abcdefghijk >>> t. count (" cd") # zlicza liczb ę " cd" w całej zmiennej 1 >>> t. find (" de") # wyszukuje ciąg znak ów 3 >>> t. isalnum () # sprawdza czy wszystkie znaki True # są alfanumeryczne >>> w=" 1234 @abcd " # alternatywny ciąg >>> w. isalnum () False Krzysztof Katarzyński, CA UMK Konsola, strona 17/33
Zmienna tekstowa jako obiekt cd. >>> t = " ****** tytu ł ****** " >>> print t. strip ("*") # usuwa pocz ą tkowe i koń cowe znaki "*" tytu ł >>> t=" list. txt " t. replace (" txt ", " doc ")# zast ę puje stary podci ąg nowym list. doc >>> n,r = t. split (".") # dzieli napis uż ywaj ąc >>> n; r # podanego separatora list txt t. isdigit () # sprawdza czy wszystkie znaki są liczbami t. islower () # sprawdza czy wszystkie litery są małe s. isspace () # sprawdza czy wszystkie znaki są,, spacjami s. isupper () # sprawdza czy wszystkie litery są duże s. lstrip ( x) # usuwa pocz ą tkowe znaki x s. rstrip ( x) # usuwa koń cowe znaki x Nie sa to wszystkie metody, które można zastosować na zmiennych tekstowych, resztę można znaleźć w dokumentacji. Krzysztof Katarzyński, CA UMK Konsola, strona 18/33
Wszystkie funkcje wbudowane Pythona Funkcje wbudowane to takie, które zawsze można użyć bez konieczności wczytywania dodatkowych modułów. abs() divmod() input() open() staticmethod() all() enumerate() int() ord() str() any() eval() isinstance() pow() sum() basestring() execfile() issubclass() print() super() bin() file() iter() property() tuple() bool() filter() len() range() type() bytearray() float() list() raw_input() unichr() callable() format() locals() reduce() unicode() chr() frozenset() long() reload() vars() classmethod() getattr() map() repr() xrange() cmp() globals() max() reversed() zip() compile() hasattr() memoryview() round() import () complex() hash() min() set() apply() delattr() help() next() setattr() buffer() dict() hex() object() slice() coerce() dir() id() oct() sorted() intern() Krzysztof Katarzyński, CA UMK Konsola, strona 19/33
Przykłady użycia niektórych wbudowanych funkcji ### abs ### >>> abs ( -12.3) # warto ść absolutna 12.3 ### bin ### >>> bin (9) # zamiana liczby cał kowitej na binarny ciąg znak ów 0 b1001 # poprzedzony 0b, 8 to 1000, 9 to 1001 ### bool ### >>> bool (2 <1) # zamienia wyra ż enie na warto ść logiczn ą False # prawda / fałsz ### chr ### >>> chr (97) # zwraca znak któ remu przypisana jest odpowiednia a # warto ść kodowa ### dict ### >>> dict ( jeden =1, dwa =2, trzy =3) # tworzy tzw. sł ownik { dwa : 2, trzy : 3, jeden : 1} Krzysztof Katarzyński, CA UMK Konsola, strona 20/33
Funkcje wbudowane cd. ### eval ### >>> eq=" x **2+2* x+4" # wyra ż enie matematyczne jako ciąg znak ów >>> x=3 >>> eval ( eq) # eval - wylicza warto ść wyra ż enia 19 # dla podanej wcze ś niej warto ści x >>> x=1 >>> eval ( eq) 7 >>> x =7.123 >>> eval ( eq) 68.983129 ### float ### >>> float (" 1.0e -1") # przekszta łca ciąg znak ów lub liczb ę 0.1 # cał kowit ą na liczb ę zmiennoprzecinkow ą >>> float (" 1234 ") # ( ang. floating point number ) 1234.0 >>> 12/ float (5) # inny spos ób na problem z dzieleniem 2.4 # liczb cał kowitych Krzysztof Katarzyński, CA UMK Konsola, strona 21/33
Funkcje wbudowane cd. ### int ### >>> int (1234.2) # przekszta łca napis lub liczb ę na liczb ę 1234 # cał kowit ą >>> int (1234.7) # bez zaokr ą glania 1234 >>> int (1.0e -1) 0 >>> int (" 1234 ") # jeśli argument jest napisem, musi 1234 # reprezentowa ć liczb ę cał kowit ą ### len ### >>> w=" 1234567 " >>> len ( w) # zwraca dł ugo ść zmiennej 7 >>> d= dict ( jeden =1, dwa =2, trzy =3) >>> len ( d) # len można stosowa ć dla róż nych typ ów 3 # zmiennych, np. sł ownik ów >>> l =[1,2,3,4] # lub list >>> len (l) 4 Krzysztof Katarzyński, CA UMK Konsola, strona 22/33
Funkcja wbudowane list, min, max ### list ### >>> list (" abc ") # tworzy list ę identycznych element ów [ a, b, c ] >>> list ((1,2,3)) # list pobiera jeden argument dlatego [1, 2, 3] # trzy liczby zosta ły umieszczone w () >>> list ((1,2,3, "a", "b")) # lista może się składa ć ze [1, 2, 3, a, b ] # zmiennych róż nych typ ów ### min & max ### >>> s = list ((7,1,5)) >>> max ( s) # zwraca najwi ę kszy element listy 7 >>> min ( s) # zwraca najmniejszy element listy 1 >>> s = list (" cfgizxv ") >>> max ( s) # funkcjonuje ró wnie ż na znakach z >>> min (s) c >>> s = list ((5,1,7, "h", "m", "n", "k")) >>> min ( s) # oraz listach mieszanych 1 >>> max (s) n Krzysztof Katarzyński, CA UMK Konsola, strona 23/33
Funkcja wbudowana map # nag łó wek from math import sqrt # pierwiastkowanie ### map ### wykonuje funkcj ę na każ dym elemencie listy >>> c= list (" 1234 ") # przyk ł adowa lista >>> c [ 1, 2, 3, 4 ] >>> r= map ( float, c) # zamiana znak ów na liczby >>> r [1.0, 2.0, 3.0, 4.0] >>> map ( sqrt, r) # pierwiastkowanie [1.0, 1.4142135623730951, 1.7320508075688772, 2.0] >>> def fun ( x): return x* x # wł asna funkcja... >>> map (fun,r) [1.0, 4.0, 9.0, 16.0] Krzysztof Katarzyński, CA UMK Konsola, strona 24/33
Funkcja wbudowana range ### range ### tworzy ciąg liczb cał kowitych >>> range (5) # 5 element ów licz ąc od zera [0, 1, 2, 3, 4] # czyli ostatni to 4 >>> range (3,9) # od 3 do 9, wbrew oczekiwaniom ostatni [3, 4, 5, 6, 7, 8] # element to nie 9 bo 9-3=6 element ów >>> range (5,25,5) # od 5 do 25 z krokiem 5, podobnie wbrew [5, 10, 15, 20] # oczekiwaniom ostatni element to nie 25 >>> range (5,26,5) # od 5 do 26 z korkiem 5, teraz [5, 10, 15, 20, 25] # ostatni element to faktycznie 25 >>> range ( -1, -10, -2) # ujemy krok [-1, -3, -5, -7, -9] >>> range (7,3) # źle okre ś lony zakres [] >>> range (0) [] Krzysztof Katarzyński, CA UMK Konsola, strona 25/33
Funkcja wbudowana raw_input ### raw_input ### wprowadzanie,, surowych danych >>> s= raw_input () ciąg znak ów >>> s ci\xc4 \ x85g znak \ xc3 \ xb3w >>> print s ciąg znak ów >>> a= raw_input () 1234.4 # wbrew pozorom to nie jest liczba >>> a*2 # obrazuje to np. takie mno ż enie 1234.41234.4 >>> 2* float ( a) # nale ży skorzysta ć z float () aby dosta ć 2468.8 # prawid ł owy wynik Krzysztof Katarzyński, CA UMK Konsola, strona 26/33
Funkcja wbudowana round ### round ### # zaokr ą gla liczby rzeczywiste >>> a = round (5.1234) # do warto ści cał kowitej >>> a 5.0 >>> a/2 # aczkolwiek rezultat jest liczb ą 2.5 # rzeczywist ą >>> round (5.1234, 2) # do dwóch miejsc po przecinku 5.12 >>> round (5.1234, 3) # do trzech miejsc po przecinku 5.123 >>> round (5.123456789, 2) # zaokr ą glanie w dół 5.12 >>> round (5.123456789, 5) # zaokr ą glanie w górę 5.12346 >>> round (5.123456789, 7) # zaokr ą glanie w górę 5.1234568 Krzysztof Katarzyński, CA UMK Konsola, strona 27/33
Funkcja wbudowana str ### str ### przekszta łca zmienn ą na ciąg znak ów - string >>> a =1.23 >>> b =2.34 >>> c =3.45 >>> s=" parametry a="+ str (a)+", b="+ str (b)+", c="+ str (c) >>> s parametry a =1.23, b =2.34, c =3.45 # argument str () może być: >>> str ( a+b) # liczb ą rzeczywist ą lub cał kowit ą 3.57 >>> c= complex (12, 7) # liczb ą zespolon ą >>> str (c) (12+7 j) >>> str (2 <1) # wyra ż eniem logicznym False >>> str (2* " test ") # cią giem znak ów test test Krzysztof Katarzyński, CA UMK Konsola, strona 28/33
Funkcja wbudowana tuple ### tuple ### tworzy krotki ( ang. tuple ) >>> t = tuple (" abcdef ") # funkcja podobna do list () >>> t ( a, b, c, d, e, f ) # krotki w przeciwie ń stwie # do list ograniczone są # przez nawiasy () >>> t [1] = " test " # krotki to listy któ rych Traceback ( most recent call last ): # nie można modyfikowa ć! File " <stdin >", line 1, in <module > TypeError : tuple object does not support item assignment >>> t [1] # można je odczytywa ć na różne sposoby b >>> tuple ((1,2,3,4)) # tak moż emy utworzy ć ciąg (1, 2, 3, 4) # liczb >>> tuple ((1,2,3, "a", " bcd ")) # a tak możemy utworzy ć ciąg (1, 2, 3, a, bcd ) # mieszany Krzysztof Katarzyński, CA UMK Konsola, strona 29/33
Funkcja wbudowana type ### type ### zwraca typ zmiennej >>> type (2 <1) # logiczna <type bool > >>> type (" wyraz ") # ciąg znak ów <type str > >>> type (13) # liczba cał kowita <type int > >>> type (12.4) # liczba rzeczywista <type float > >>> c= complex (2,3) # liczba zespolona >>> type (c) <type complex > >>> def f( x): pass # funkcja... >>> type (f) <type function > Krzysztof Katarzyński, CA UMK Konsola, strona 30/33
Funkcja wbudowana zip ### zip ### łą czy listy lub krotki w list ę krotek >>> a = list (" 123 ") # przyk ł adowa lista a=[ 1, 2, 3 ] >>> b = list (" 456 ") # przyk ł adowa lista b=[ 4, 5, 6 ] >>> zip (a, b) # łą czenie i rezultat [( 1, 4 ), ( 2, 5 ), ( 3, 6 )] >>> c = list (" 567 ") # dodatkowa lista c=[ 5, 6, 7 ] >>> zip (a,b, c) # połą czenie trzech list [( 1, 4, 5 ), ( 2, 5, 6 ), ( 3, 6, 7 )] >>> d= list (" abcdef ")# lista d dłuż sza niż pozosta łe >>> d [ a, b, c, d, e, f ] >>> zip (a,b,c, d) # rezultat ograniczony jest do dł ugo ści # najkr ó tszej listy [( 1, 4, 5, a ), ( 2, 5, 6, b ), ( 3, 6, 7, c )] >>> e= list (" pq") # lista dwuelementowa e >>> zip (a,b,c,d, e) # rezultat zawiera tylko dwie krotki [( 1, 4, 5, a, p ), ( 2, 5, 6, b, q )] Krzysztof Katarzyński, CA UMK Konsola, strona 31/33
Zakończenie pracy w konsoli Pracę w konsoli Pythona można zakończyć piszac exit() lub quit(). Należy pamiętać o nawiasach () na końcu tych poleceń bo jest to po prostu wywołanie funkcji podobne do wywołania np. list(). Gdy zapomnimy o nawiasach ujrzymy taka poradę: >>> exit Use exit () or Ctrl -D (i.e. EOF ) to exit >>> quit Use quit () or Ctrl -D (i.e. EOF ) to exit Wyjść z konsoli można również poprzez kombinację klawiszy Ctr-D. Krzysztof Katarzyński, CA UMK Konsola, strona 32/33
Wszelkie prawa zastrzez one! Rozpowszechnianie oraz wykorzystywanie kursu i programów do niego dołaczonych, w całos ci lub fragmentach bez zgody autora jest zabronione!