summaryrefslogtreecommitdiff
path: root/python/problems/while_and_if/buy_five/sl.py
blob: 0b5479de3930e2ac60c0db53d4a4a85637f0940b (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
128
129
130
131
132
# coding=utf-8
import server
mod = server.problems.load_language('python', 'sl')

id = 185
name = 'Blagajna "vse po pet"'
slug = 'Blagajna "vse po pet"'


description = '''\
<p>V trgovini "vse po pet" morajo stranke vedno kupiti natanko pet artiklov. Za blagajne zato potrebujejo
programsko opremo, ki uporabnika (blagajnika) vpraša po petih cenah; ko jih le-ta vnese, program
izpiše vsoto.</p>
<pre>
Cena artikla: 2
Cena artikla: 4
Cena artikla: 1
Cena artikla: 6
Cena artikla: 3
Vsota: 16
</pre>
'''

bad_solution = ['''\
<p><b>Primer, kako NE reševati</b></h3>
<pre>
cena1 = float(input('Cena artikla: '))
cena2 = float(input('Cena artikla: '))
cena3 = float(input('Cena artikla: '))
cena4 = float(input('Cena artikla: '))
cena5 = float(input('Cena artikla: '))
vsota = cena1+cena2+cena3+cena4+cena5
print ("Vsota: " + vsota)
</pre>''',
        '''\
<p>Rešitev je slaba, saj imamo pet enakih vrstic! Ponavljanje programske kode
pa velja za slabo prakso. Uporabite zanko! </p>''']

main_plan = ['''\
<p><b>Plan:</b></p>
<pre>
1. Ponavljaj 5x:
    2. Preberi ceno.
    3. Prištej vsoti.
4. Izpiši vsoto.''']

while_clause = ['''\
<p>Kako bi nekaj <b>5x ponovil</b>?</p>''',
         '''\
<p>Zanka while ima naslednjo sintakso:</p>
<pre>
while Pogoj:
    stavek 1
    stavek 2
    ...
stavek n # stavek izven while.
</pre>''',
         '''\
<p>Stavki znotraj while (ki so zamaknjeni) se izvajajo toliko časa, dokler velja <code>Pogoj</code> v glavi stavka while.
Ko pogoj ne velja več, Python preskoči vrstice, ki so del while-a in nadaljuje s stavki, ki sledijo – v
našem primeru s stavkom n.</p>'''
        ]

reading_while =  ['''\
<p>Za <b>večkratno branje</b> želimo uporabiti zanko</p>''',

'''\
<pre>
while ____:
    cena = float(input('Cena artikla: '))
</pre>
<p>Kakšen je pogoj?</p>''',

'''\
Izmisliti si moramo pogoj, ki bo resničen 5 korakov, potem pa ne
več. Običajni trik v takih primerih je uporaba števca. ''',

'''\
Števec je spremenljivka, ki se v zanki vsakič poveča za ena - torej šteje''',

'''\
<pre>
stevec = 0
while _________:
    cena = float(input('Cena artikla: '))
    stevec += 1
</pre>
<p>Imaš zdaj morda idejo, kakšen naj bo pogoj?</p>''',

'''\
<pre>
while stevec < 5:
</pre>
''']

summation = ['''\
<p><b>Računanje vsote</b> bo najlažje sproti v zanki. <p>''',

'''\
<p>Izmisli si spremenljivko, ki bo predstavljala vsoto, jo na
začetku (pred zanko) nastavi na 0 in ji v vsakem koraku prištej trenutno ceno.
Podobno kot števec. </p>'''
]

plan = [bad_solution,
            main_plan,
            while_clause,
            reading_while,
            summation]

hint = {
    'while_clause': while_clause,

    'reading_while': reading_while,

    'summation': summation,

    'printing': ['''\
<p>Izpiši vsoto</p>''',
                 '''\
<p> V Pythonu izpisujemo s funkcijo <code>print</code><p>.''',
'''<p>Pazi, da stavek s <code>print</code> ne bo zamaknjen, saj bo v takem
primeru del while-a in se bo večkrat izpisal. </p>'''],

    'nonumber': ['''<p>Izpiši vsoto<p>'''],

    'name_error' : [mod.general_msg['error_head'],
                    mod.general_msg['general_exception'],
                    mod.general_msg['name_error'],
                    '''\
<p>Verjetno uporabljaš spremenljivko, ki nima nastavljene vrednosti. Morda v pogoju?'''],
}