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 »
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
Nazwa padła ofiarą szantażystów, inni polscy hosterzy też zagrożeni?
22
Darmowy Internet od Aero2. Jak go zdobyć i jakie są prawdziwe koszta? Instrukcja krok po kroku
11
Programowanie w środowisku Android – wprowadzenie do projektowania aplikacji dla urządzeń mobilnych
17
Premiera Diablo 3 wzbudziła dyskusję na temat gier, które zawsze chcą być online
19
Nowy problem z Windows 8: bootuje się za szybko
10
Amerykańscy rodzice straszeni „e-narkotykami” dostępnymi w Sieci
21
Anonymous upubliczniają 1,7 GB danych wykradzionych Departamentowi Sprawiedliwości USA
12
Blueseed: libertariańska sztuczna wyspa przyciągnęła już ponad sto startupów z całego świata
8
Rewolucja w Firefoksie, nowa łatka czterokrotnie ograniczyła zużycie pamięci
20
Darmowy Internet od Aero2. Jak go zdobyć i jakie są prawdziwe koszta? Instrukcja krok po kroku
11
CVDazzle: makijaż jest w stanie pokonać automatyczne systemy ulicznego monitoringu
3
Programowanie w środowisku Android – wprowadzenie do projektowania aplikacji dla urządzeń mobilnych
17
Ubuntu 12.04 LTS już dostępny: stabilna dystrybucja na następne pięć lat?
28
Zostań webmasterem polskiego rządu, zarobisz na komfortowe życie dla siebie i swojej rodziny
33
Społeczność
Daresh A ja na pulpicie nie mam żadnych ikon i nie potrzebuję takich narzędzi :)
buahahaha @xyz: jak będzie wybór między MS ograniczającym wybór a Apple...
xyz @bartez® : Uważasz, że Apple nie ogranicza programistów? buahahaha
anga star za droga ludzie wy myślicie!?Jestem 4 klasistką rodzice się nigdy nie...
Jan Zwyczajnych filmów tak kręcić się nie da co najwyżej krótkie scenki jak w...
piotrek____ @asdfgh - yup, też tak sądzę.
Tak jak wtedy ten przeciek o żołnierzu...
gonzales Javowcy pozdrawiają dotnetowców xD
- Najdmen.pl: Konta www z wyłączonym licznikiem transferu od IONIC.pl (1)
- 2BE.PL: [Oferta] Promocja jak złoto w 2BE.PL (1)
- 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)
Polecane książki
Praca
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