Programowanie w językach skryptowych

Slides:



Advertisements
Podobne prezentacje
Tablice 1. Deklaracja tablicy
Advertisements

Komunikacja człowiek - komputer
STRUKTURY DANYCH.
Język C/C++ Funkcje.
Programowanie obiektowe
Standardowa biblioteka języka C++
Język ANSI C Funkcje Wykład: Programowanie komputerów
Prowadzący: mgr inż. Elżbieta Majka
Bazy danych II Instrukcja SELECT Piotr Górczyński 25/08/2001.
Elementarne struktury danych Piotr Prokopowicz
Współprogramy III Ten wykład ma na celu pokazanie kolejnej ciekawej możliwości, którą oferują współprogramy. Wspólprogramy reprezentujące wyrażenia regularne.
MS Access 2000 Normalizacja Paweł Górczyński 2005.
Materiały do zajęć z przedmiotu: Narzędzia i języki programowania Programowanie w języku PASCAL Część 8: Wykorzystanie procedur i funkcji © Jan Kaczmarek.
(c) 1999, Instytut Informatyki Politechniki Poznańskiej Rozdział 2: Język bazy danych - SQL Proste zapytania.
Podstawy informatyki Wirtotechnologia Grupa: 1A Wydział Inżynierii Metali i Informatyki Przemysłowej Wydział Odlewnictwa Akademia Górniczo – Hutnicza im.
Podstawy informatyki Informatyka stosowana Prowadzący: Grzegorz Smyk
Tablice.
WYZWALACZE (TRIGGERY) Wyzwalacz jest specjalnym rodzajem procedury składowanej, która może być wykonana w odpowiedzi na jedną z trzech sytuacji: UPDATE.
I T P W ZPT 1 Jak smakuje Espresso I T P W ZPT 2.
1 Języki i techniki programowania prowadzący dr Grzegorz Filipczyk.
Język SQL (Structured Query Language) DDL (Data Definition Language)
STAR WARS ALBUM.
Bazy Danych II prowadzący: mgr inż. Leszek Siwik
AWK Zastosowania Informatyki Wykład 1 Copyright, 2003 © Adam Czajka.
O relacjach i algorytmach
Podstawy informatyki (4)
Podstawy programowania
Programowanie w języku Matlab
Pierwsze programy.
TABLICE C++.
Budowanie tabel i relacji
SQL - Structured Query Language
Warsztaty programowania w języku Python
Andrzej Repak Nr albumu
XML – eXtensible Markup Language
Podstawy informatyki 2013/2014
Model relacyjny.
MOiPP Wykład 3 Matlab Przykłady prostych metod obliczeniowych.
Dynamiczne struktury danych
PL/SQL – dalsza wędrówka
Podstawy języka Instrukcje - wprowadzenie
Projektowanie bazy danych
Algorytmy i Struktury Danych
Michał Krawczykowski kl. IIIB
Definiowanie kluczy w tabelach RBD
Wymiana podstawy oraz sprawdzanie autentyczności partnera. Algorytm wymiany małego klucza używaniem metody Diffiego - Hellmana.
Treści multimedialne - kodowanie, przetwarzanie, prezentacja Odtwarzanie treści multimedialnych Andrzej Majkowski informatyka +
WYKŁAD 06 Programowanie dynamiczne Grażyna Mirkowska.
1 SBD, L.Banachowski Oprogramowanie strony serwera cz. 1 Powtórzenie wyk ł adu 6.
Iga Lewandowska I EMII MU
Algorytmy równoległe Algorytm równoległy pozwala na wykonywanie w danej chwili więcej niż jednej operacji. EREW - wyłączny odczyt i wyłączny zapis; CREW.
Grafika animacyjna w Macromedia Flash ACTION SCRIPT Joanna Sekulska-Nalewajko Katedra Informatyki Stosowanej Politechnika Łódzka 2006/2007.
Seminarium Dyplomowe: Metodyka i Techniki Programowania Autor: Bartłomiej Fornal.
PHP jest językiem skryptowym służącym do rozszerzania możliwości stron internetowych. Jego składnia jest bardzo podobna do popularnych języków programowania.
Wstęp do programowania Wykład 2 Dane, instrukcje, program.
Współpraca PHP i MySQL Wygodniejszym i wydajniejszym sposobem przechowywania i korzystania z danych zapisanych na serwerze jest współpraca z relacyjna.
Pakiety numeryczne Skrypty, funkcje Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania.
ALGORYTMY I STRUKTURY DANYCH
Excel 2007 dla średniozaawansowanych Zajęcia z Prowadzący: Artur Kołos.
C++ mgr inż. Tomasz Turba Politechnika Opolska 2016.
Temat: Tworzenie bazy danych
Python. Języki Programistyczne Microcode Machine code Assembly Language (symboliczna reprezentacja machine code) Low-level Programming Language (FORTRAN,
Indeksy drzewiaste. ISAM ISAM - INDEXED SEQUENTIAL ACCESS METHOD Problem: –Dany jest plik uporządkowany – w jaki sposób zrealizować efektywnie zapytanie.
Typy wyliczeniowe, kolekcje
Listy.
Programowanie Obiektowe – Wykład 5
Programowanie obiektowe II
Podstawy Python.
Indeksy.
Algorytmy i struktury danych
Zapis prezentacji:

Programowanie w językach skryptowych Wykład 5: Słowniki Opracował: Dr inż.. Marcin Janaszewski Katedra Informatyki Stosowanej Politechnika Łódzka 1

Operatory i metody słownikowe Operator Opis d[key] Zwraca wartość związaną z kluczem key ze słownika d d[key] = value Ustawia wartość d[key] równą value del d[key] Usuwa wartość d[key] ze słownika d len(d) Zwraca liczbę pozycji w słowniku d d.clear() Usuwa wszystkie pozycje ze słownika d d.copy() Zwraca płytką kopię słownika d d.qet(key[,default_value']) Zwraca d[key], jeśli istnieje klucz key (w przeciwnym wypadku zwraca wartość domyślną default_yalue) d.has_key(key) Zwraca prawdę, jeśli key występuje w d (w przeciwnym wypadku zwraca fałsz) d.items() Zwraca listę wszystkich pozycji słownika d d.keys() Zwraca listę wszystkich kluczy słownika d d.popitem() Zwraca i usuwa przypadkową pozycję ze słownika d d.setdefault(key[,default_value]) Zwraca d[key], jeśli istnieje klucz key (w przeciwnym wypadku ustawia i zwraca wartość domyślną default_value) d1.update(d2) Dołącza pozycje ze słownika d2 do słownika d1

Tworzenie słownika Słownik (nazywany także odwzorowaniem lub tablicą asocjacyjną) zawiera zero lub więcej par klucz-wartość, które są oddzielone przecinkami i ujęte w nawiasy klamrowe. Klucz jest oddzielany od związanej z nim wartości za pomocą dwukropka (:). Klucz musi być obiektem niezmiennym (liczbą, łańcuchem lub krotką), zaś wartość może być obiektem dowolnego typu (w tym także innym słownikiem). Pusty słownik nie zawiera żadnych pozycji: {}.

Tworzenie słownika Przykład >>> killed = { "Boba Fett": "Sarlacc", "Darth Maul": "Obi-Wan Kenobi", "Darth Vader": "Emperor Palpatine", "Death Star crew": "Luke Skywalker", "Emperor Palpatine": "Darth Vader", "Jabba the Hutt": "Leia Organa", "Obi-Wan Kenobi": "Darth Vader", "Porkins": "Death Star crew", "Qui-Gon Jinn": "Darth Maul", "Yoda": "Natural causes" } >>> nums= { "zlozone": [4, 6, 8, 9, 10], "fibonacci": [1, 1, 2, 3, 5, 8] "pierwsze": [2, 3, 5, 7] "kwadraty": [1, 4, 9] "potrójne": [1, 3, 6, 10] } >>> mydicts = { id(killed): killed, id(nums): nums }

Słowniki - uwagi W przypadku kluczy ważna jest wielkość liter. Klucze znajdujące się wewnątrz słownika muszą być unikatowe. Jeżeli do słownika zostanie wstawiona pozycja z duplikatem klucza, to odpowiednia pozycja z takim kluczem, która istnieje w słowniku, zostanie przez nią zastąpiona. Klucze danego słownika mogą być mieszaniną liczb, łańcuchów i krotek. Krotka może być kluczem tylko wtedy, gdy zawiera niezmienne obiekty (liczby, łańcuchy lub krotki). Jeśli krotka jawnie lub niejawnie zawiera obiekt zmienny (na przykład listę), to Python nie zezwoli na jej użycie jako klucza i zgłosi wyjątek TypeError. Krotki mogą zawierać klucze złożone, które składają się z kilku wartości. Krotka dwupozycyjna może na przykład przechowywać długość i szerokość geograficzną lub indeks wiersza i kolumny tablicy. >>> english = { "jeden": "one", 2.0: "two", (3,): "three", 8/2: "four" } >>> english { 'jeden': 'one', 2.0: 'two', (3,): 'three', 8/2: 'four' }

Drukowanie słownika >>> print killed {'Qui-Gon Jinn': 'OarthMaul', 'Oarth Evader': 'Emperor Palpatine', 'Yoda': 'Natural causes', 'Obi-Wan Kenobi': 'Darth Vader', 'Death Star crew': 'Luke Skywalker', 'Porkins': 'Death Star crew', 'Boba Fett': 'Sarlacc'. 'Emperor Palpatine': 'Darth Vader', 'Jabba the Hutt': 'Leia Organa'. 'OarthMaul': 'Obi-wan Kenobi'} >>> print nums {'fibonacci': [1, 1, 2, 3, 5, 8], 'pierwsze': [2, 3, 5, 7], 'złozone': [4, 6, 8, 9, 10], 'kwadraty': [1, 4, 9], 'potrojne': [1, 3, 6, 10]}

Własna funkcja drukowania słownika def printdict(dict): keys = diet.keys() keys.sort() for key in keys: print key, ":", dict[key]

printdict w akcji >>> printdict(killed) Boba Fett : Sarlacc Darth Maul : Obi-Wan Kenobi Darth Vader : Emperor Palpatine Death Star crew : Luke Skywalker Emperor Palpatine : Darth Vader Jabba the Hutt : Leia Organa Obi-Wan Kenobi : Darth Vader Porkins : Death Star crew Qui-Gon Jinn : Darth Maul Yoda : Natural causes >>> printdict(nums) fibonacci : [1, 1, 2, 3, 5, 8] kwadraty : [1. 4. 9] pierwsze : [2, 3, 5, 7] potrojne : [1, 3, 6, 10] zlozone : [4, 6, 8, 9, 10]

Uzyskanie wartości za pomocą klucza >>> killed["Yoda"] 'natural causes' >>> a = nums["pierwsze"] >>> print a[0:2] [2, 3] >>> b = mydicts[id(nums)] >>> printdict(b) fiboacci : [1, 1, 2, 3, 5, 8] kwadraty : [1, 4, 9] pierwsze : [2, 3, 5, 7] potrojne : [1, 3, 6, 10] zlozone : [4, 6, 8, 9, 10] >>>killed["Boss Hogg"] Traceback (most recent call last): File "<stdin>". line 1, in ? KeyError: Boss Hogg

Uzyskiwanie wartości za pomocą klucza (lub wartości domyślnej w przypadku, gdy klucz nie istnieje) >>>a = nums.get("pierwsze") >>>print a [2, 3, 5, 7] >>> b = nums.get("pierwsze", []) >>> print b >>> c = nums.get("parzyste", [2, 4, 6, 8, 10]) >>> print c [2, 4, 6, 8, 10] >>> d = nums.get("parzyste") >>> print d None >>>killed.get("Anakin Skywalker", "") '' >>> killed [killed. get("Anakin Skywalker", "Darth Vader")] 'Emperor Palpatine' >>> {}.get("mimetyczny","")

Uzyskiwanie wartości za pomocą klucza (lub uzyskiwanie wartości i wstawianie wartości domyślnej w przypadku, gdy klucz nie istnieje) >>> c = nums.setdefault("parzyste",[2, 4, 6, 8, 10]) >>> d = nums.setdefault("urojone") >>> e = nums.setdefault ("pierwsze", []) >>> print c [2, 4, 6, 8, 10] >>> print d None >>> print e [2, 3, 5, 7] >>> printdict(nums) fibonacci : [1, 1, 2, 3, 5. 8] kwadraty : [1. 4, 9] parzyste : [2. 4, 6, 8. 10] pierwsze : [2, 3, 5, 7] potrojne : [1, 3. 6. 10] urojone : None zlozone : [4, 6, 8, 9, 10] >>> z = {} >>> z.setdefault("mimetyczny", "") >>> z {'mimetyczny': ''} >>> a = killed.setdefault ("Radio star", "Video") >>> b = killed.get("Anakin Skywalker", "Darth Vader") >>> print a Video >>> print b Darth Vader >>> printdict(killed) Boba Fett : Sarlacc Darth Maul : Obi-Wan Kenobi Darth Vader : Emperor Palpatine Death Star crew : Luke Skywalker Emperor Palpatine : Darth Vader Jabba the Hutt : Leia Organa Obi-Wan Kenobi : Darth Vader Porkins : Death Star crew Qui-Gon Jinn : Darth Maul Radio star : Video Yoda : Natural causes

Uzyskiwanie wszystkich wartości ze słownika >>> a = killed.values() >>> print a ['OarthMaul', 'Emperor Palpatine', 'Natural causes', 'Darth Vader', 'Luke Skywalker', 'Death Star crew', 'Sarlacc', 'Darth Vader', 'Leia Organa', 'Obi-Wan Kenobi'] >>> nums.values() [[1, 1, 2, 3, 5, 8], [2, 3, 5, 7], [4, 6, 8, 9, 10], [ 1, 4, 9], [1, 3, 6, 10]] >>> mydicts.values() [{'fibonacci': [1, 1, 2, 3, 5, 8], pierwsze' : [2, 3, 5, 7], 'zlozone': [4, 6, 8, 9, 10], 'kwadraty': [1, 4, 9], 'potrojne': [1, 3, 6, 10]}, {'Qui-Gon Jinn': 'Darth Maul', 'Darth Vader': 'Emperor Palpatine', 'Yoda': 'Natural causes', 'Obi-Wan Kenobi': 'Darth Vader'. 'Death Star crew': 'Luke Skywalker', 'Porkins': 'Death Star crew', 'Boba Fett': 'Sarlacc', 'Emperor Palpatine': 'Darth Vader', 'Jabba the Hutt': 'Leia Organa', 'Darth Maul': 'Obi-Wan Kenobi'}] >>> print mydicts[id(nums)].values() [[1, 1, 2, 3, 5, 8], [2, 3, 5, 7], [4, 6, 8, 9, 10], [1, 4, 9], [1, 3, 6, 10]] >>> {}.values() []

Uzyskiwanie wszystkich kluczy ze słownika >>> a = killed.keys() >>> print a ['Qui-Gon Jinn', 'Darth Vader ', 'Yoda'. 'Obi-Wan Kenobi'. 'Death Star crew', 'Porkins', 'BobaFett', 'Emperor Palpatine', ' Jabba the Hutt', 'Darth Maul'] >>> nums.keys( ) ['fibonacci', 'pierwsze', 'zìozone', 'kwadraty', 'potrojne'] >>> mydicts.keys() [7924892, 7923932] >>> print mydicts[id(nums)].keys() ['fibonacci', 'pierwsze', 'zlozone', 'kwadraty', 'potrojne'] >>> (}.keys() []

Uzyskiwanie wszystkich par klucz-wartość ze słownika >>> a = killed.items() >>> print a [('Qui-Gon Jinn', 'Darth Maul'), ('Darth Vader', 'Emperor Palpatine'), ('Yoda', 'Natural causes'), ('Obi-Wan Kenobi', 'Darth Vader'), ('Death Star crew', 'Luke Skywalker'), ('Porkins', 'Death Star crew'), ('Boba Fett', 'Sarlacc'), ('Emperor Palpatine', 'Darth Vader'), ('Jabba the Hutt', 'Leia Organa'), ('Darth Maul', 'Obi-Wan Kenobi')] >>> nums.iterns() [('fibonacci', [1, 1, 2, 3, 5, 8]), ('pierwsze', [2, 3, 5, 7]), ('zlozone', [2, 4, 6, 8, 9, 10]), ('kwadraty', [1. 4, 9]), ('potrojne', [1, 3, 6, 10])] >>> mydicts.items() [(7924892, {'fibonacci': [1, 1, 2, 3, 5, 8], 'pierwsze': [2, 3, 5, 7], 'złożone': [2, 4, 6, 8, 9, 10], 'kwadraty': [1, 4, 9], 'potrojne': [1. 3, 6, 10]}), (7923932, {'Qui-Gon Jinn': 'Darth Maul', 'Darth Vader': 'Emperor Palpatine'. 'Yoda': 'Natural causes', 'Obi-Wan Kenobi': 'Darth Vader', 'Death Star crew': 'Luke Skywalker', 'Porkins': 'Death Star crew', 'Boba Fett': 'Sarlacc', 'Emperor Palpatine': 'Darth Vader', 'Jabba the 'Wutt': 'Leia Organa', 'Darth Maul': ' "Obi-Wan Kenobi'})] >>> print mydicts[id(nums)].items() [('fibonacci', [1, 1, 2, 3, 5, 8]), 'pierwsze', [2, 3, 5, 7]), ('zlozone', [2, 4, 6, 8, 9, 10]), ('kwadraty', [1, 4, 9]), 'potrojne' [ 1, 3, 6, 10])] >>> {}. items() []

Sprawdzanie tego, czy klucz istnieje >>> nums.has_key("parzyste") >>> nums.has_key("pierwsze") 1 >>> {}.has_key("") >>> killed.haskey("Boss Hogg") >>> def report(victim): ... if killed.haskey(victim): … print killed[victim], "killed", victim ... else: print victim, "is not dead" >>> report("Han Solo") Han Solo is not dead >>> report("Darth Maul") Obi-Wan Kenobi killed Darth Maul

Zliczanie par klucz-wartość w słowniku >>> len({}) >>> len(killed) 10 >>> len (nums) 5 >>> len(mydicts) 2 >>> len(mydicts[id(killed)]) >>> len(mydicts[id(nums)])

Wstawianie lub zastępowanie pary klucz-wartość >>> nums["parzyste"] = [2, 4, 6, 8, 10] >>> nums["pierwsze"] = [] >>> nums["kwadraty"].append(16) >>> printdict(nums) fibonacci : [1, 1, 2, 3, 5, 8] kwadraty : [1, 4, 9, 16] parzyste : [2, 4, 6, 8, 10] pierwsze : [] potrójne : [1, 3, 6, 10] złożone : [4, 6, 8, 9, 10] >>> killed["Greedo"] = "Han Solo" >>> killed["Boba Fett"] = "Han Solo" >>> printdict(killed) Boba Fett : Han Solo Darth Maul : Obi-Wan Kenobi Darth Vader : Emperor Palpatine Death Star crew : Luke Skywalker Emperor Palpatine : Darth Vader Greedo : Han Solo Jabba the Hutt : Leia Organa Obi-Wan Kenobi : Darth Vader Pork ins : Death Star crew Qui-Gon Jinn : Darth Maul Yoda : Natural causes >>> mydicts[id(killed)] = None >>> printdict(mydicts) 7923932 : None 7924892 : {'zlozone': [4, 6, 8, 9, 10], 'pierwsze': [], 'parzyste': [2, 4, 6, 8, 10], 'kwadraty': [1, 4, 9, 16], 'potrojne': [1, 3, 6, 10], 'fibonacci':[1, 1, 2, 3, 5, 8]

Usuwanie pary klucz-wartość >>> del nums["pierwsze"] >>> printdict(nums) fibonacci : [1, 1, 2, 3, 5, 8] kwadraty : [1, 4, 9] potrójne : [1, 3, 6, 10] zlozone : [4, 6, 8, 9, 10] >>> del mydicts[id(nums)]["kwadraty"] >>> printdict(mydicts[id(nums)]) potrojne : [1, 3. 6, 10] >>> del mydicts[id(nums)], mydicts[id(killed)] >>> print mydicts {} >>> del killed["Boss Hogg"] Traceback (most recent call last): File "<stdin>", line 1, in ? KeyError: Boss Hogg >>> del nums["fibonacci"], killed["Yoda"] >>> printdict(nums) potrojne : [1, 3, 6, 10] zlozone : [4, 6, 8, 9, 10] >>> kiled.keys() ['Qui-Gon Jinn', 'Darth Vader', 'Obi-Wan Kenobi', 'Death Star crew', 'Porkins', 'Boba Fett', 'Emperor Palpatine', 'Jabba the Hutt', 'Darth Maul']

Usuwanie przypadkowej pary klucz-wartość >>> {}.popitem() Traceback (most recent call last): File "<stdin>", 1ine 1, in ? KeyError. popitem(): dictionary is empty >>> a = killed. popitem() >>> print a ('Qui-Gon Jinn', 'Darth Maul') >>> killed.popitem() ('Darth Vader', 'Emperor Palpatine') ('Yoda', 'Natural causes') >>> print killed.keys() ['Obi-Wan Kenobi', 'Death Star crew', 'Porkins', 'Boba Fett', 'Emperor Palpatine'. 'Jabba the Hutt', 'Darth Maul'] >>> b = mydicts[id(nums)].popitem() >>> print b ('fibonacci', [1. 1, 2, 3, 5, 8]) >>> printdict(nums) kwadraty : [1, 4, 9] pierwsze : [2, 3, 5, 7] potrójne : [1, 3, 6, 10] zlozone : [4, 6, 8, 9, 10] >>> while nums: ... print nums.popitem()[0].capitalize() Pierwsze Zlozone Kwadraty Potrojne >>> print nums {}

Oczyszczanie lub usuwanie słownika >>> z.clear() >>> print z {} >>> mydicts.clear() >>> print mydicts >>> printdict(nums) "fibonacci : [1, 1, 2, 3, 5, 8] kwadraty : [1, 4, 9] pierwsze : [2, 3, 5, 7] potrojne : [1, 3, 6, 10] zlozone : [4, 6, 8, 9, 10] >>> nums.clear() >>> print nums >>> del killed >>> print killed Traceback (most recent call last): File "<stdin>", line 1, in ? NameError: name 'killed' is not defined