Zajęcia nr 2:
Podstawy składni Pythona: slajdy
Proste zadania z pythona tutaj
@ MIM UW
(gwiazdka oznacza zadania trudniejsze – dodatkowe/dla chętnych)
Witamy na zajęciach ze Wstępu do Informatyki!
Poniżej znajdą Państwo slajdy z pierwszego wykładu:
Kontakt:
Bartek Wilczyński: bartek@mimuw.edu.pl
Paweł Bednarz: pawel.bednarz@mimuw.edu.pl
Michał Startek: mist@mimuw.edu.pl
Piotr Wilkin: pwl@mimuw.edu.pl
Terminy konsultacji powinny być widoczne w USOSie.
Odnośniki do materiałów:
W związku z tym, że wiele osób chciałoby zdobyć więcej punktów aby zaliczyć zajęcia opracowaliśmy dodatkowe zadanie. Jeśli ktoś stwierdzi, że zdobycie dodatkowych 5 punktów pomoże mu w zaliczeniu, może przysłać (do końca sesji) rozwiązanie.
Zadanie polega na stworzeniu pakietu do obsługi list zakupów. Rozwiązanie będzie się składało z trzech modułów. Pierwszy moduł ma zawierać funkcje do wczytywania pojedynczych list z trzech różnych formatów, opisanych na końcu treści zadania. Należy napisać osobną funkcję do wczytywania każdego z formatów (csv, lst, dct) oraz jedną zbiorczą funkcję wczytaj(plik), która na podstawie rozszerzenia nazwy pliku plik zwróci listę zakupów w wewnętrznym formacie, wybranym przez autora rozwiązania.
Drugi moduł ma zawierać następujące funkcje do operowania na listach zakupów:
– zakupy(lista, lista_zrobionych_zakupow), która zostawia na liście lista tylko te produkty, które pozostały jeszcze do kupienia (lub redukuje ilość produktu z listy lista w wypadku, gdy ilość danego produktu na liście lista jest większa niż na liście lista_zrobionych_zakupów)
– dodaj_zakupy(lista, nowe_zakupy), która doda do listy zakupów nowe produkty; w wypadku, gdy dany produkt jest już na liście lista, dodajemy po prostu do listy dodatkową ilość tego produktu z listy nowe_zakupy
– wczytaj_opis(opis), która dla każdego produktu wczyta i zapamięta jego kategorię – nie należy zakładać, że plik z opisem zawiera wpisy dla wszystkich produktów, które są obecne na aktualnej liście. Może też zawierać wpisy odnośnie produktów, których nie ma na aktualnej liście. Opis formatu pliku z opisem znajduje się poniżej.
Dodatkowo trzeci moduł służy do wypisywania listy zakupów w kilku formatach (tych, z których potrafimy wczytywać). Każda z funkcji wypisujących przyjmuje dodatkowy parametr kategorie, który jest listą i ma sprawić, żeby wypisane zostały tylko produkty z kategorii znajdujących się na liście. Produkty, które w chwili wypisywania nie mają przypisanej kategorii nie powinny zostać wypisane.
Plik z opisem jest postaci:
produkt kategoria
Formaty do wczytywania list:
1. Pliki z rozszerzeniem .csv:
masło 1, mleko 6, chleb 2
2. Pliki z rozszerzeniem .lst:
masło 1
mleko 6
chleb 2
3. Pliki z rozszerzeniem .dct:
{masło: 1, mleko: 6, chleb: 2}
Zadania w postaci spakowanego kodu źródłowego (w jednym pliku zadanie3_nr-indeksu.zip lub zadanie3_nr-indeksu.tar) przesyłają Państwo do obu prowadzących ćwiczenia (bartek@mimuw.edu.pl i pawel.bednarz@mimuw.edu.pl) do końca sesji (10.02.2013). Proszę o umieszczenie w tytule e-mail’a hasła [WDI-3] i o wysyłanie ze skrzynek studenckich (aby łatwiej było zidentyfikować autora i ew. “zapożyczenia”).
Powodzenia!
Skrypt z wykładu:
http://www.mimuw.edu.pl/~gorecki/wdi/Wdi1s.pdf
Zadania na grep. Uwaga: do tych zadań warto stworzyć odpowiednie pliki testowe, żeby zobaczyć efekt działania programów.
Zadania na sed. Uwaga: jw.
Slajdy z wykładu są dostępne tutaj:
http://www.mimuw.edu.pl/~gorecki/wdi/Wdi3u.pdf
http://www.mimuw.edu.pl/~gorecki/wdi/Wdi4u.pdf
Zadania:
Dziś spróbujemy nauczyć się obsługi polecenia join.
Na rozgrzewkę proponuję rozwiązać zadania 1 i 2 z kolokwium z 2010 roku (http://www/~gorecki/wdi/1011unixkol.pdf).
Teraz mamy dwa nowe zadania do tego samego tematu:
załóżmy, że plik.a.txt i plik.b.txt zawierają opisy towarów dostępnych odpowiednio w sklepach a i b.
1. Znajdź cenę towaru w sklepie b, którego jest najwięcej w sklepie a (spośród tych, które są w obu sklepach).
2. Znajdź najtańszy towar w sklepie a, którego nie ma w sklepie b.
Polecam
man join
Chcieli Państwo przykład do zadania drugiego.
Np. Jeśli weźmiemy następujący opis planszy:
4
5
p 1 3 1
l 1 5 2
l 2 3 1
j 3 3 2
s 4 4 -3
j 4 3 -2
p 4 2 2
to wyświetla nam się coś takiego
A funkcja play([2,3,2,2,4,3,3,6,5,2]) zwraca:
[(1, 1),
(1, 3),
(1, 3),
(3, 5),
(1, 4),
(3, 5),
(4, 5),
(4, 2),
(4, 2),
(4, 2),
(4, 1)]
Prezentacje:
http://www.mimuw.edu.pl/~gorecki/wdi/Wdi1u.pdf
http://www.mimuw.edu.pl/~gorecki/wdi/Wdi2u.pdf
http://www.mimuw.edu.pl/~gorecki/wdi/Wdi3u.pdf
Zadania:
Wyrażenia regularne:
Howto