Algorytmy i struktury danych

Podobne dokumenty
Algorytmy i struktury danych

Algorytmy i struktury danych

Algorytmy i struktury danych

Algorytmy i struktury danych

Typy danych, cd. Łańcuchy znaków

Algorytmy i struktury danych

Język Python. Język Python 1/35

Języki i metody programowania

Python wprowadzenie. Warszawa, 24 marca PROGRAMOWANIE I SZKOLENIA

Podstawy programowania. Python wykład 6

Środowisko programisty

Uwagi dotyczące notacji kodu! Moduły. Struktura modułu. Procedury. Opcje modułu (niektóre)

Funkcje są prawdopodobnie najważniejszą częścią każdego poważnego programu (w każdym języku programowania).

Listy, krotki, słowniki, funkcje

Język skryptowy: Laboratorium 1. Wprowadzenie do języka Python

METODY KOMPUTEROWE W OBLICZENIACH INŻYNIERSKICH

Podstawy bioinformatyki 2017/18

Skrypty powłoki Skrypty Najcz ciej u ywane polecenia w skryptach:

Warsztaty dla nauczycieli

LibreOffice Calc VBA

Python. Wprowadzenie. Jolanta Bachan

Opis: Instrukcja warunkowa Składnia: IF [NOT] warunek [AND [NOT] warunek] [OR [NOT] warunek].

Python. Skąd taka nazwa? Kurs systemu UNIX 1

Obliczenia, zmienne. Proste działania, zmienne, rodzaje zmiennych, proste operacje i działania na zmiennych.

Podstawy Programowania Podstawowa składnia języka C++

Cw.12 JAVAScript w dokumentach HTML

Programowanie w języku Java

1. Indeksy/indeksowanie : Do elementów wektora, list, macierzy czy ramek, można się odwołać na kilka sposobów.

Serwer WWW Apache. Plik konfiguracyjny httpd.conf Definiujemy m.in.: Aktualne wersje 2.4.6, , zakończony projekt

Metody numeryczne Laboratorium 2

Programowanie 2 - Tablice i łańcuchy

Naukę zaczynamy od poznania interpretera. Interpreter uruchamiamy z konsoli poleceniem

Programowanie w języku Python. Grażyna Koba

Podstawy programowania: Python. Wprowadzenie. Jolanta Bachan

Wstęp do programowania INP003203L rok akademicki 2018/19 semestr zimowy. Laboratorium 2. Karol Tarnowski A-1 p.

Zajęcia 5 łańcuchy znaków (ciąg dalszy) i funkcje

LABORATORIUM 3 ALGORYTMY OBLICZENIOWE W ELEKTRONICE I TELEKOMUNIKACJI. Wprowadzenie do środowiska Matlab

Laboratorium kryptograficzne dla licealistów 1

Wstęp do informatyki. stęp do informatyki Polecenia (cz.2)

lekcja 8a Gry komputerowe MasterMind

Podstawy programowania w Pythonie

1 Podstawy c++ w pigułce.

Podstawy Programowania

Tablice (jedno i wielowymiarowe), łańcuchy znaków

Narzędzia informatyczne w językoznawstwie

BIBLIOTEKA NUMPY, CZĘŚĆ 1

PL/SQL. Część 1 Bloki PL/SQL. Piotr Medoń

Podstawy programowania w Pythonie

Projektowanie aplikacji internetowych Pisanie skryptów wiersza poleceń - pętle

Wstęp do systemów wielozadaniowych laboratorium 19 awk

Laboratorium 3: Tablice, tablice znaków i funkcje operujące na ciągach znaków. dr inż. Arkadiusz Chrobot dr inż. Grzegorz Łukawski

Wstęp do programowania

1 Podstawy c++ w pigułce.

Podstawy bioinformatyki 2017/18

Język Python (2) Język Python (2) 1/36

Wykład 2 Składnia języka C# (cz. 1)

Skrypty i funkcje Zapisywane są w m-plikach Wywoływane są przez nazwę m-pliku, w którym są zapisane (bez rozszerzenia) M-pliki mogą zawierać

MATERIAŁY DO ZAJĘĆ II

2. Tablice. Tablice jednowymiarowe - wektory. Algorytmy i Struktury Danych

Wskaźniki a tablice Wskaźniki i tablice są ze sobą w języku C++ ściśle związane. Aby się o tym przekonać wykonajmy cwiczenie.

Podstawy programowania. Wykład: 9. Łańcuchy znaków. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

