Strona używa cookies (ciasteczek). Dowiedz się więcej o celu ich używania i zmianach ustawień. Korzystając ze strony wyrażasz zgodę na używanie cookies, zgodnie z aktualnymi ustawieniami przeglądarki.    X

Szkółka dobrego programowania czyli Python cz.2

Dzień doberek. W dzisiejszej szkółce dobrego programowania poprawcujemy na znanych nam juz "zmiennych" oraz poznamy co to jest krotka oraz słownik. No to popracujemy na zmiennych:

Na sam początek przypiszemy wartości do zmiennych i spróbujemy wykonać na nich jakieś operacje arytmetyczne. No to do dzieła:

>>> a=12 >>> b=123 >>> print(a+b) 135 >>> print(a) 12 >>> print(a*b) 1476 >>> print(b) 123

Jak widać wykonałem na zmiennych 2 operacje arytmetyczne, a po sprawdzeniu wartości w zmiennej a i b wartość jest taka sama nasuwa się pytanie czemu? Odpowiedź jest prosta:

Ponieważ funkcja print() wyświetla tylko wynik wykonania operacji na zmiennych czyli funkcja print(). Bez zmiennych wygląda to następująco:

>>> print(12+123) 135

W tym wypadku akurat wygląda bez sensu użycie zmiennych ale przy większych operacjach bez sensu było by pisać każdą liczbę i ręcznie mnożyć dodawać. A czemu tak mówię bo możemy przypisać wynik do zmiennej i zmienną wynik wyświetlić np:

>>> a = 123 >>> b = 452 >>> wynik = a+b >>> print(wynik) 575

Jak widać wynik nie trzeba od razu wyświetla można go obrabiać dowoli i wyświetlić już gotowy wynik. Jak tak to spróbujmy zrobić operacje na 3 zmiennych i wyświetlić wynik:

>>> a = 12 >>> b = 123 >>> c = 12 >>> wynik = a + b * c >>> print (wynik) 1488

ITD. Można tak w wieczność polecam trochę po testować i po próbować.

A teraz zajmijmy się trochę tekstem bo Python znany jest z tego, że w bardzo łatwy i nawet przyjemny sposób można dowolnie edytować tekst oraz Python szybciej operuje tekstem niż jakimkolwiek obiektem. A więc stwórzmy sobie zmienną text i przypiszmy wartość "Ala ma kota" i spróbujmy z tekstu wyciągnąć samo słowo "ma".

No więc do roboty :)

>>> text = "Ala ma kota" >>> print(text[4:6]) ma

No to widać że uzyskaliśmy efekt taki jaki chcieliśmy ale jak to zostało wykonane i w jaki sposób? Czas powiedzieć coś o indeksach w tablicach ( w Pythonie mamy 4 typy tablicowe : krotka, lista, słownik oraz sety, ale o tym później narazie zachęcam do dalszego czytania ) .

A więc słowo tablica występuje w takich językach jak C++, Java, PHP itp. W Pythonie mamy typy tablicowe które posiadają takie coś jak index.
Python ma to do siebie że tekst jest niby zapisany w jednej zmiennej ale naprawdę jest to tablica która każdy element ma w osobnym indeksie ( tak mi tłumaczono jak by ktoś miał uwagi będę na ten temat otwarty ).
Postaram się to bardziej wytłumaczyć w postaci przykładu.

text = "Ala ma kota"

Jak widać dla nas ludzkim okiem wygląda że w zmiennej text znajduje się wartość "Ala ma kota" no tak niby tak jest ale dla interpretator i języka Python wygląda to troszkę inaczej:

text[0] = "A" text[1] = "l" text[2] = "a" text[3] = " " text[4] = "m" text[5] = "a" text[6] = " " text[7] = "k" text[8] = "o" text[9] = "t" text[10] = "a"

Tak więc dla tego tak łatwo wyciąć dany fragment z ciągu znaków. Teraz już wyjaśniam ciekawskim co to są za liczby w nawiasach kwadratowych, a więc to są właśnie są indeksy. Indeksy są to numerowane od zera pola do których możemy wstawiać wartości (ponoć najłatwiej się uczy przez wyobraźnie, a więc postaram się ją wam teraz pobudzić ).

ten niebieski prostokąt to nasza zmienna i wyobraźcie sobie że macie teraz zrobić 20 tyś zmiennych na raz. HMM . Może być to dość trudne czyż nie? I tu przychodzi nam na ratunek tablica, w naszej wyobraźni będzie ona wyglądała mniej więcej tak:

Jak widać w jednej zmiennej typu tablicowego mamy tak jakby wiele malutkich zmiennych, albo inaczej mówiąc w jednej zmiennej mamy wiele komórek ( lub szufladek jak kto woli ) gdzie wsadzamy karteczki z informacjami zapisanymi tam.

w praktyce zmienne tablicowe wyglądają w następujący sposób:

nazwaZmiennej = ["jakaś" , "Dowolna","Wartość]

Jak widać zdeklarowana została w Pythonie tak zwana lista. Czemu użyłem na samym początku własnie listy? Najprostszym typem tablicowym w Pythonie jest właśnie lista.

I już tłumacze czemu? Jest to najprostrzy typ tablicowy Pythonie ponieważ jest on już lekko zorientowany obiektowo ( postaram się dojść do obiektowości jak najszybciej na razie trzeba to przecierpieć z myślą że jest coś takiego jak obiektowość ) i ma swoje metody ( gotowe linie kodu do których odwołujemy się kropeczką i w łatwy sposób możemy je używać i w następnym przykładzie pokaże jak ) takie jak np:

sort, reverse, append i insert.

metoda append służy do dodania wartości na ostatnim miejscu w liście, sort służy do posortowania wartości alfabetycznie (jeżeli jest tam tekst) bądź rosnąco, reverse - metoda ta służy do odwracania kolejnosc elementów, insert - służy do wstawiania dowolnej liczby w odpowiedni indeks.

A oto przykład użycia listy i jej metod:

lista = [3, 4, 1, 2] >>> print(lista) [3, 4, 1, 2] >>> lista.append(6) >>> print(lista) [3, 4, 1, 2, 6] >>> lista.insert(1, 5) >>> print (lista) [3, 5, 4, 1, 2, 6] >>> lista.sort() >>> print (lista) [1, 2, 3, 4, 5, 6] >>> lista.reverse() >>> print (lista) [6, 5, 4, 3, 2, 1]

Jak widać w insert w nawias wpisane są dwie informacje oddzielone przecinkiem nazywane są te "miejsca" argumentami metody ( wszystko postaram się wytłumaczyć przy obiektowości ) pierwszy argument oznacza w które miejsce ma zostać wstawiona watość w drugim argumencie ALE UWAGA !!!!

PAMIĘTAJMY ZAWSZE ŻE W PYTHONIE TYPY TABLICOWE ZACZYNAMY LICZYĆ OD ZERA!!!!

zróbmy sobie malutkie ćwiczonko, tak aby się trochę oderwać :) Na początku przeczytaj i sam spróbuj, a potem sprawdź czy masz podobnie lub jak nie bedziesz wiedzieć jak to czytelniku zobacz jak ja to zrobiłem

zadanie 1.

UWAGA pamiętajcie że tekst jest oznaczony cudzysłowem, czyli "Marian" to jest ciąg znaków. I jeszcze jedna sprawa o której wcześniej specjalnie nie mówiłem. Dla znających programowanie. W Python aby wyświetlić liste lub inny typ tablicowy nie trzeba używać pętli wystarczy funkcja print().

A teraz zdadanie:
Spróbuj stworzyć listę w której będą znajdowały się takie nazwiska jak:
1. Nowak
2.Cisowski
3.Kochanowska
4.Kopernik

Oraz wyświetl listę

zadanie 2

Do utworzonej listy dopisz na sam koniec. Joker-os. Oraz wyświetl.

zadanie 3

Posortuj listę , oraz wyświetl.

A oto rozwiązanie:

Zadanie 1.

lista = ["Nowak","Cisowski","Kochanowska","Kopernik"] >>> print(lista) ['Nowak', 'Cisowski', 'Kochanowska', 'Kopernik']

zadanie 2.

>>> lista.append("Joker-os") >>> print(lista) ['Nowak', 'Cisowski', 'Kochanowska', 'Kopernik', 'Joker-os']

Zadanie 3.

>>> lista.sort() >>> print(lista) ['Cisowski', 'Joker-os', 'Kochanowska', 'Kopernik', 'Nowak']

Na razie to możemy powiedzieć UFFF i brawa dla osób które wykonały ćwiczenie poprawnie.

A teraz sprawa naszego tekstu przypominam :

>>> text = "Ala ma kota" >>> print(text[4:6]) ma

Jak już wiemy co oznacza nasz indeks i co to jest tablica. Czas teraz na rozgryzienie po co ten dwukropek i co on robi? Sprawa tu jest najprostsza do zrozumienia. A więc podczas chęci odczytania odpowiedniego indeksu używamy liczb

