• Nie Znaleziono Wyników

8 Literatura dodatkowa

W dokumencie Python: Wprowadzenie do programowania (Stron 34-38)

args = parser.parse_args() print(args)

$ python3 /tmp/skrypt.py aa tt usage: skrypt.py [-h] [-v] [ARG]

skrypt.py: error: unrecognized arguments: tt

$ python3 /tmp/skrypt.py -v aa Namespace(ARG='aa', verbose=True)

To tylko mały przykład możliwości argparse, a szczegóły (jak zwykle) – w dokumentacji.

7 Wykład wideo

• Python: wprowadzenie –https://www.youtube.com/watch?v=Nhb4WX_9Tgc

• Python: funkcje –https://www.youtube.com/watch?v=uHBzNSWTGMA

• Python: pętle i warunki – https://www.youtube.com/watch?v=d1igYsEZymM

• Python: napisy –https://www.youtube.com/watch?v=A0ZtouykAjI

• Python: wyrażenia regularne –https://www.youtube.com/watch?v=OklkE9T8ur8

• Python: listy – https://www.youtube.com/watch?v=vpMGkToxf_I

• Python: typy i referencje – https://www.youtube.com/watch?v=LiMPlG0X9e0

• Python: operacje bitowe i wyjątki – https://www.youtube.com/watch?v=fU3FwceTIM0

• Python: słowniki i klasy – https://www.youtube.com/watch?v=K0XdD6aygwo

• Python: pliki i czekanie na dane –https://www.youtube.com/watch?v=OhMh5yYZgBg

• Python: procesy potomne (fork i exec) –https://www.youtube.com/watch?v=Zy_T9lhhPCw

• Python: biblioteki (xml, json, sql, ...) – https://www.youtube.com/watch?v=kcHf4l66QbA

8 Literatura dodatkowa 🤓