Informatyka I. Typy danych. Operacje arytmetyczne. Konwersje typów. Zmienne. Wczytywanie danych z klawiatury. dr hab. inż. Andrzej Czerepicki

Podstawy programowania skrót z wykładów:

Laboratorium kryptograficzne dla gimnazjalistów 1

Algorytmika i Programowanie VBA 1 - podstawy

Definicje. Algorytm to:

Wprowadzenie do języka Java

Języki skryptowe Python

Operatory cd. Relacyjne: ==!= < > <= >= bool b; int i =10, j =20; dzielenie całkowitych wynik jest całkowity! Łączenie tekstu: + string s = "Ala ma ";

Zajęcia 4 procedury i funkcje

JAVASCRIPT PODSTAWY. opracowanie: by Arkadiusz Gawełek, Łódź

Python dla początkujących. Małgorzata Niewiem AGH, GGiOŚ, Katedra Geoinformatyki i Informatyki Stosowanej SATIM Satelitarny Monitoring

Właściwości i metody obiektu Comment Właściwości

Wstęp do programowania

Programowanie Komputerów

Podstawy JavaScript ćwiczenia

Po uruchomieniu programu nasza litera zostanie wyświetlona na ekranie

JAVAScript w dokumentach HTML (1) JavaScript jest to interpretowany, zorientowany obiektowo, skryptowy język programowania.

Wprowadzenie. Organizacja pracy i środowisko programistyczne. Mirosław Ochodek

Liczby losowe i pętla while w języku Python

Programowanie w języku C++ Grażyna Koba

ŁAŃCUCHY W JĘZYKU C/C++

Wstęp do Programowania Lista 1

Stałe oznaczane są słowem kluczowym final. Do stałej wartość można przypisać tylko raz. Dobrą konwencją jest nazywanie stałych wielkimi literami

Python jest interpreterem poleceń. Mamy dwie możliwości wydawania owych poleceń:

Tablice mgr Tomasz Xięski, Instytut Informatyki, Uniwersytet Śląski Katowice, 2011

Zasady programowania Dokumentacja

TEMAT : System operacyjny MS DOS pliki wsadowe

Przedstawię teraz tzw. podstawowe symbole wyrażenia regularne (BRE, Basic Regular Expression)

Wprowadzenie do Scilab: podstawy języka Scilab

Inicjacja tablicy jednowymiarowej

Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy. Wykład 12. Karol Tarnowski A-1 p.

Programowanie w Ruby

Podstawy programowania w Pythonie

Ćwiczenie 1. Wprowadzenie do programu Octave

Transkrypt:

Algorytmy i struktury danych 6. Łódź 2019

Ćwiczenie Zapisz program jako textmanipulation.py; Uruchom skrypt M Kociński & A Materka, Algorytmy i struktury danych, WEEIA PŁ, Łódź 2019 2

Łańcuchy String (łańcuch) jest jednym z podstawowych typów danych w języku Python. String jest przykładem struktury danych. String jest także kolekcją danych, zorganizowanych w celu wydajnej realizacji dostępu i operacji na nich. String jest sekwencją znaków między cudzysłowami 1. 2. 3. Pojedynczymi ( ) Podwójnymi ( ) Potrójnymi dla łańcuchów w wielu wierszach ( ) In[1]: subject = Algorithms and Data Structures In[2]: name = Grzegorz In[3]: surname = Brzeczyszczykiewicz In[4]: multi_line_string = This is a very long string, that is spread across many, many lines, for example a description of some newly created function M Kociński & A Materka, Algorytmy i struktury danych, WEEIA PŁ, Łódź 2019 3

Podstawowe operacje Konkatenacja In[5]: letters = ab + cd In[6]: letters += ab In[7]: Ala + ma + kota! Powtórzenie In[8]: Hello *4 In[9]: bye! *7 In[10]: 10* -*-?-* Akumulator łacuchów In[11]: s = a In[12]: for i in range(4): In[13]: s += b Porównanie In[14]: s1 = ala ; s2 = ala ; s3 = ALA In[15]: s1 == s2 In[16]: s1 == s3 s1 = s1 + s2 Po łańcuchu s1 następuje s2 s1 += s2: skrót dla s1 = s1 + s2 s*n Łańcuch s+s+ +s+s,n razy n*s oznacza to samo co s*n <accumulator> = <string value> pętla: <accumulator> += <tekst który dodajemy> s1 == s2 zwraca True s1 == s3 zwraca False M Kociński & A Materka, Algorytmy i struktury danych, WEEIA PŁ, Łódź 2019 4

