Naloge: Še malo igranja s funkcijami (nadaljevanje od prejšnjič)
- Napiši funkcijo
zaokrozena3(f), ki kot argument prejme poljubno funkcijof(x)(na primersqrtalisin), in vrne funkcijo, ki vrača isti rezultat kotf(x), zaokrožen na tri decimalke. Uporabiš lahko funkcijoround(x, n), ki zaokroži podanixnandecimalk.
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.
Napiši funkcijo
poziralka, ki prejme poljubno število argumentov, vključno s poimenovanimi argumenti ... in vrne 42.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čemopoklici(log, 16, 2)naj funkcija vrne enak rezultat, kot če bi poklicalilog(16, 2).(težja) Če se že dolgočasiš, preberi kaj o dekoratorjih v Pythonu in spremeni
zaokrozena3v dekorator (ali pa ga le uporabi - morda ga ni potrebno spreminjati).(začetek težje) Napiši funkcijo
zaokrozena(f, k), ki dela podobno reč kotzaokrozena3(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
- (veliko težja) Spremeni
zaokrozenav dekorator.