Confused compare function :)
Steven D'Aprano
steve+comp.lang.python at pearwood.info
Thu Dec 6 21:55:23 EST 2012
On Thu, 06 Dec 2012 13:51:29 +0000, Neil Cerutti wrote:
> On 2012-12-06, Steven D'Aprano
> <steve+comp.lang.python at pearwood.info> wrote:
>> total = 0
>> for s in list_of_strings:
>> try:
>> total += int(s)
>> except ValueError:
>> pass # Not a number, ignore it.
>
> If it's internal data, perhaps. Of course, that would mean I had the
> option of *not* creating that stupid list_of_strings.
Not necessarily, it depends on the application.
If you have a spreadsheet, and create a formula =SUM(A1:A50) the expected
behaviour is to just skip anything that is not a valid number, not raise
an error. Sometimes correct application-level behaviour is to just ignore
input that it doesn't care about.
One of the things that I used to despise with a passion about MYOB is
that if you clicked on the window outside of a button or field, it would
scream at you "ERROR ERROR ERROR - that was not a button or field!!!!"
That is to say, it would beep. I mean, *who fscking cares* that the user
clicks in the window background? It's a harmless tick, like tapping your
desk, just ignore it.
As a general rule, library functions should be strict about reporting
errors, while applications may be more forgiving about errors that they
don't care about. The "don't care about" part is important though -- your
word processor shouldn't care about low level networking errors, but it
should care if it can't save a file to a network drive.
--
Steven
More information about the Python-list
mailing list