forked from tdwojak/Python2018
Add labs 02
This commit is contained in:
parent
90463994cb
commit
65680b3062
25
labs02/task01.py
Normal file
25
labs02/task01.py
Normal file
@ -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))
|
22
labs02/task02.py
Normal file
22
labs02/task02.py
Normal file
@ -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))
|
32
labs02/task03.py
Normal file
32
labs02/task03.py
Normal file
@ -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))
|
24
labs02/task04.py
Normal file
24
labs02/task04.py
Normal file
@ -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))
|
26
labs02/task05.py
Normal file
26
labs02/task05.py
Normal file
@ -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))
|
26
labs02/task06.py
Normal file
26
labs02/task06.py
Normal file
@ -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))
|
22
labs02/task07.py
Normal file
22
labs02/task07.py
Normal file
@ -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))
|
24
labs02/task08.py
Normal file
24
labs02/task08.py
Normal file
@ -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))
|
||||||
|
|
26
labs02/task09.py
Normal file
26
labs02/task09.py
Normal file
@ -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))
|
26
labs02/task10.py
Normal file
26
labs02/task10.py
Normal file
@ -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))
|
26
labs02/task11.py
Normal file
26
labs02/task11.py
Normal file
@ -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))
|
21
labs02/test_task.py
Executable file
21
labs02/test_task.py
Executable file
@ -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))
|
Loading…
Reference in New Issue
Block a user