summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--python/problems/introduction/fahrenheit_to_celsius/common.py17
-rw-r--r--python/problems/introduction/fahrenheit_to_celsius/sl.py27
2 files changed, 28 insertions, 16 deletions
diff --git a/python/problems/introduction/fahrenheit_to_celsius/common.py b/python/problems/introduction/fahrenheit_to_celsius/common.py
index 076d322..8362260 100644
--- a/python/problems/introduction/fahrenheit_to_celsius/common.py
+++ b/python/problems/introduction/fahrenheit_to_celsius/common.py
@@ -17,6 +17,13 @@ print("Temperatura je", c, "C")
hint_type = {
'plan': Hint('plan'),
'no_input_call': Hint('no_input_call'),
+ 'expressions_python': Hint('expressions_python'),
+ 'printing': Hint('printing'),
+ 'name_error': HintSequence('name_error', 4),
+ 'unsupported_operand': HintSequence('unsupported_operand', 4),
+ 'not_callable': HintSequence('not_callable', 4),
+ 'syntax_error': HintSequence('syntax_error', 4),
+ 'indentation_error': HintSequence('indentation_error', 3),
}
def test(python, code):
@@ -55,15 +62,15 @@ def hint(python, code):
# have an exception!
if exc:
if 'NameError' in exc:
- return [{'id':'name_error'}]
+ return [{'id':'name_error', 'args': {'message': exc}}]
if 'not callable' in exc:
- return [{'id':'not_callable'}]
+ return [{'id':'not_callable', 'args': {'message': exc}}]
if 'unsupported operand' in exc:
- return [{'id':'unsupported_operand'}]
+ return [{'id':'unsupported_operand', 'args': {'message': exc}}]
if 'SyntaxError' in exc:
- return [{'id':'syntax_error'}]
+ return [{'id':'syntax_error', 'args': {'message': exc}}]
if 'IndentationError' in exc:
- return [{'id':'indentation_error'}]
+ return [{'id':'indentation_error', 'args': {'message': exc}}]
# the trick is to decide when to show the plan and when the first hint.
diff --git a/python/problems/introduction/fahrenheit_to_celsius/sl.py b/python/problems/introduction/fahrenheit_to_celsius/sl.py
index d5cef06..350cd62 100644
--- a/python/problems/introduction/fahrenheit_to_celsius/sl.py
+++ b/python/problems/introduction/fahrenheit_to_celsius/sl.py
@@ -10,7 +10,12 @@ 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>',
+ 'error_head' : '''\
+<p>Napaka:</p>
+<pre>
+[%=message%]
+</pre>
+''',
'general': '''
<p>Pri razumevanju napake sta pomembni dve vrstici. V drugi vrstici je specificirana lokacija
@@ -38,21 +43,21 @@ general_exception = {
<p>Napaka v sintaksi programa. Napisali ste nekaj, kar Python ne zna prebrati.</p> ''',
'indentation_error': '''
- <p> Pomeni, da imate napačno število presledkov na začetku vrstice. Poskrbite, da so vse vrstice pravilno
+ <p>Pomeni, da imate napačno število presledkov na začetku vrstice. Poskrbite, da so vse vrstice pravilno
poravnane. </p>'''
}
hint = {
- 'plan': ['''\
+ '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>'''],
+</ol>''',
- 'no_input_call': ['''\
+ '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
@@ -62,10 +67,10 @@ vrstica:</p>
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>'''],
+shrani uporabnikov odgovor v spremenljivko <code>ime</code>.</p>''',
- 'expressions_python': ['''
+ 'expressions_python': '''
<p>Računanje: če v Pythonu napišemo izraz, se bo ta izračunal. Npr., če napišemo</p>
<pre>
3 + 6
@@ -76,15 +81,15 @@ 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>'''],
+<p>Kot vidite, izraz lahko uporablja tudi spremenljivke. </p>''',
- 'printing': ['''
+ 'printing': '''
<p> V Pythonu izpisujemo s funkcijo <code>print. Č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>'''],
+</pre>''',
'name_error' : [general_exception['error_head'], general_exception['general'],
general_exception['name_error'], '''
@@ -110,7 +115,7 @@ f = float(fniz)
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> '''],
+npr. "10". Če imamo v nizu tudi kakšno črko, bo Python javil napako.</p>'''],
'not_callable' : [general_exception['error_head'], general_exception['general'],