From 65680b306221ac20332d3cdaa1aa5acb46937f83 Mon Sep 17 00:00:00 2001 From: Tomasz Dwojak Date: Sat, 12 May 2018 11:37:19 +0200 Subject: [PATCH] Add labs 02 --- labs02/task01.py | 25 +++++++++++++++++++++++++ labs02/task02.py | 22 ++++++++++++++++++++++ labs02/task03.py | 32 ++++++++++++++++++++++++++++++++ labs02/task04.py | 24 ++++++++++++++++++++++++ labs02/task05.py | 26 ++++++++++++++++++++++++++ labs02/task06.py | 26 ++++++++++++++++++++++++++ labs02/task07.py | 22 ++++++++++++++++++++++ labs02/task08.py | 24 ++++++++++++++++++++++++ labs02/task09.py | 26 ++++++++++++++++++++++++++ labs02/task10.py | 26 ++++++++++++++++++++++++++ labs02/task11.py | 26 ++++++++++++++++++++++++++ labs02/test_task.py | 21 +++++++++++++++++++++ 12 files changed, 300 insertions(+) create mode 100644 labs02/task01.py create mode 100644 labs02/task02.py create mode 100644 labs02/task03.py create mode 100644 labs02/task04.py create mode 100644 labs02/task05.py create mode 100644 labs02/task06.py create mode 100644 labs02/task07.py create mode 100644 labs02/task08.py create mode 100644 labs02/task09.py create mode 100644 labs02/task10.py create mode 100644 labs02/task11.py create mode 100755 labs02/test_task.py diff --git a/labs02/task01.py b/labs02/task01.py new file mode 100644 index 0000000..7c08c56 --- /dev/null +++ b/labs02/task01.py @@ -0,0 +1,25 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +""" +Zad 2. Napisz funkcję even_elements zwracającą listę, +która zawiera tylko elementy z list o parzystych indeksach. +""" + +def even_elements(lista): + pass + + +def tests(f): + inputs = [[[1, 2, 3, 4, 5, 6]], [[]], [[41]]] + outputs = [[1, 3, 5], [], [41]] + + for input, output in zip(inputs, outputs): + if f(*input) != output: + return "ERROR: {}!={}".format(f(*input), output) + break + return "TESTS PASSED" + + +if __name__ == "__main__": + print(tests(even_elements)) diff --git a/labs02/task02.py b/labs02/task02.py new file mode 100644 index 0000000..a6d6321 --- /dev/null +++ b/labs02/task02.py @@ -0,0 +1,22 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +""" + Napisz funkcję days_in_year zwracającą liczbę dni w roku (365 albo 366). +""" + +def days_in_year(days): + pass + +def tests(f): + inputs = [[2015], [2012], [1900], [2400], [1977]] + outputs = [365, 366, 365, 366, 365] + + for input, output in zip(inputs, outputs): + if f(*input) != output: + return "ERROR: {}!={}".format(f(*input), output) + break + return "TESTS PASSED" + +if __name__ == "__main__": + print(tests(days_in_year)) diff --git a/labs02/task03.py b/labs02/task03.py new file mode 100644 index 0000000..a1c3a85 --- /dev/null +++ b/labs02/task03.py @@ -0,0 +1,32 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + + +""" +Zad 4. Napisz funkcje oov(text, vocab), która zwraca listę wyrazów +(bez duplikatów), które występują w tekście text i nie występują w liście +znanych wyrazów vocab. Argumenty funkcji text i vocab to odpowiednio łańcuch +znakowy i lista łańuchów znakowych. Wszystkie wyrazy należy zmienić na małe +litery. (OOV = out of vocabulary) (W pythonie istnieje struktura danych tak +jak 'set', która przechowuje elementy bez powtórzeń.) +""" + + +def oov(text, vocab): + pass + + + +def tests(f): + inputs = [("this is a string , which i will use for string testing", + [',', 'this', 'is', 'a', 'which', 'for', 'will', 'i'])] + outputs = [['string', 'testing', 'use']] + + for input, output in zip(inputs, outputs): + if set(f(*input)) != set(output): + return "ERROR: {}!={}".format(f(*input), output) + break + return "TESTS PASSED" + +if __name__ == "__main__": + print(tests(oov)) diff --git a/labs02/task04.py b/labs02/task04.py new file mode 100644 index 0000000..37413f1 --- /dev/null +++ b/labs02/task04.py @@ -0,0 +1,24 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +""" +Napisz funkcję sum_from_one_to_n zwracającą sume liczb od 1 do n. +Jeśli podany argument jest mniejszy od 1 powinna być zwracana wartość 0. +""" + +def sum_from_one_to_n(n): + pass + + +def tests(f): + inputs = [[999], [-100]] + outputs = [499500, 0] + + for input, output in zip(inputs, outputs): + if f(*input) != output: + return "ERROR: {}!={}".format(f(*input), output) + break + return "TESTS PASSED" + +if __name__ == "__main__": + print(tests(sum_from_one_to_n)) diff --git a/labs02/task05.py b/labs02/task05.py new file mode 100644 index 0000000..f59268a --- /dev/null +++ b/labs02/task05.py @@ -0,0 +1,26 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + + +""" +Napisz funkcję euclidean_distance obliczającą odległość między +dwoma punktami przestrzeni trójwymiarowej. Punkty są dane jako +trzyelementowe listy liczb zmiennoprzecinkowych. +np. odległość pomiędzy punktami (0, 0, 0) i (3, 4, 0) jest równa 5. +""" + +def euclidean_distance(x, y): + pass + +def tests(f): + inputs = [[(2.3, 4.3, -7.5), (2.3, 8.5, -7.5)]] + outputs = [4.2] + + for input, output in zip(inputs, outputs): + if f(*input) != output: + return "ERROR: {}!={}".format(f(*input), output) + break + return "TESTS PASSED" + +if __name__ == "__main__": + print(tests(euclidean_distance)) diff --git a/labs02/task06.py b/labs02/task06.py new file mode 100644 index 0000000..ff4a9d3 --- /dev/null +++ b/labs02/task06.py @@ -0,0 +1,26 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +""" +Napisz funkcję big_no zwracającej tzw. "Big 'NO!'" +(zob. http://tvtropes.org/pmwiki/pmwiki.php/Main/BigNo) +dla zadanej liczby tj. napis typu "NOOOOOOOOOOOOO!", gdzie liczba 'O' ma być +równa podanemu argumentem, przy czym jeśli argument jest mniejszy niż 5, +ma być zwracany napis "It's not a Big 'No!'". +""" + +def big_no(n): + pass + +def tests(f): + inputs = [[5], [6], [2]] + outputs = ["NOOOOO!", "NOOOOOO!", "It's not a Big 'No!'"] + + for input, output in zip(inputs, outputs): + if f(*input) != output: + return "ERROR: {}!={}".format(f(*input), output) + break + return "TESTS PASSED" + +if __name__ == "__main__": + print(tests(big_no)) diff --git a/labs02/task07.py b/labs02/task07.py new file mode 100644 index 0000000..80cbd37 --- /dev/null +++ b/labs02/task07.py @@ -0,0 +1,22 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +""" +Napisz funkcję char_sum, która dla zadanego łańcucha zwraca +sumę kodów ASCII znaków. +""" +def char_sum(text): + pass + +def tests(f): + inputs = [["this is a string"], ["this is another string"]] + outputs = [1516, 2172] + + for input, output in zip(inputs, outputs): + if f(*input) != output: + return "ERROR: {}!={}".format(f(*input), output) + break + return "TESTS PASSED" + +if __name__ == "__main__": + print(tests(char_sum)) diff --git a/labs02/task08.py b/labs02/task08.py new file mode 100644 index 0000000..252b10d --- /dev/null +++ b/labs02/task08.py @@ -0,0 +1,24 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +""" +Napisz funkcję sum_div35(n), która zwraca sumę wszystkich liczb podzielnych +przez 3 lub 5 mniejszych niż n. +""" + +def sum_div35(n): + pass + +def tests(f): + inputs = [[10], [100], [3845]] + outputs = [23, 2318, 3446403] + + for input, output in zip(inputs, outputs): + if f(*input) != output: + return "ERROR: {}!={}".format(f(*input), output) + break + return "TESTS PASSED" + +if __name__ == "__main__": + print(tests(sum_div35)) + diff --git a/labs02/task09.py b/labs02/task09.py new file mode 100644 index 0000000..9045054 --- /dev/null +++ b/labs02/task09.py @@ -0,0 +1,26 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +""" +Napisz funkcję leet_speak, która podmienia w podanym napisie niektóre litery +na podobnie wyglądające cyfry: 'e' na '3', 'l' na '1', 'o' na '0', 't' na '7'. +Np. leet('leet') powinno zwrócić '1337'. +""" + + +def leet_speak(text): + pass + + +def tests(f): + inputs = [['leet'], ['do not want']] + outputs = ['1337', 'd0 n07 wan7'] + + for input, output in zip(inputs, outputs): + if f(*input) != output: + return "ERROR: {}!={}".format(f(*input), output) + break + return "TESTS PASSED" + +if __name__ == "__main__": + print(tests(leet_speak)) diff --git a/labs02/task10.py b/labs02/task10.py new file mode 100644 index 0000000..58d40d2 --- /dev/null +++ b/labs02/task10.py @@ -0,0 +1,26 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + + +""" +Napisz funkcję pokemon_speak, która zamienia w podanym napisie co drugą literę +na wielką. Np. pokemon_speak('pokemon') powinno zwrócić 'PoKeMoN'. +""" + + +def pokemon_speak(text): + pass + + +def tests(f): + inputs = [['pokemon'], ['do not want'], ['POKEMON']] + outputs = ['PoKeMoN', 'Do nOt wAnT', 'POKEMON'] + + for input, output in zip(inputs, outputs): + if f(*input) != output: + return "ERROR: {}!={}".format(f(*input), output) + break + return "TESTS PASSED" + +if __name__ == "__main__": + print(tests(pokemon_speak)) diff --git a/labs02/task11.py b/labs02/task11.py new file mode 100644 index 0000000..7d36767 --- /dev/null +++ b/labs02/task11.py @@ -0,0 +1,26 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + + +""" +Napisz funkcję common_chars(string1, string2), która zwraca alfabetycznie +uporządkowaną listę wspólnych liter z lańcuchów string1 i string2. +Oba napisy będą składać się wyłacznie z małych liter. +""" + +def common_chars(string1, string2): + pass + + +def tests(f): + inputs = [["this is a string", "ala ma kota"]] + outputs = [['a', 't']] + + for input, output in zip(inputs, outputs): + if f(*input) != output: + return "ERROR: {}!={}".format(f(*input), output) + break + return "TESTS PASSED" + +if __name__ == "__main__": + print(tests(common_chars)) diff --git a/labs02/test_task.py b/labs02/test_task.py new file mode 100755 index 0000000..6875a37 --- /dev/null +++ b/labs02/test_task.py @@ -0,0 +1,21 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- + + +def suma(a, b): + """ + Napisz funkcję, która zwraca sumę elementów. + """ + return a + b + +def tests(f): + inputs = [(2, 3), (0, 0), (1, 1)] + outputs = [5, 0, 2] + + for input, output in zip(inputs, outputs): + if f(*input) != output: + return "ERROR: {}!={}".format(f(*input), output) + break + return "TESTS PASSED" + +print(tests(suma))