Indeksowanie In[17]: text = Biomedical Eng. Zmienna text jest zapisywana w pamięci wg poniższego wzoru. Każdy znak jest zapisany w kolejnych komórkach pamięci. E n g. B i o m e d i c a l 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14-15 -14-13 -12-11 -10-9 -8-7 -6-5 -4-3 -2-1 Każda z liczb w dolnych wierszach jest nazywana indeksem znaku powyżej niej. M Kociński & A Materka, Algorytmy i struktury danych, WEEIA PŁ, Łódź 2019 5

Indeksowanie B i o m e d i c a l E n g. text[14] text[13] text[12] text[11] text[10] text[9] text[8] text[7] text[6] text[5] text[4] text[3] text[2] text[1] text[0] Wpisz poniższe polecenia i sprawdź wyniki: In[18]: text[0] =? In[19]: text[1] =? In[20]: text[5] =? In[21]: text[8] =? In[22]: text[11] =? string[i]: znak o indeksie i. Indeksowanie łańcucha zwraca pojedynczy znak. M Kociński & A Materka, Algorytmy i struktury danych, WEEIA PŁ, Łódź 2019 6

Indeksowanie B i o m e d i c a l E n g. Text[-1] Text[-2] Text[-3] Text[-4] Text[-5] text[-6] Text[-7] Text[-8] Text[-9] Text[-10] Text[-11] text[-12] Text[-13] text[-14] Text[-15] Wpisz poniższe polecenia i sprawdź wyniki: In[23]:text[-1] =? In[24]:text[-5] =? In[25]:text[-7] =? In[26]:text[-11] =? In[27]:text[-15] =? string[i]: znak o indeksie i. Indeksowanie łańcucha zwraca pojedynczy znak. M Kociński & A Materka, Algorytmy i struktury danych, WEEIA PŁ, Łódź 2019 7

Wycinanie (slicing) Dostęp do zbioru kolejnych znaków łańcucha. text[i:j] wycinek (slice) od i do j-1 B i o m e d i c a l E n g. 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 In[28]: text[0:3] =? In[29]: text[3:6] =? In[30]: text[11:14] =? In[31]: text[0:15] =? Wycinek text[i:j] nie zawiera text[j]! M Kociński & A Materka, Algorytmy i struktury danych, WEEIA PŁ, Łódź 2019 8

Wycinanie B i o m e d i c a l E n g. 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 In[32]: text[:3] =? In[33]: text[3:] =? In[34]: text[:] =? text[:j] Wycinek od początku do j-1 text[i:] Wycinek od i do końca łańcucha text[:] Pełny wycinek - kopia zmiennej text Trzeci, opcjonalny parametr k określa krok indeksu, różny od 1 (por. funkcja range()) In[34]: text[2:12:2] =? In[35]: text[3::3] =? In[36]: text[::2] =? In[37]: text[::-1] =? In[38]: text[9:2:-1] =? In[39]: text[:5:-1] =? In[40]: text[5::-1] =? text[i:j:k] Wycinek od i do j-1 z krokiem k Jeśli k < 0, indeks i jest nadal punktem startowym. Jeśli i jest pominięte a k<0, początkiem jest prawy koniec. Jeśli j jest pominięte a k<0, koniec znajduje się po lewej stronie (indeks 0) M Kociński & A Materka, Algorytmy i struktury danych, WEEIA PŁ, Łódź 2019 9

W łańcuchu lub nie Sprawdzenie, czy ciąg znaków x jest częścią s. Znaki tekstu x są lub nie są wycinkiem s. x in s True jeśli x zawiera się w s; jeśli się nie zawiera to False x not in s True jeśli x nie zawiera się w s; w przeciwnym razie False In[41]: s = ala ma kota In[42]: a in s =? In[43]: ala in s =? In[44]: a ma k in s =? In[45]: alama in s =? In[46]: kot in s =? In[47]: a not in s =? In[48]: ala not in s =? In[49]: ma not in s =? In[50]: alama not in s =? In[51]: ola not in s =? M Kociński & A Materka, Algorytmy i struktury danych, WEEIA PŁ, Łódź 2019 10

