1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
|
# coding=utf-8
import server
mod = server.problems.load_language('python', 'sl')
name = 'Največji absolutist'
slug = 'Največji absolutist'
description = '''\
<p>Napiši funkcijo <code>max_abs(xs)</code>, ki vrne največje število po
absolutni vrednosti v seznamu <code>xs</code>.</p>
<pre>
>>> max_abs([5, 1, -6, -7, 2])
-7
</pre>
'''
function = ['''\
<p>Napiši definicijo funkcije <code>max_abs(xs)</code>.</p>''',
'''\
<p>Definicijo funkcije začnemo z <code>def</code>, temu sledi ime, potem oklepaji,
v katerih naštejemo argumente funkcije, nato zaklepaj in na koncu dvopičje</p>''',
'''\
<pre>
def max_abs(xs):
# poišči največje absolutno število v xs
s = [5, 1, -6, -7, 2]
print (max_abs(s))
</pre>''']
main_plan = ['''\
<p>Plan: po vrsti pogledamo vse elemente in sproti hranimo največjega
(glede na absolutno vrednost).</p>''',
'''\
<pre>
najvecji = prvi element od xs
for x in xs:
če je x večji od najvecji po absolutni vrednosti:
najvecji postane x
vrni najvecji
</pre>''']
return_clause = ['''\
<p>Namesto, da izpišemo rezultat, ga vračamo s stavkom <code>return</code>.</p>''']
plan = [function,
main_plan,
return_clause]
for_loop = ['''\
<p>Preglej elemente z zanko</p>.
''',
'''\
<pre>
for x in xs:
</pre>''']
if_clause = ['''\
<p>Preveri, če je trenutni element večji od največjega (po absolutni vrednosti)</p>''',
'''\
<pre>
if abs(x) > abs(najvecji):
najvecji = x
</pre>''']
hint = {
'no_def': function,
'no_return': return_clause,
'for_loop': for_loop,
'if_clause': if_clause,
'not_int': '''\
<p>Funkcija ne vrača števila</p>''',
'return_first': '''\
<p>Funkcija vrača prvi element v seznamu''',
'return_last': '''\
<p>Funkcija vrača zadnji element v seznamu.''',
'return_greatest': '''\
<p>Funkcija vrača največji pozitivni element v seznamu (ne pa največji po absolutni vrednosti).''',
'return_positive': '''\
<p>Funkcija napačno vrača absolutno vrednost največjega števila.''',
'return_indent': '''\
<p>Ali imate stavek <code>return</code> znotraj zanke?
V tem primeru se lahko zgodi, da se zanka ne izteče do konca.</p>''',
'final_hint': '''\
<p>Odlično, naloga rešena! Še zanimivost:
Tudi to nalogo lahko rešimo s funkcijo <code>max</code>:</p>
<pre>
def max_abs(xs):
return max(xs, key = abs(x))
</pre>''',
}
|