Python: kurs programowania. Część II: typy danych i podstawowe operacje
W dużym uproszczeniu języki programowania można podzielić na dwie części: struktury danych, dzięki którym możemy przetrzymywać w programie potrzebne informacje, a także wyrażenia przybierające z grubsza formę operacji oferowanych nam przez język. W tej części zajmiemy się podstawami pierwszej z tych dziedzin.
Zanim zaczniesz lekturęSugerujemy wcześniejsze zapoznanie się z następującymi tekstami. Wprowadzają one do zagadnień związanych z Pytonem i programowaniem w tym języku.
|
Spojrzałeś już z lotu ptaka na język Python. Czas więc skupić się na szczegółach jego działania. W tej części kursu postaram się przybliżyć metody działań na liczbach i obiektach tekstowych. Będzie to przypominało nabywanie umiejętności właściwe uczniom klas 1-3 szkoły podstawowej. Wiedza z tamtego okresu bardzo się nam jednak dzisiaj przyda.
Abecadło z pieca spadło
Zaczniemy od tekstu. Głównym celem mechanizmów udostępnionych przez Pythona, związanych z napisami, jest możliwość odwoływania się do ich poszególnych liter lub fragmentów ciągów znaków. W terminologii języków programowania napis nosi nazwę string (pol. seria [znaków]).
Weźmy sobie przykładową treść, powiedzmy "Ala ma kota, a kot ma Alę". Aby ułatwić sobie zadanie, przypiszemy naszemu zdaniu nazwę "zmienna".
>>> zmienna = 'Ala ma kota, a kot ma Alę'
| Zadane polecenia wykonuj w konsoli Pythona. Symbol trzech znaków większości '>>> ' nie należy do polecenia, które powinieneś wpisać. W ten sposób będę oznaczał konieczność wpisania czegoś w konsoli. |
Odwołanie do pojedynczego znaku odbywa się przez podanie jego pozycji (liczby). Pierwsza litera znajduje się na pozycji 0:
>>> zmienna[0] # Pierwszy znak
'A'
>>> zmienna[7] # Ósmy znak
'k'
Możemy też odwoływać się do kolejnych liter od końca. Wystarczy, że zaczniemy podawać wartości ujemne.
>>> zmienna[-1] # Ostatni znak
'ę'
>>> zmienna[-2] # Przedostatni znak
'l'
>>> zmienna[-7] # Siódmy od końca
' '
Nic nie stoi również na przeszkodzie, aby wyciągać ze stringów całe zakresy. Robimy to, podając dwie liczby rozdzielone dwukropkiem:
>>> zmienna[7:11] # Znaki od siódmego do jedenastego
'kota'
>>> zmienna[14:-1] # Znaki od czternastego do przedostatniego
'kot ma Al'
Przedziały, jak widać, są otwarte z prawej strony. Aby wskazać koniec lub początek napisu, pomijamy indeks.
>>> zmienna[:11] # Od początku do jedenastego znaku
'Ala ma kota'
>>> zmienna[14:] # Od czternastego do końca
'kot ma Alę'
|
Pominięcie pierwszego indeksu jest równoznaczne z użyciem w jego miejscu liczby "0". Aby sprawdzić długość napisu, użyj funkcji len() (tłum. length - długość).
|
| Napis wcale nie musi być opisany zmienną. |
|---|
Powyższa komenda zwróci ten sam wynik co analogiczny przykład w kursie. Dobrze jednak pamiętać o tym, że wszelkie operacje możemy wykonywać równie dobrze bezpośrednio "na stringu" bez pośrednictwa zmiennej. |
Metody stringów
Cięcie stringów na kawałki to nie wszystko. Python definiuje wiele innych operacji związanych z tekstem zwanych metodami (ang. methods). Możemy dzięki nim sprawdzać, czy nasz napis zawiera wyłącznie cyfry (python: isdigit), liczby i znaki (python: isalnum) czy też składa się wyłącznie z małych liter (python: islower).
>>> PESEL = "00071779234"
>>> nr_dowodu = "POL123789"
>>> nr_dowodu.isalnum()
True
>>> PESEL.isdigit()
True
>>> "ala ma kota a kot ma alę".islower()
True
>>> zmienna.isalpha()
False
Python odpowie nam także na nasze pytania, zwracając True (pol. Prawda) lub False (pol. Fałsz). Ostatnie porównanie sprawdzało, czy nasze zdanie zawarte w zmiennej składa się wyłącznie z liter. Niestety, występują tam spacje oraz przecinek - stąd wartość False.
| Wartości logiczne w Pythonie |
|---|
|
Wartości True i False, nazywamy wartościami logiczny. Nie są to ani liczby, ani napisy. Są to określenia oznaczające w Pythonie "prawdę" i "fałsz". |
Tekst możemy również zmodyfikować. Na przykład podmienić Alę na Olę
>>> zmienna.replace('Al', 'Ol')
'Ola ma kota, a kot ma Olę'
Zamienić wszystkie litery na wielkie:
>>> zmienna.upper()
'ALA MA KOTA, A KOT MA ALĘ'
Lub zamienić je na małe:
>>> zmienna.lower()
'ala ma kota, a kot ma alę'
Możemy też sprawić, aby wyglądał jak tytuł:
>>> zmienna.title()
'Ala Ma Kota, A Kot Ma Alę'
W reszcie możemy też spróbować zdobyć pewne informacje o napisie. Na przykład, na jakiej pozycji znajduje się wyraz kot.
>>> zmienna.find('kot')
7
Lub sprawdzić czy zdanie zaczyna się na Ala:
>>> zmienna.startswith('Ala')
True
Nie jest trudno także policzyć liczbę wystąpień litery 'a' - wykorzystujemy tutaj metodę count().
>>> zmienna.count('a')
5
Oczywiście, zaprezentowane możliwości to tylko część z dostępnych metod. Pełną listę znajdziesz pod adresem [http://docs.python.org/3.1/library/stdtypes.html#string-methods]. Do większość, pominiętych w tej części kursu, wrócimy już wkrótce, gdy tylko poznasz inne struktury danych.
«poprzednia 1 2 3 4 następna »
Polecamy
Reklama
Komentarze
Aby dodać komentarz, musisz podać swój nick, treść komentarza oraz poprawnie przepisać oba słowa z obrazka
(słowa muszą być rozdzielone spacją).
W treści komentarza można używać języka formatowania BBcode.
Popularne
MSWiA zamówiło narzędzia do „złamania” Tora i podsłuchiwania internautów. Czy złamało przy tym prawo?
89
Korea Północna: korzystasz z telefonu komórkowego? Jesteś więc zbrodniarzem wojennym
5
Nowa polityka prywatności Google'a już za miesiąc wejdzie w życie. Mamy się czego bać?
16
Firefox 10 już jest. Wiele atrakcji dla programistów, użytkownicy raczej nic nie zauważą
9
Pobieraczek.pl pozwie internautów, którzy nie chcą płacić abonamentu
1451
Linux wypiera z korporacyjnych serwerów już nie tylko Uniksy, ale i Windows
11
Źle się dzieje z Chrome, ze stabilnością coraz gorzej. Gdzie się podziała słynna izolacja procesów?
23
MSWiA zamówiło narzędzia do „złamania” Tora i podsłuchiwania internautów. Czy złamało przy tym prawo?
89
[Aktualizacja] Facebook zablokował Demotywatory.pl. W czym zawiniły?
36
FBI zamknęło Megaupload. Anonimowi dali się sprowokować. Teraz ich akcja uzasadni potrzebę SOPA?
17
Pobieraczek.pl pozwie internautów, którzy nie chcą płacić abonamentu
1451
Rząd Tuska zablokował dostęp do tańszych leków z internetowych aptek
61
Programowanie w środowisku Android – wprowadzenie do projektowania aplikacji dla urządzeń mobilnych
15
„Donald matole, twój rząd dopadną kibole” – hakerska elita przyłącza się do walki z ACTA
23
Społeczność
matrixik A ja już długi czas temu przesiadłem się z Konnecta na Mirandę i jestem...
hipertracker @slawek22, ORM wcale nie musi tworzyć nieoptymalnych kwerend. Poza tym...
Rumcajs Kolejna PRowska ściema Donka. Już mnie krew zalewa.
Artykuł 41...
zalesz o Pan Sławek :)
Patrzę nic się nie zmieniło, w sumie to nic się nie...
slawek22 Jeszcze taka dygresja na poparcie tezy, akurat sobie czytałem o node...
slawek22 Tylko po co mi 5, 10 albo nawet 15 razy szybszy JRuby skoro całą "moc...
pobieraczek.pl zapłacicie wszyscy ;D
- gardius: Dobra hurtownia sportowa (1)
- gardius: Tanie książki gdzie warto kupować? (1)
- Najdmen.pl: PROMOCJA, 500 DOMEN .EU ZA 1 PLN NETTO ! (1)
- VMLine: [Oferta] Serwery VPS Xen-HVM/OpenVZ z darmową administracją (2)
- Marek: Generowanie PDFa (2)
- Marek: problem z menu (2)
- Marek: Własne checkboxy w HTML,CSS (1)
Polecane książki
Praca
Obsługa księgowa z językiem niemieckim
Tech Support Engineer with fluent English and German, French, Italian or Spanish
Młodszy Specjalista w Dziale Należności ze znajomością języka francuskiego
Analityk Baz Danych i Systemów Monitorowania
Menedżer ds. Klienta Biznesowego
Starszy Programista Aplikacji Internetowych/Team Leader
Czytaj Webhosting
Chcesz być na bieżąco z naszymi informacjami? Zapisz się na Newsletter.
Zarejestruj domenę
Sprawdź dostępność swojej domeny:
| .pl: | 0 zł | .com: | 19.90 zł | |
|---|---|---|---|---|
| .com.pl: | 0 zł | .eu: | 19.90 zł |









