Ładowanie Ładowanie

Artykuł > Python: kurs programowania. Część II: typy danych i podstawowe...

strony: 1 | 2 | 3 | 4 następna »
wydrukuj: print publikuj: wykop dodaj do flakera Dodaj jako nius na OSnews.pl! delicious

Python: kurs programowania. Część II: typy danych i podstawowe operacje

2009-11-30 11:05:00 | Jan Koprowski
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.
  1. Python: absolutny wstęp do myślenia w ogólnym języku programowania
  2. Python: konsola do zadań specjalnych
  3. Python: czytelność i nowoczesność przede wszystkim
  4. Jython: czyli piękno Pythona i możliwości Javy
  5. PyS60: czyli witamy Pythona na komórkach
  6. Python: kurs programowania. Część I: podstawy, operatory i pętle

 

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ść).

>>> len(zmienna)

25

Napis wcale nie musi być opisany zmienną.

>>> 'Ala ma kota, a kto ma Ale'[7:11]

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.

Najnowsze wiadomości
1 | 2 | 3 | 4 następna »

reklama

strony: 1 | 2 | 3 | 4 następna »
wydrukuj: print publikuj: wykop dodaj do flakera Dodaj jako nius na OSnews.pl! delicious

Czytaj webhosting.pl:

Dyskusja

dodaj komentarz
0 + -
comnt #01 hr. 2009-11-30 11:18:32
hr. Maly blad ...

>>> zmienna # Szósty znak

'k'

To nie jest szosty znak, a osmy - znak bialy (spacja) tez jest znakiem.

Jelsi juz ma byc szosta, to litera :)

------------------
Browser: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en-US; rv:1.9.2b4) Gecko/20091124 Firefox/3.6b4
0 + -
comnt #02 Jan Koprowski® 2009-11-30 11:23:33
jankoprowski Dzięki, poprawione:)
------------------
Jan Koprowski

Browser: 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
0 + -
comnt #03 Doc 2009-11-30 12:18:28
Doc "O wartościach logicznych dowiesz się więcej już w krótce"
------------------
Browser: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.5) Gecko/20091109 Ubuntu/9.10 (karmic) Firefox/3.5.5
0 + -
comnt #04 Doc 2009-11-30 12:30:04
Doc A poza tym fajny, prosty kursik. :)
------------------
Browser: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.5) Gecko/20091109 Ubuntu/9.10 (karmic) Firefox/3.5.5
0 + -
comnt #05 szuki® 2009-11-30 18:54:08
szuki
tablica[::2]
------------------
szuki is back

Browser: Mozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/532.5 (KHTML, like Gecko) Chrome/4.0.249.0 Safari/532.5
0 + -
comnt #06 Jan Koprowski® 2009-12-01 09:06:55
jankoprowski Staram się aby kurs był jak najlżejszy a wszystkie informacje podane w jak najprostszy sposób. Pisanie taką metodą zajmuje dużo czasu, mam nadzieję, że udaje mi się to przynajmniej w niewielkim stopniu.
------------------
Jan Koprowski

Browser: 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
0 + -
comnt #07 D3vill® 2009-12-03 20:41:04
D3vill Bardzo fajny kurs :)

Z niecierpliwością czekam na kolejną część :)

Pozdrawiam :)
------------------
Browser: Mozilla/5.0 (Windows; U; Windows NT 6.1; pl; rv:1.9.1.5) Gecko/20091102 Firefox/3.5.5
0 + -
comnt #08 Jan Koprowski® 2009-12-04 15:21:16
jankoprowski Bardzo się cieszę, że kurs się podoba:) A jak idzie rozwiązywanie ćwiczeń? Nie sprawiają trudności?
------------------
Jan Koprowski

Browser: 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
0 + -
comnt #09 dAREuS® 2009-12-04 15:36:30
dAREuS No właśnie, jak ćwiczenia? Żadnych pytań? Pytać, skoro macie autora pod ręką!
------------------
dAREuS

Browser: Opera/9.80 (Windows NT 6.0; U; pl) Presto/2.2.15 Version/10.10
0 + -
comnt #10 D3vill® 2009-12-05 18:25:26
D3vill >>> zmienna# Od początku do jedenastego znaku

'kota'

A powinno być

'Ala ma kota'

I jeszcze :

"Podłoga z dzielenia" w tabelce

No chyba że jest coś takiego jak podłoga ale chyba miało być reszta

A co do problemu z zadaniami to

Za Chiny nie zrobię 5 :)

Mógłby ktoś wytłumaczyć ??
------------------
Browser: Mozilla/5.0 (Windows; U; Windows NT 6.1; pl; rv:1.9.1.5) Gecko/20091102 Firefox/3.5.5
0 + -
comnt #11 Jan Koprowski® 2009-12-05 20:33:11
jankoprowski @D3evill