Liczba elementów i typ obiektu Length and type of the string In[52]: len(subject) In[53]: len(text) In[54]: type(name) In[55]: type(student1) len(string) type(object) Jaki znak ma indeks 15? In[56]: text[15] Pierwszym znakiem tekstu jest text[0], a nie text[1]. W programowaniu liczenie zaczyna się zwykle od 0, nie 1. ----> 1 text[15] IndexError: string index out of range Rodzaj błędu Krótki opis przyczyny M Kociński & A Materka, Algorytmy i struktury danych, WEEIA PŁ, Łódź 2019 11

Rozważmy łańcuch tekstowy In[57]: day = Todai is Monday Zmiana znaków Chcemy poprawić pomyłkę In[58]: day[4] = y Łańcuchy w języku Python są niezmienne (immutable) ----> 1 day[4]='y TypeError: 'str' object does not support item assignment Obiekty typu str nie mogą być modyfikowane w ten sposób. Trzeba utworzyć nowy łańcuch i przypisać go do zmiennej day In[59]: day = day[:4] + y + day[5:] In[60]: print(day) M Kociński & A Materka, Algorytmy i struktury danych, WEEIA PŁ, Łódź 2019 12

Pętla For Jeśli chcemy przeglądać znaki łańcucha tekstowego po kolei, możemy utworzyć pętlę In[61]: day = Today is Monday for <variable> in <string>: # pętla, znak po znaku <body> Przykład In[62]: for c in day: print(c) Użyj dodatkowego parametru end w funkcji print(). Co się zmieniło? In[63]: for c in day: print(c, end= ) Ćwiczenie: Utwórz następujący łańcuch: T * o * d * a * y * * i * s * * M * o * n * d * a * y * M Kociński & A Materka, Algorytmy i struktury danych, WEEIA PŁ, Łódź 2019 13

Pętla For Skanowanie znaków łańcucha z informacją o ich położeniu In[64]: day = Today is Monday Przypomnienie składni for <zmienna> in <sekwencja>: <ciało> In[65]: for i in range(5): print(i, end= ) Out[65]: 0 1 2 3 4 Jak określić funkcję range()? >>> for i in range(???): print i, Zakres funkcji range() określa długość łańcucha znaków In[66]: for i in range(len(day)): print (i, end= ) Out[66]: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 Dostęp do poszczególnych znaków według indeksu. In[67]: for i in range(len(day)): print(day[i], end= ) Out[67]: T o d a y i s M o n d a y Ćwiczenie: utwórz łańcuch Out[68]: i s M o n d a y 0 -> T 1 -> o 2 -> d 3 -> a 4 -> y 5 -> 6 -> i 7 -> s 8 -> 9 -> M 10 -> o 11 -> n 12 -> d 13 -> a 14 -> y M Kociński & A Materka, Algorytmy i struktury danych, WEEIA PŁ, Łódź 2019 14

Ćwiczenie 6.0 Wypełnij przerwy w ciele funkcji deletechar(text, mychar) M Kociński & A Materka, Algorytmy i struktury danych, WEEIA PŁ, Łódź 2019 15

Ćwiczenie 6.1 Napisz skrypt w języku Python, który wyświetli poniższe wzory (Wskazówka: użyj pętli). A) B) M Kociński & A Materka, Algorytmy i struktury danych, WEEIA PŁ, Łódź 2019 16

Ćwiczenia 6.2 Określ wartości wyrażeń: In[68]: subject = Algorithms and Data Structures subject[0] subject[5:] subject[:5] subject[::2] subject[1:5] subject[:-4] subject[-15:] subject[-20:20] 6.3 Napisz wyrażenia w języku Python z uzyciem zmiennej subject In[69]: subject = Algorithms and Data Structures Algorithms Data Structures Alg serutcurts atad dna smhtirogla AotsnDatcr #every third suust amig #every third negative dir. smhtirogla #algorithms neg. M Kociński & A Materka, Algorytmy i struktury danych, WEEIA PŁ, Łódź 2019 17