• The Python Tutorial (https://docs.python.org/3/tutorial/) - oficjalny Tutorial Pythona.

• Biblioteka Riklaunima: Podstawy Pythona (http://www.python.rk.edu.pl/w/p/podstawy/).

• A Byte of Python (https://python.swaroopch.com/).

• How to Think Like a Computer Scientist: Learning with Python 3 (http://openbookproject.ne t/thinkcs/python/english3e/).

• Zanurkuj w Pythonie (https://pl.wikibooks.org/wiki/Zanurkuj_w_Pythonie).

9 Zadania

Informacja

Często w zadaniach programistycznych i zawsze w ramach tego kursu jeżeli jest powiedziane:

• „napisz funkcję” to znaczy że ma zostać napisana funkcja, a nie jedynie kod programu, który mógłby stanowić wnętrze (ciało) tej funkcji,

• „napisz program” to znaczy że ma zostać napisany pełny kod programu realizujący podane czynności,

• „napisz pętlę/warunek/...” to znaczy że wystarczy napisać sam kod pętli, warunku, innej konstrukcji (ale nie tylko jego wnętrze, lecz kod całej żądanej konstrukcji składniowej),

• „napisz funkcję przyjmującą napis” to znaczy że funkcja ma mieć argument, który będzie traktowany jako napis (nie oznacza to że wymaga się wczytania tego napisu „z klawiatury”a),

• „napisz funkcję zwracającą X” to znaczy że funkcja ma zwrócić (poprzez return) wartość określoną przez X (nie ma jej wypisywać na ekran),

• „napisz funkcję wypisującą X” to znaczy że funkcja ma wypisać na ekran (standardowe wyjście) wartość określoną przez X,

a. Powszechnie używane w nauce programowania wczytywanie danych „z klawiatury” / odpytywanie użytkownika o kolejne parametry na ogół nie jest najlepszym rozwiązaniem programistycznym, o tym dlaczego dowiesz się w dalszych częściach tego kursu

9.1 konstrukcje składniowe

Zadanie 9.1.1

Napisz funkcję, która przyjmuje dwa argumenty i zwraca ich sumę. Użyj jej do obliczenia (oraz wypisania na konsolę) wartości kilku różnych sum.

Wskazówka: print() powinien być użyty na zewnątrz tej funkcji.

Zadanie 9.1.2

Napisz program obliczający sumę 12 + 22+ 32+ … + 992 + 1002.

Zadanie 9.1.3

Napisz funkcję znak(liczba) która wypiszę informację o znaku podanej liczby (wyróżniając zero) i zwróci jej wartość bezwzględną. Wywołanie funkcji znak powinno wyglądać następująco:

a = znak(7) b = znak(-13) c = znak(0) print(a, b, c)

7 jest dodatnia -13 jest ujemna 0 to zero

7 13 0

Zadanie 9.1.4

Rozwiąż zadanie 9.1.2 stosując pętlę while.

9.2 napisy

Zadanie 9.2.1

Napisz funkcję, która dla danej listy słów wypisze każde słowo z listy wspak. Np. dla listy ['Ala', 'ma', 'kota'] funkcja powinna wypisać:

alAam atok

Wskazówka: Po elementach listy znajdującej się w zmiennej możemy iterować pętlą for, tak jak robiliśmy to po literach napisu, czy po elementach listy liczb zapisanej bezpośrednio w konstrukcji pętli (spróbuj for x in lista:).

Zadanie 9.2.2

Napisz funkcję wyiksuj(napis), która zwróci dany napis, zastępując każdą małą literę przez x i każdą wielką literę przez X, natomiast resztę znaków pozostawi bez zmian. Np. dla napisu 'Py-thon 3.6.1 (default, Dec 2015, 13:05:11)' funkcja powinna zwrócić napis: Xxxxxx 3.6.1 (xxxxxxx, Xxx 2015, 13:05:11)

Zadanie 9.2.3

Napisz program dekodujący napis kodowany w UTF8 zakodowany przy pomocy base64 mający po-stać: b'UHl0aG9uIGplc3QgZmFqbnkg8J+Yjg==\n'.

Wskazówka: dane wejściowe funkcji decode() muszą być typu ”bytes”, można to uzyskać poprze-dzając napis prefiksem b, tak jak powyżej.

9.3 wyrażenia regularne

Zadanie 9.3.1

Napisz funkcję która sprawdzi z użyciem wyrażeń regularnych czy dany napis jest słowem (tzn. nie zawiera spacji).

Zadanie 9.3.2

Napisz funkcję która sprawdzi z użyciem wyrażeń regularnych czy dany napis jest liczbą (tzn. jest złożony z cyfr i kropki, a na początku może wystąpić + albo -).

9.4 zmienne i ich typy

Zadanie 9.4.1

Zapoznaj się z dokumentacją klasy odpowiedzialnej za napisy (str), zwróć szczególną uwagę na metody split, find, replace. Korzystając z metod klasy str napisz funkcję parse która dla napisu będącego jej argumentem wykona zamianę wszystkich ciągów ”XY” na spację oraz dokona rozbicia napisu złożonego z pól rozdzielanych dwukropkiem na listę napisów odpowiadających poszczególnym polom. Funkcja powinna działać w następujący sposób:

> l = parse("Ala:maXYkota:i inne:zwierzeta")

> print(l)

['Ala', 'ma kota', 'i inne', 'zwierzeta']

Zadanie 9.4.2

Napisz funkcję zlicz która dla podanej listy policzy powtórzenia jej elementów. Przykład użycia:

> zlicz(["AX", "B", "AX"]) AX wystepuje 2 razy

B wystepuje 1 razy

Wskazówka: Użyj słownika, w którym element będzie stanowił klucz, a krotność jego wystąpień wartość. Możesz użyć metody get() do pobierania wartości z słownika, jeżeli w nim jest lub wartości domyślnej w przeciwnym wypadku - szczegóły zobacz w dokumentacji

Zadanie 9.4.3

Napisz funkcję która przyjmuje dwa argumenty: listę oraz funkcję. Funkcja ma za zadanie wykonać przekazaną do niej funkcję na każdym elemencie listy. Przykład użycia:

>>> wykonaj([1,2,3], print) 12

3

Zadanie 9.4.4

Zastanów się czy konstrukcję if/elif w funkcji dzialanie() z rozdziału 4.4 można by zastąpić słow-nikiem, jak to ewentualnie zrobić i jakie mogłoby mieć to zalety bądź wady?

9.5 fork i pliki

Zadanie 9.5.1

Napisz funkcję, który wczytuje dane z standardowego wejścia. Funkcja powinna przyjmować jeden argument określający maksymalny czas oczekiwania na kolejną porcję danych. Każde pojawienie się danych wejściowych powinno resetować odliczanie timeoutu podanego w argumencie. Po skutecznym upływie tego timeoutu funkcja powinna zwrócić wszystkie wczytane dane.

Wskazówka: zmodyfikuj przykład użycia funkcji select() podany w skrypcie.

Zadanie 9.5.2

Napisz program który utworzy 1 potomka, rodzić powinien wypisać PID potomka i swój. Natomiast potomek powinien utworzyć kolejny proces w którym zostanie uruchomiona komenda ps -f w taki sposób aby potomek odebrał do zmiennej jej standardowe wyjście i wypisał je na ekran.

Zadanie 9.5.3

Napisz funkcję zapisz która przyjmuje dwa argumenty: słownik oraz nazwę pliku. Funkcja ma utworzyć plik o podanej nazwie i zapisać do niego otrzymany słownik, w taki sposób że każda linii odpowiada jednej parze klucz wartość, a separatorem pomiędzy kluczem a wartością jest znak tabulacji. Dla uproszczenia zakładamy że elementy słownika są napisami (zarówno klucze jak i wartości) i nie zawierają znaków nowej linii ani tabulacji.

Na przykład dla wywołania zapisz({"a": "qwe", "d": "123"}, "xx") funkcja powinna utwo-rzyć plik z zawartością:

a qwe

d 123

W dokumencie Python: Wprowadzenie do programowania (Stron 34-38)

Powiązane dokumenty