[Python-ideas] (no subject)

victor rajewski askvictor at gmail.com
Mon Nov 28 23:58:05 EST 2016


I teach a computing subject to high school students using Python as our
primary language. One thing that often causes confusion at the start is
error messages/exceptions. I think it would lower entry point quite a bit
by making error messages more readable to novices. Recent research found
reduced frequency of overall errors, errors per student, and repeated
errors when error messages were enhanced [1].

This could be implemented by a command-line switch when running python, or
a different python executable (along the lines of pythonw.exe vs
python.exe) such as python-easy. A simpler error message might get rid of
excess information which can confuse the novice (such info might be dumped
to a file to allow more advanced users to debug), provide a brief
description of what the error might mean, and/or how you might fix it. So a
SyntaxError might tell the user that they've probably forgotten a :, and a
NameError might say that the item has been defined yet, or they've made a
typo. A couple of examples follow:

Traceback (most recent call last):

 File "foo.py", line 2, in <module>

   l[10]=14

IndexError: list assignment index out of range

A better message might be:

You tried to use l[10] when l is only 4 elements long. You can add items to
l using l.append(value), or check your index value to make sure that's
really the position you wanted to access.

Traceback (most recent call last):

 File "foo.py", line 2, in <module>

   while name != "quit" and reponse != "quit":

NameError: name 'reponse' is not defined

A better message might be:

You're trying to use the value of 'reponse', but that variable hasn't got a
value yet. You can give it a value earlier in the code, or it could be a
typo. You have a variable called 'response' - is that the one you meant?

Traceback (most recent call last):

 File "foo.py", line 2, in <module>

   print(length(l))

NameError: name 'length' is not defined

A better message might be:

Python doesn't recognise the function "length". Did you mean len?'

 File "foo.py", line 2

   for i in l

            ^

SyntaxError: invalid syntax

A better message might be:

You have a for loop without a : (colon). Try adding a colon at the end of
the line.


Any thoughts?

[1]: http://researchrepository.ucd.ie/handle/10197/7583
-- 

Victor Rajewski
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-ideas/attachments/20161129/a974bc03/attachment.html>


More information about the Python-ideas mailing list