Temat 15: Powtórzenie (III)
Wstecz; Ostatnia modyfikacja: 24.04.2015
- Ćwiczenie 1: co jest wynikiem działania tego kodu:
def f(a,b):
if len(a) < 1:
return b
else:
b.append(a[0])
return f(a[1:], b)
print(f((1,2),[3,4]))
Ćwiczenie 2: napisz funkcję, która łaczy dwie listy w sposób
jak w przykładzie: f([a,b,c,d,e,f], [1,2,3]) -> [a,1,b,2,c,3,d,e,f].
Przykład dekoratora, który liczy czas wykonania danej funkcji
def count_calls(fun):
def res_fun(*args, **kwargs):
res_fun.count += 1
print(res_fun.count)
res = fun(*args, **kwargs)
return res
res_fun.count = 0
return res_fun
Dekorator, który przyjmuje parametry
def returns(rtype):
def check_returns(f):
def res_fun(*args, **kwargs):
result = f(*args, **kwargs)
if not isinstance(result, rtype):
print("return value %r does not match %s" % (result,rtype))
return result
return res_fun
return check_returns
Kod testujący
@returns(float)
@count_calls
def factorial(n):
if n<=1:
return n
else:
return n*factorial(n-1)
f = factorial(4)
Ćwiczenie 3: napisz dekorator o nazwie count_calls, który
liczy wywołania danej funkcji
Ćwiczenie 4: napisz dekorator o nazwie ask_exe, który
pyta przed każdym uruchomieniem danej funkcji o to czy kontunuować
Ćwiczenie 5: napisz dekorator o nazwie login_required,
który sprawdza poprawność hasła (zaszyfrowanego).
Potencjalnie przydany kod.
import getpass, hashlib
print(hashlib.md5('password').hexdigest())
PASSWORD_HASH = "5f4dcc3b5aa765d61d8327deb882cf99"
password = getpass.getpass("What's the password? ")
password_hash = hashlib.md5(password).hexdigest()
if password_hash == PASSWORD_HASH:
print "user authenticated"
else:
print "user authentication failed"
Ćwiczenie 6: napisz funkcję is_anagram(a,b), która sprawdza
czy słowo a jest anagramem słowa b
Ćwiczenie 7: napisz funkcję is_palindrome(a), która sprawdza
czy słowo (lub lista) a jest palindromem.
Ćwiczenie 8: napisz funkcję longest_palindrome(a), która zwraca długość najdłuższego podsłowa słowa a,
które jest palindromem.
Ćwiczenie 9: dla danej tablicy
w numpy policz liczbę komórek, że wartość w
nich jest większa niż wartość w 4 sąsiednich
komórkach.
Ćwiczenie 10: napisz program, który
dla danej tablicy w numpy, zawierającej "x"
(wieże) i "." (puste pola), sprawdza, czy któreś dwie wieże się atakują.
Ćwiczenie 11: napisz dekorator, który
przy każdym uruchomieniu wypisuje datę i godzinę
uruchomienia funkcji.