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





>>> 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
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
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
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
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
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
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
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
dAREuS
Browser: Opera/9.80 (Windows NT 6.0; U; pl) Presto/2.2.15 Version/10.10
'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
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
:)
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
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
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
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
Browser: Mozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.9.0.15) Gecko/2009101601 Firefox/3.0.15
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
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
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
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
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
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