publikuj: Opublikuj w wykop.pl Opublikuj we flaker.pl Opublikuj na OSnews.pl Opublikuj w delicious wydrukuj
23 skomentuj »

TAGI: programowanie , kurs , python

2009-11-30 11:05  |  Jan Koprowski

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

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.

«poprzednia 1 2 3 4 następna »

publikuj: Opublikuj w wykop.pl Opublikuj we flaker.pl Opublikuj na OSnews.pl Opublikuj w delicious wydrukuj
23 skomentuj »

Komentarze

  • hr.

    #1 hr. 2009-11-30 11:18:32 0

    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 :)

    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

  • jankoprowski

    #2 Jan Koprowski® 2009-11-30 11:23:33 0

    Dzięki, poprawione:)

    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

  • Doc

    #3 Doc 2009-11-30 12:18:28 0

    "O wartościach logicznych dowiesz się więcej już w krótce"

    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

  • Doc

    #4 Doc 2009-11-30 12:30:04 0

    A poza tym fajny, prosty kursik. :)

    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

  • szuki

    #5 szuki® 2009-11-30 18:54:08 0

    tablica[::2]

    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

  • jankoprowski

    #6 Jan Koprowski® 2009-12-01 09:06:55 0

    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.

    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

  • D3vill

    #7 D3vill® 2009-12-03 20:41:04 0

    Bardzo fajny kurs :)

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

    Pozdrawiam :)

    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

  • jankoprowski

    #8 Jan Koprowski® 2009-12-04 15:21:16 0

    Bardzo się cieszę, że kurs się podoba:) A jak idzie rozwiązywanie ćwiczeń? Nie sprawiają trudności?

    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

  • dAREuS

    #9 dAREuS® 2009-12-04 15:36:30 0

    No właśnie, jak ćwiczenia? Żadnych pytań? Pytać, skoro macie autora pod ręką!

    IP: 85.128.102.[...] Opera/9.80 (Windows NT 6.0; U; pl) Presto/2.2.15 Version/10.10

  • D3vill

    #10 D3vill® 2009-12-05 18:25:26 0

    >>> 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ć ??

    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

  • jankoprowski

    #11 Jan Koprowski® 2009-12-05 20:33:11 0

    @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.

    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

  • D3vill

    #12 D3vill® 2009-12-05 21:21:07 0

    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..

    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

  • jankoprowski

    #13 Jan Koprowski® 2009-12-05 21:46:31 0

    Tabelka na stronie czwartej kursu, trzecia kolumna, trzeci wiersz, przykład pierwszy :P

    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

  • D3vill

    #14 D3vill® 2009-12-05 21:58:31 0

    Noto biorę się za robienie zadań :)

    A jeżeli można zapytać

    Kiedy kolejna część ?? :)

    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

  • jankoprowski

    #15 Jan Koprowski® 2009-12-06 07:01:34 0

    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.

    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

  • dosia103

    #16 dosia103 2009-12-12 19:35:26 0

    Ciekawy krótki i zwiezły kurs:)

    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

  • Zxczzx

    #17 Zxczzx 2009-12-31 13:51:09 0

    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

    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

  • D3vill

    #18 D3vill® 2009-12-31 15:38:16 0

    A napewno masz pythona 3 ??

    Mi to działa znakomicie bez "raw_input" :)

    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

  • Zxczzx

    #19 Zxczzx 2009-12-31 16:13:29 0

    mam pythona 2.6

    na linuxie jest ciezej z wersja 3.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

  • D3vill

    #20 D3vill® 2009-12-31 23:19:22 0

    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

    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

  • Zxczzx

    #21 Zxczzx 2010-01-01 14:44:55 0

    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

    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

  • D3vill

    #22 D3vill® 2010-01-01 23:10:32 0

    Skorzystaj z Geany :D

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

    PS. Kiedy możemy się spodziewać kolejnej części Kursiku ? :)

    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

  • romanow

    #23 romanow 2011-04-04 08:38:33 0

    Kiedy kolejna częśc kursu? :)

    Pozdrawiam

    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

Uwaga! Możesz zarejestrować się w serwisie i w ten sposób zarezerwować swój nick oraz ominąć konieczność ciągłego odczytywania wyrazów.

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.

Polecane książki

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ł