summaryrefslogtreecommitdiff
path: root/python/problems/functions/greatest/sl.py
blob: 467de0732da5f9c4144b42b18d979adb043a1e49 (plain)
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
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
# coding=utf-8
import server
mod = server.problems.load_language('python', 'sl')


name = 'Največji'
slug = 'Največji'


description = '''\
<p>Napišite funkcijo <code>max_val(xs)</code>, ki vrne največje število v seznamu <code>xs</code>.
<pre>
>>> max_val([5, 1, -6, -7, 2])
5
</pre></p>
'''

function = ['''\
<p>Napišite definicijo funckcije <code>max_val(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_val(xs):
    # program, ki poišče največjega v xs
</pre>''']

main_plan = ['''\
<p>Ideja: po vrsti pogledamo vse elemente in sproti hranimo največjega.</p>''',
             '''\
<ol>
<li>Začnemo s prvim elementom in si ga zapomnimo kot največjega.</li>
<li>Potem pogledamo drugi element, če je večji od največjega, ta postane največji.</li>
<li>Pogledamo tretji element, če je večji od največjega, postane največji. </li>
<li>Pogledamo četrti element, ... </li>
<li>...</li>
<li>Pogledamo zadnji element, ...
</ol>''',
             '''\
<p>Potrebovali bomo zanko!</p>
<pre>
najvecji = prvi element od xs
for x in xs:
    ce je x > najvecji:
        najvecji postane x
izpisi najvecjega
</pre>''']

return_clause = ['''\
<p>Namesto, da izpišemo rezultat, ga vračamo s stavkom <code>return</code>.</p>''']

plan = [['''\
<p>Najprej poskusi napisati program (brez funkcije), ki v <code>xs</code> poišče največji element</p>''',
         '''\
<pre>
xs = [5, 1, -6, -7, 2]
# sledi program, ki izpiše največjega v xs
</pre>'''],
        main_plan,
        ['''\
<p>Napišite funkcijo tako, da vsebuje napisani program. </p>''',
        '''\
<p>Funkcijo testirajte!</p>
<pre>
# najprej definicija funkcije
def max_val...

s1 = [5, 1, -6, -7, 2]
naj_elt = max_val(s1)
print(naj_elt)

s2 = [-5, -1, 6, 7, -2]
naj_elt = max_val(s2)
print(naj_elt)
</pre>'''],
        function,
        return_clause]

for_loop = ['''\
<p>Preglejte elemente z zanko</p>.
''',
             '''\
<pre>
for x in xs:
    print (x)
</pre>''']


if_clause = ['''\
<p>Preverite, če je trenutni element večji od največjega</p>''',
             '''\
<pre>
if x > najvecji:
    najvecji = x
</pre>''']


hint = {
    'no_def': function,

    'no_return': return_clause,

    'for_loop': for_loop,

    'if_clause': if_clause,

    'final_hint': '''\
<p>Odlično, naloga rešena! Še zanimivost: Python ima funkcijo <code>max</code> že vgrajeno:</p>
<pre>
def max_val(xs):
    return max(xs)
</pre>''',

    '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_indent': '''\
<p>Ali imaš stavek <code>return</code> znotraj zanke?
V tem primeru se lahko zgodi, da se zanka ne izteče do konca.</p>'''
}