czyli wyświetlenie znaku w indeksie 4 będzie wyglądało tak.

text = "Ala ma kota" >>> print(text[4]) m

A znak dwukropka oznacza że od jakiego indeksu do jakiego chcemy odczytać tak więc jeżeli chcemy odczytać wartość od 4 do 5 to wpisujemy
indeks końcowy o jeden większy czyli

>>> text = "Ala ma kota" >>> print(text[4:6]) ma

i mamy odpowiedź na nasze wcześniejsze pytanie :) Jeżeli coś nie zrozumiałe zawsze jest szansa podpytać się za pomocą komentarza ale na razie to koniec tego wpisu w następnym zajmiemy się dalej typami tablicowymi oraz warunkami i pętlami ile damy rade :) Na razie dziękuje i do usłyszenia. 

programowanie

Komentarze

0 nowych
alucosoftware   7 #1 01.08.2012 13:38

Z chęcią przeczytałbym dalej, ale zakończyłem w miejscu, w którym przeczytałem, że "funkcja print() wzięła sobie wartość ze zmiennej a i zmiennej b i wykonała dodawanie".

Popraw to szybko, najlepiej przytaczając w tym miejscu definicję funkcji print i znaczenie operatora +.

Gdyby rzeczywiście funkcja print "wykonywała dodawanie" to nazywałaby się inaczej, nieprawdaż?

kwpolska   6 #2 02.08.2012 14:41

tablica? LISTA!

> PAMIĘTAJMY ZAWSZE ŻE W PYTHONIE TYPY TABLICOWE ZACZYNAMY LICZYĆ OD ZERA!!!!
nie krzycz, a od zera liczy się ~wszystko we ~wszystkich językach programowania.

I powtarzam: na chwile obecna, sugeruje py2k.

  #3 02.08.2012 15:23

Faktem jest że struktura danych używana przez Pythona to lista, lecz klasyfikuje się jako tablica(typ danych, nie struktura).

I bynajmniej nie wszystkie języki liczą indeksy tablic od zera. Choćby Fortran, COBOL czy Lua i Matlab z "nowszych" języków.

djfoxer   18 #4 02.08.2012 18:34

@kwpolska
"nie krzycz, a od zera liczy się ~wszystko we ~wszystkich językach programowania." - a nie prawda, patrz Turbo Pascal :)

joker-os   2 #5 06.08.2012 09:12

Dla tego właśnie też "wykrzyczałem" ponieważ prowadziłem lekcje dla początkujących uczniów na początku dla rozgrzewki w Pascal (jak napisał to @djfoxer) w Pascalu liczymy tablice od 1 i po prostu od c++ zaczynamy liczyć od 0. A zwracam szczególną uwagę tam ponieważ jeżeli nie będziemy liczyć od zera to z "cięcia" stringu nam nic nie wyjdzie.

  #6 06.08.2012 14:30

To nic osobistego...
Dotykasz troche tego, troche tamtego, mam wrazenie, ze sam nie do konca wiesz jak to dziala, wiele waznych rzeczy opuszczasz. Styl jaki opisales w czesci pierwszej to nie jest styl doswiadczonych programistow, tylko uzywany glownie w Javie. Notacje sa rozne i nie ma jednej najlepszej, jedne bardziej drugie mniej pasuja do konkretnego jezyka, a najwieksze znaczenie maja osobiste preferencje programisty. Nie narzuca sie w dobrych kursach czegos, jezeli sie nie jest swiecie przekonanym, ze jest to jedyne zalecane rozwiazanie. Po co utrudniac komus nauke programowania (a trzeba sie na prawde przebic przez mase pseudotutoriali, zeby znalezc cos porzadnego), kiedy ma sie swietny kurs pythona znajdujacy sie w jego dokumentacji. Po angielsku to prawda, ale bez znajomosci angielskiego to polecam odstawic programowanie do czasu nauki podstaw tego jezyka, a takie tutoriale czy wiekszosc ksiazek, na prawde nie wymagaja, zeby znac egzotyczne wyrazenia. Programuj, zycze sukcesow, ale nauczanie zostaw, bo to jest na prawde trudny i niewdzieczny kawal roboty. No, a poczatkujacym polecam jednak mimo wszystko C++, sam dopiero po nauce tego jezyka, zrozumialem jak to wszystko dziala. Pascal to byla droga przez meke, na ale po poznaniu C++ i z pascalem nie bylo problemu. No i przede wszystkim niezaleznie od jezyka korzystac glownie z dokumentacji.