summaryrefslogtreecommitdiff
path: root/python/problems/introduction/fahrenheit_to_celsius/sl.py
blob: 1c73ccef18089d18a76dc4baee7dffa71406f408 (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
# coding=utf-8

id = 180
name = 'Pretvarjanje iz Fahrenheitov v Celzije'
slug = 'Pretvarjanje iz Fahrenheitov v Celzije'

description = '''\
<p>Napiši program, ki mu uporabnik vpiše temperaturo v Fahrenheitovih
stopinjah, program pa jo izpiše v Celzijevih. Med temperaturama pretvarjamo po
formuli C = 5/9 (F – 32).</p>'''

general_exception = {
    'error_head' : '''\
<p>Napaka:</p>
<pre>
[%=message%]
</pre>
''',

    'general': '''
    <p>Pri razumevanju napake sta pomembni dve vrstici. V predzadnji vrstici je napisana lokacija
    napake (line ...), v zadnji vrstici pa izvemo za kakšno napako gre.</p>
    ''',

    'name_error' : '''
    <p>Napaka tipa NameError označuje, da uporabljate nedefinirano vrednost:</p>
    <ul>
    <li>Če je v napaki omenjena spremenljivka, potem vrednost te spremenljivke ni določena,
    a vi jo poskušate uporabiti.</li>
    <li>Če napaka omenja ime funkcije, potem ste verjetno pozabili uvoziti ustrezni modul.
    Npr. če gre za matematično funkcijo, je potrebno uvoziti modul <code>math</code>:
    <pre>
    from math import *
    </pre>
    ''',

    'type_error': '''
    <p>TypeError napaka pomeni, da želite izvesti operacijo na nedovoljenih tipih.
    Npr., če želite sešteti niz in število ali klicati funkcijo, čeprav tisto ni funkcija, itd. .</p>
    ''',

    'indentation_error': '''
    <p> Pomeni, da imate napačno število presledkov na začetku vrstice. Poskrbite, da so vse vrstice pravilno
poravnane. </p>'''

}

hint = {
    'plan': '''\
<p>Program izvedemo v treh korakih:</p>
<ol>
  <li>Vprašanje za temperaturo v Fahrenheitih (F = ?).</li>
  <li>Izračun temperature v Celzijih: C = 5/9 (F – 32)</li>
  <li>Izpis temperature v Celzijih (izpiši C).</li>
</ol>''',

    'no_input_call': '''\
<p>Uporabnika lahko nekaj vprašamo s funkcijo <code>input</code>. Funkcija
<code>input</code> sprejme kot argument niz (<em>angl.</em> string), ki se
prikaže uporabniku kot vprašanje in vrne niz, ki ga je uporabnik napisal. Nize
zapisujemo v narekovaje (lahko so enojni ali dvojni). Npr., naslednja
vrstica:</p>
<pre>
ime = input("Kako ti je ime?")
</pre>
<p>pokliče funkcijo <code>input</code>, ki povpraša uporabnika po imenu in si
shrani uporabnikov odgovor v spremenljivko <code>ime</code>.</p>''',

    
    'expressions_python': '''
<p>Računanje: če v Pythonu napišemo izraz, se bo ta izračunal. Npr., če napišemo</p>
<pre>
3 + 6
<pre>
bo Python seštel vrednosti 3 in 6 in ... rezultat pozabil. Kadar pa želimo 
rezultat shraniti, za to uporabimo <em>prireditveni stavek</em>, kjer na levo 
napišemo ime spremenljivke, na desno pa izraz:</p>
<pre>
c = 2 * a * (3 + b)
</pre>
<p>Kot vidite, izraz lahko uporablja tudi spremenljivke. </p>''',

    'printing': '''
<p> V Pythonu izpisujemo s funkcijo <code>print</code>. Če želimo izpisati več elementov,
jih ločimo z vejico.  Recimo, da imamo spremenljivko <code>ime</code>, 
ki vsebuje naše ime, potem lahko napišemo:
<pre>
print("Ime mi je", ime, ".")
</pre>''',

    'name_error' : [general_exception['error_head'], general_exception['general'],
    general_exception['name_error'], '''
    <p>Verjetno uporabljate spremenljivko, ki nima vrednosti. Ali v izrazu za izračun
     uporabljate napačno spremenljivko? Ali pri izpisu morda poskušate
     izpisati napačno spremenljivko?</p>'''],

    'unsupported_operand' : [general_exception['error_head'], general_exception['general'],
    general_exception['type_error'], '''
<p>Verjetni razlog: funkcija <code>input</code> vrača vrednost tipa niz,
ki jo moramo najprej pretvoriti v tip <code>float</code>, če želimo z njo računati:</p>
<pre>
v = float(input(" ...
</pre>
<p>Zakaj je tako, boste razumeli kasneje, zaenkrat je dovolj, da to poznate.</p>
<p>Na primeru pretvarjanja temperatur:</p>
<pre>
fniz = input("Temperatura [F]: ")
f = float(fniz)
</pre>
<p>ali krajše, združeno v eno vrstico:</p>
<pre>
f = float(input("Temperatura [F]: "))
</pre>
<p>Funkcijo <code>float</code> lahko kličemo le, če je v nizu zapisano število,
npr. "10". Če imamo v nizu tudi kakšno črko, bo Python javil napako.</p>'''],


    'not_callable' : [general_exception['error_head'], general_exception['general'],
    general_exception['type_error'], '''
<p>V programu poskušate uporabiti število kot funkcijo, a to ne gre.
Verjetni razlog: Ali ste v izrazu pozabili na znak *. Pri pretvorbi temperatur bi namesto:</p>
<pre>
C = 5/9(F – 32)
</pre>
<p>morali napisati: </p>
<pre>
C = 5/9 * (F – 32).
</pre>
<p> Python ne zna izpuščati znaka za množenje, kot to delamo pri matematiki.</p> '''],

}