From c8a65f2b907abdfdab908b9f98257d68044ed239 Mon Sep 17 00:00:00 2001 From: Tomasz Dwojak Date: Tue, 5 Feb 2019 19:05:00 +0100 Subject: [PATCH] Add solutions --- labs02/zadania_3_solved.py | 190 +++++++++++++++++++++++++++++++++++++ labs02/zadania_4_solved.py | 110 +++++++++++++++++++++ 2 files changed, 300 insertions(+) create mode 100755 labs02/zadania_3_solved.py create mode 100644 labs02/zadania_4_solved.py diff --git a/labs02/zadania_3_solved.py b/labs02/zadania_3_solved.py new file mode 100755 index 0000000..c6e5991 --- /dev/null +++ b/labs02/zadania_3_solved.py @@ -0,0 +1,190 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +""" +Zadania na rozgrzewkę. +""" + + +""" +zad. 1 + * Stwórz listę składającą się z dowolnych 100 elementów, np. może być + to listę kwadratów liczb. + * Sprawdź za pomocą funkcji len liczbę elementów tej listy. + * Usuń trzeci, element. + * Usuń przedostatni element. + * Wyświetl pierwsze 10 elementów. +""" + +print("zad. 1") +kw = [] +for i in range(100): + kw.append(i ** 2) + +kw.pop(2) +kw.pop(-2) +print(kw[:10]) + +""" +zad. 2 +Znajdz najmniejsz element w poniższej liście. +""" +print("zad. 2") +l = [0, 6, 9, -10, -5, 9, 8, -6] + +print(min(l)) + +m = l[0] +for i in l: + if i < m: + m = i +print(m) + +""" +zad. 3 +Wyświetl poniższy słownik, tak, aby każda para klucz: wartość +była w osobnej linii. +""" +print("zad. 3") +s = {'Tomasz': [3, 4, 5, 4], 'Agata': [5, 5, 5, 4]} + +for k, v in s.items(): + print(k, ':', v) + +for k in s: + print(k, ':', s[k]) + + +""" +zad. 4 +Poniżej jest podana lista liczby. Stwórz słownik , którego kluczami +będą wartości występujące w liście , a wartościami ile dany element +wystąpił w liście . +""" +print("zad. 4") +liczby = [3, 4, 3, 3, 4, 7, 9] +counter = {} +for i in liczby: + counter[i] = liczby.count(i) + +print(counter) + +counter = {} +for i in liczby: + if i not in counter: + counter[i] = 1 + else: + counter[i] += 1 +print(counter) + +""" +zad. 5 +Poniższy słownik oceny dwóch osób. Stwórz nowy słownik z takimi samymi kluczami, +ale wartościami tego słownika będą średnie oceń. +""" +print("zad. 5") +s = {'Tomasz': [3, 4, 5, 4], 'Agata': [5, 5, 5, 4]} + +srednie = {} + +for k, v in s.items(): + srednie[k] = sum(v) / len(v) +print(srednie) + +for k, v in s.items(): + suma = 0 + for i in v: + suma += i + srednie[k] = suma / len(v) + +print(srednie) + + +""" +zad. 6 +Dla podanego poniże słownika S, stwórz nowy słownik, którego kluczami będą +wartości słownika S, a wartościami: odpowiadające im klucze z S. +""" +S = {'Klucz1': "Wartosc1", 'Klucz2': "Wartosc2", 'Klucz3': "Wartosc3"} + +print("zad. 6") +odw = {} + +for k, v in S.items(): + odw[v] = k +print(odw) + + + +""" +zad. 7 +Napisz kod, który wypisze na ekran elementy, które występnują w obu poniżej +podanych listach. +""" +l1 = [99, 8, 7, 55] +l2 = [55, 111, 11, 99, 8] + +print("zad. 7") +common = [] +for i in l1: + if i in l2: + common.append(i) +print(common) + +print([i for i in l1 if i in l2]) + +""" +zad. 8 +Napisz kod, który znajdzie najdroższy produkt w poniższym słowniku. +""" +print("zad. 8") + +zakupy = {'telefon': 1000, 'ładowarka': 35, 'chleb': 4.30, 'kawa': 55, 'gramofon': 240} +maxi = list(zakupy.keys())[0] +for k, v in zakupy.items(): + if zakupy[maxi] < v: + maxi = k +print(maxi) + +print(max(zakupy.items(), key=lambda x: x[1])[0]) + + +""" +zad. 9 +Stwórz listę składającą się z wartości słownika zakupy. +""" +print("zad. 9") +zakupy = {'telefon': 1000, 'ładowarka': 35, 'chleb': 4.30, 'kawa': 55, 'gramofon': 240} + +values = [] +for k, v in zakupy.items(): + values.append(v) +print(values) + +print(list(zakupy.values())) + +""" +zad. 10 +Wyświetl na ekranie poniższy wzór: +* +* * +* * * +* * * * +* * * * * +* * * * +* * * +* * +* +""" +print("zad. 10") +for i in range(9): + stars = [] + if i <= 4: + for k in range(i + 1): + stars.append('*') + print(' '.join(stars)) + else: + for k in range(9 - i): + stars.append('*') + print(' '.join(stars)) + diff --git a/labs02/zadania_4_solved.py b/labs02/zadania_4_solved.py new file mode 100644 index 0000000..f947785 --- /dev/null +++ b/labs02/zadania_4_solved.py @@ -0,0 +1,110 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +""" +zad. 1 +Napisz funkcję, która zwróci sumę elementów w liście. +""" +def suma(lista): + s = 0 + for item in lista: + s += item + return s +print(suma([1, 2, 3])) + + + +""" +zad. 2 +Napisz funkcje, która dla przekazanej listy, zwróci listę z niepowtarzającymi +się wartościami. +""" + +def unique(lista): + pojedyncze = [] + for item in lista: + if item not in pojedyncze: + pojedyncze.append(item) + return pojedyncze +print(unique([1, 1, 2, 1, 2, 3])) + +""" +zad. 3 +Napisz funkcję, która dla przekazanej listy zwróci listę skłdajacą się +z elementów na parzystych indeksach. +""" + +def parzyste(lista): + return lista[::2] +print(parzyste([0, 1, 2, 3, 4, 5])) + +""" +zad. 4 +Napisz funkcję, która sprawdzi, czy podany napis (String) jest palindromem, +czyli wyrazem, który czytany od końca jest tym samym słowem, np. kajak. +""" + +def is_palindrom(text): + for i in range(len(text)): + if text[i] != text[-1 - i]: + return False + return True +print(is_palindrom("kajak")) +print(is_palindrom("antykajak")) + +""" +zad. 5 +Napisz generator, który będzie zwracał n kolejnych liczb ciągu fibonacciego, +gdzie n to argument funkcji. +""" + +def fib(n): + last = None + last_last = None + for i in range(n): + if i <= 1: + last_last = last + last = 1 + yield 1 + else: + curr = last_last + last + last_last = last + last = curr + yield curr + +for i in fib(10): + print(i) + + +""" +zad. 6 +Zainstaluj bibliotekę ``weather-api`` (https://pypi.python.org/pypi/weather-api). Korzystając z niej: + * Wypisz informacje o aktualnej pogodzie. + * Napisz funkcję, która zamieni stopnie ``F`` na ``C``. + * Korzystając z prognozy, znajdź dzień, w którym będzie najzimniej. Wypisz nazwę tygodnia (w języku polskim) i temperaturę w C. +""" + +""" +zad. 7 +Katalog scores zawiera 64 pliki tekstowe, które posiadają informacje o wysokości miary ``BLEU`` na różnych etapach trenowania modelu. Nazwa każdego pliku na postać ``model.iterXXXXXXX.npz.bleu``, gdzie ``XXXXXXX``, to liczba iteracji.Zaw> + * Wykorzystaj bibliotekę ``glob`` (https://docs.python.org/2/library/glob.html) + * Wyświetl tylko pełną nazwe pliku (wraz z ścieżką). +""" +import glob + +values = {} +for path in glob.glob("./scores/*"): + with open(path) as ff: + value = float(ff.read().strip().split(' ')[2][:-1]) + values[path] = value + +print(values) +max_key = None +for k, v in values.items(): + if max_key is None: + max_key = k + else: + if values[max_key] < v: + max_key = k +print(max_key) +