#1 hr. 2009-11-30 11:18:32 0
IP: 62.129.252.[...] Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en-US; rv:1.9.2b4) Gecko/20091124 Firefox/3.6b4
#2 Jan Koprowski® 2009-11-30 11:23:33 0
IP: 192.198.151.[...] Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.195.33 Safari/532.0
#3 Doc 2009-11-30 12:18:28 0
IP: 83.31.128.[...] Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.5) Gecko/20091109 Ubuntu/9.10 (karmic) Firefox/3.5.5
#4 Doc 2009-11-30 12:30:04 0
IP: 83.31.128.[...] Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.5) Gecko/20091109 Ubuntu/9.10 (karmic) Firefox/3.5.5
#5 szuki® 2009-11-30 18:54:08 0
IP: 78.8.152.[...] Mozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/532.5 (KHTML, like Gecko) Chrome/4.0.249.0 Safari/532.5
#6 Jan Koprowski® 2009-12-01 09:06:55 0
IP: 192.198.151.[...] Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.195.33 Safari/532.0
#7 D3vill® 2009-12-03 20:41:04 0
IP: 83.13.46.[...] Mozilla/5.0 (Windows; U; Windows NT 6.1; pl; rv:1.9.1.5) Gecko/20091102 Firefox/3.5.5
#8 Jan Koprowski® 2009-12-04 15:21:16 0
IP: 89.79.56.[...] Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.195.33 Safari/532.0
#9 dAREuS® 2009-12-04 15:36:30 0
IP: 85.128.102.[...] Opera/9.80 (Windows NT 6.0; U; pl) Presto/2.2.15 Version/10.10
#10 D3vill® 2009-12-05 18:25:26 0
IP: 83.13.46.[...] Mozilla/5.0 (Windows; U; Windows NT 6.1; pl; rv:1.9.1.5) Gecko/20091102 Firefox/3.5.5
#11 Jan Koprowski® 2009-12-05 20:33:11 0
IP: 89.79.56.[...] Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.195.33 Safari/532.0
#12 D3vill® 2009-12-05 21:21:07 0
IP: 83.13.46.[...] Mozilla/5.0 (X11; U; Linux i686; pl-PL; rv:1.9.1.5) Gecko/20091109 Ubuntu/9.10 (karmic) Firefox/3.5.5
#13 Jan Koprowski® 2009-12-05 21:46:31 0
IP: 89.79.56.[...] Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.195.33 Safari/532.0
#14 D3vill® 2009-12-05 21:58:31 0
IP: 83.13.46.[...] Mozilla/5.0 (X11; U; Linux i686; pl-PL; rv:1.9.1.5) Gecko/20091109 Ubuntu/9.10 (karmic) Firefox/3.5.5
#15 Jan Koprowski® 2009-12-06 07:01:34 0
IP: 89.79.56.[...] Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.195.33 Safari/532.0
#16 dosia103 2009-12-12 19:35:26 0
IP: 83.10.34.[...] Mozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.9.0.15) Gecko/2009101601 Firefox/3.0.15
#17 Zxczzx 2009-12-31 13:51:09 0
IP: 79.191.54.[...] Mozilla/5.0 (X11; U; Linux x86_64; pl-PL; rv:1.9.1.6) Gecko/20091215 Ubuntu/9.10 (karmic) Firefox/3.5.6
#18 D3vill® 2009-12-31 15:38:16 0
IP: 83.13.46.[...] Mozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6
#19 Zxczzx 2009-12-31 16:13:29 0
IP: 79.191.54.[...] Mozilla/5.0 (X11; U; Linux x86_64; pl-PL; rv:1.9.1.6) Gecko/20091215 Ubuntu/9.10 (karmic) Firefox/3.5.6
#20 D3vill® 2009-12-31 23:19:22 0
IP: 83.13.46.[...] Mozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6
#21 Zxczzx 2010-01-01 14:44:55 0
IP: 79.191.33.[...] Mozilla/5.0 (X11; U; Linux x86_64; pl-PL; rv:1.9.1.6) Gecko/20091215 Ubuntu/9.10 (karmic) Firefox/3.5.6
#22 D3vill® 2010-01-01 23:10:32 0
IP: 83.13.46.[...] Mozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6
#23 romanow 2011-04-04 08:38:33 0
IP: 77.255.52.[...] Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.204 Safari/534.16