1. Napiši funkcijo zaokrozena3(f), ki kot argument prejme poljubno funkcijo f(x) (na primer sqrt ali sin), in vrne funkcijo, ki vrača isti rezultat kot f(x), zaokrožen na tri decimalke. Uporabiš lahko funkcijo round(x, n), ki zaokroži podani x na n decimalk.

Podobno kot v prejšnji nalogi boš definiral funkcijo znotraj funkcije. "Notranja" funkcija bo poklicala f in njen rezultat zaokrožila na tri decimalke.

Klic

tabeliraj(range(1, 11), [zaokrozena3(sqrt)])

mora izpisati

x    krneki
1    1.0
2    1.414
3    1.732
4    2.0
5    2.236
6    2.449
7    2.646
8    2.828
9    3.0
10   3.162

Ignoriraj prvo vrstico, imena, ki bodo pač ... kr neki.

  1. Napiši funkcijo poziralka, ki prejme poljubno število argumentov, vključno s poimenovanimi argumenti ... in vrne 42.

  2. Napiši funkcijo poklici(f, ...), ki prejme funkcijo in poljubno število poljubnih argumentov. Funkcija naj pokliče to funkcijo s temi argumenti in vrne njen rezultat. Če torej pokličemo poklici(log, 16, 2) naj funkcija vrne enak rezultat, kot če bi poklicali log(16, 2).

  3. (težja) Če se že dolgočasiš, preberi kaj o dekoratorjih v Pythonu in spremeni zaokrozena3 v dekorator (ali pa ga le uporabi - morda ga ni potrebno spreminjati).

  4. (začetek težje) Napiši funkcijo zaokrozena(f, k), ki dela podobno reč kot zaokrozena3(f), vendar povemo, na koliko decimalk naj zaokroža.

Poskusi

tabeliraj(range(1, 11), [zaokrozena(sqrt, 1), zaokrozena(sqrt, 5)])

naj izpiše

x    krneki   krneki
1    1.0      1.0
2    1.4      1.41421
3    1.7      1.73205
4    2.0      2.0
5    2.2      2.23607
6    2.4      2.44949
7    2.6      2.64575
8    2.8      2.82843
9    3.0      3.0
10   3.2      3.16228
  1. (veliko težja) Spremeni zaokrozena v dekorator.
Zadnja sprememba: ponedeljek, 4. april 2016, 22.40