Dzięki za wytknięcie błędu:) Poprawiony.

Miało być podłoga bo istnieje takie coś jak podłoga. W angielskiej literaturze istnieje takie działanie o nazwie floor. Po polsku poprawniej nazywa się to cechą (liczba = cecha + mantysa). Polecam zapoznanie się z hasłem "Część całkowita" na wikipedii.

Co do zadania numer 5 to czego nie rozumiesz? Napisz w czym masz problem.
------------------
Jan Koprowski

Browser: 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
0 + -
comnt #12 D3vill® 2009-12-05 21:21:07
D3vill OMG "Podłoga i Sufit" ...

:)

A co do 5 to niewiem jak przekonwertować Integer na Float itp.

Musiałem coś w kursie przegapić ale przeczytałem ze 4 ray i nadal nie wychwyciłem co..
------------------
Browser: Mozilla/5.0 (X11; U; Linux i686; pl-PL; rv:1.9.1.5) Gecko/20091109 Ubuntu/9.10 (karmic) Firefox/3.5.5
0 + -
comnt #13 Jan Koprowski® 2009-12-05 21:46:31
jankoprowski Tabelka na stronie czwartej kursu, trzecia kolumna, trzeci wiersz, przykład pierwszy :P
------------------
Jan Koprowski

Browser: 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
0 + -
comnt #14 D3vill® 2009-12-05 21:58:31
D3vill Noto biorę się za robienie zadań :)

A jeżeli można zapytać

Kiedy kolejna część ?? :)
------------------
Browser: Mozilla/5.0 (X11; U; Linux i686; pl-PL; rv:1.9.1.5) Gecko/20091109 Ubuntu/9.10 (karmic) Firefox/3.5.5
0 + -
comnt #15 Jan Koprowski® 2009-12-06 07:01:34
jankoprowski Jest już w połowie napisana :) Tylko tyle mogę zdradzić:]

Jedna po napisaniu trzeba doliczyć czas publikacji a ten jest już niezależny ode mnie.
------------------
Jan Koprowski

Browser: 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
0 + -
comnt #16 dosia103 2009-12-12 19:35:26
dosia103 Ciekawy krótki i zwiezły kurs:)
------------------
Browser: Mozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.9.0.15) Gecko/2009101601 Firefox/3.0.15
0 + -
comnt #17 Zxczzx 2009-12-31 13:51:09
Zxczzx ostatnia_litera = input('Podaj swoją ostatnią literę pełnego imienia: ')

 if ostatnia_litera == 'a':

 print('Jesteś kobietą')





chcialem zauwazyc ze to co tutaj napisales nie dziala

chyba ze napiszemy raw_input (czego musialem pozniej poszukac w necie)

input jest do wartosci liczbowych
------------------
Browser: 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
0 + -
comnt #18 D3vill® 2009-12-31 15:38:16
D3vill A napewno masz pythona 3 ??

Mi to działa znakomicie bez "raw_input" :)
------------------
Browser: Mozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6
0 + -
comnt #19 Zxczzx 2009-12-31 16:13:29
Zxczzx mam pythona 2.6

na linuxie jest ciezej z wersja 3.0
------------------
Browser: 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
0 + -
comnt #20 D3vill® 2009-12-31 23:19:22
D3vill ale ten kurs jest dla 3 ...



Co za problem zainstalować Pythona 3 na linuxie bo nie wiem ...

Z 2 tygodnie temu sam go instalowałem na ubuntu i nie było problemu
------------------
Browser: Mozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6
0 + -
comnt #21 Zxczzx 2010-01-01 14:44:55
Zxczzx tzn moze inaczej zainstalowac zaden problem ale nie wiem jak przestawic jezyk na nowszy w edytorze tekstowym ktorego uzywam (eric4)

a jestem leniwy i nie chce mi sie uzywac gedita i konsoli naraz;p
------------------
Browser: 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
0 + -
comnt #22 D3vill® 2010-01-01 23:10:32
D3vill Skorzystaj z Geany :D

Działa doskonale na linuxie ... gorzej z windowsem  ...

PS. Kiedy możemy się spodziewać kolejnej części Kursiku ? :)
------------------
Browser: Mozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6

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ą).
  • Jeśli masz problemy z odczytaniem słów, zmień zdjęcie.
  • Używamy tego zabezpieczenia, ponieważ dzięki niemu rozwija się projekt reCAPTCHA. Sugerujemy jednak, by zarejestrować się w serwisie i w ten sposób ominąć konieczność ciągłego odczytywania wyrazów.
  • W treści komentarza można używać języka formatowania BBcode.