swcarpentry / python-novice-inflammation

Programming with Python
http://swcarpentry.github.io/python-novice-inflammation/
Other
301 stars 780 forks source link

'Testing Assertions' exercise solution is incorrect #1040

Open tobyhodges opened 1 year ago

tobyhodges commented 1 year ago

(Reported by a community member over email.)

The Testing Assertions exercise in the Defentsive Programming episode includes one assert statement that does not work as described:

assert int(value) will not raise an AssertionError but instead a ValueError when value cannot be converted to an integer.

The exercise should be updated to account for this. I suggest two possible approaches:

  1. update the solution to mention that a ValueError will be raised, and ideally explaining why the assert statement is never evaluated.
  2. update the exercise example to remove that line.

I know that the idea of replacing assertions with try...except has been the topic of multiple discussions, and @DamienIrving was working on a PR to switch the approach taken in the episode (unfortunately disrupted by the lesson infrastructure transition). I mention this because the appearance of a ValueError rather than an AssertionError from the code in this exercise seems to be a case where try...except could be less confusing for the Learner.

edbennett commented 1 year ago

Worth noting that this also asserts that if the element is numeric, that it is not in the range $(-1.0, 1.0)$. This is also not currently documented, and it's not clear why such a constraint would be being imposed.