6.4 Napisz skrypt email.py, który automatycznie konstruuje adres e-mail. Poproś użytkownika o podanie obu imion (piewrwszego i drugiego) i nazwiska. Skonstruuj adres według następującego wzoru: inicjaly@p.lodz.pl, np. Jan Maria Nowak -> jmn@p.lodz.pl Ćwiczenia 6.5 Napisz skrypt który wypisuje element listy oraz jego długość (lista: tydzien=[ Poniedziałek, Wtorek, Sroda, Czwartek, Piatek, Sobota, Niedziela ]) 6.6 Napisz skrypt który podaje średnią liczbę litera przypadająca na każdy wyraz w liście. 6.7 Napisz skrypt stringaccumlator1.py który wykorzystuje akumulator łańcuchów (dodaje kolejne litery) aż do momentu wciśnięcia litery q. Skrypt powinien wyświetlić zawartość akumulatora. 6.8 Napisz skrypt stringaccumlator2.py który wykorzystuje akumulator łańcuchów aż do momentu podania sekwencji znaków quit. Skrypt powinien wyświetlić zawartość akumulatora. M Kociński & A Materka, Algorytmy i struktury danych, WEEIA PŁ, Łódź 2019 18

Ćwiczenia 6.9 Napisz skrypt mystringfunctions.py. Wewnątrz skryptu napisz funkcję stringaccumlator(sometext), która zapisuje do akumulatora łańcuchów co 2 (lub co 3) znak z podanego tekstu sometext. 6.10 W skrypcie mystringfunctions.py napisz funkcję stringreverse(sometext) która zwraca zmienną tekstową sometext w odwrotnej kolejności (od końca). 6.11 W skrypcie mystringfunctions.py napisz funkcję getspaces(sometext) która zwraca liczbę spacji występujących w zmiennej sometext oraz indeks ostatniej spacji. 6.12 W skrypcie mystringfunctions.py napisz funkcję vowelsconsonantsandspaces(sometext) która zwraca liczbę samogłosek, spółgłosek oraz spacji zawartych w zmiennej tekstowej sometext 6.13 W skrypcie mystringfunctions.py napisz funkcję replacespaces(sometext, newchar) która zastępuje spacje nowym znakiem newchar który podajemy jako argument funkcji. M Kociński & A Materka, Algorytmy i struktury danych, WEEIA PŁ, Łódź 2019 19

Ćwiczenia 6.14 W skrypcie mystringfunctions.py napisz funkcję replacecharacter(sometext, chartoreplace, newchar) która zastępuje określony znak (chartoreplace) w zmiennej tekstowej sometext podanym jako argument funcji znakiem newchar 6.15 W skrypcie mystringfunctions.py napisz funkcję deletereplacetriplecharacter(sometext, chartochange, flag) która w zależności od wartości parametru funkcji flag zastępuje/usuwa/potraja podany jako argument funkcji znak (chartochange). Opis działania funkcji (Doc String) wygląda następująco: Funkcja kasuje, zastępuję spacją lub potraja podany znak (literę) w zależności od wartości parametru flag: jeśli flag ma wartość d -> kasujemy, jeśłi flag ma wartość r - > zastępujęmy spacją, jeśli flag ma wartosć t -> potrajamy Składnia funkcji: 1)deleteReplaceTripleCharacter( Biomedical, m, d ) -> Bioedical 2)deleteReplaceTripleCharacter( Biomedical, m, r ) -> Bio edical 3)deleteReplaceTripleCharacter( Biomedical, m, t ) -> Biommmedical M Kociński & A Materka, Algorytmy i struktury danych, WEEIA PŁ, Łódź 2019 20

Podsumowanie 1. String (łańcuch) jest sekwencją znaków zawartych wewnątrz znaków cudzysłowu 2. Łańcuchy mogą być dodawane, powtarzane, akumulowane i porównywane 3. Indeksowanie umożliwia uzyskanie pojedynczego znaku z łańcucha 4. W języku Python rozróżniamy indeksy dodatnie i ujemne 5. Aby uzyskać kilka znaków ze zmiennej tekstowej stosujemy wycinanie (slicing) 6. Wartości boolowskie są zwracane przy stosowaniu operatorów In and not In 7. Aby zmienić znak wewnątrz łańcucha, musimy stworzyć nowy łańcuch 8. Iterowanie przez łańcuch znaków umożliwia pętla for. M Kociński & A Materka, Algorytmy i struktury danych, WEEIA PŁ, Łódź 2019 21

Literatura Brian Heinold, Introduction to Programming Using Python, Mount St. Mary s University, 2012 (http://faculty.msmary.edu/heinold/python.html). Brad Dayley, Python Phrasebook: Essential Code and Commands, SAMS Publishing, 2007 (dostępne też tłumaczenie: B. Dayley, Python. Rozmówki, Helion, 2007). Mark J. Johnson, A Concise Introduction to Programming in Python, CRC Press, 2012. M Kociński & A Materka, Algorytmy i struktury danych, WEEIA PŁ, Łódź 2019 22