[CentralOH] Python Puzzler -- The little max bug

jep200404 at columbus.rr.com jep200404 at columbus.rr.com
Wed Mar 11 02:04:16 CET 2015

On Tue, 10 Mar 2015 19:38:48 -0400, Eric Floehr <eric at intellovations.com> wrote:

> What was the bug, and why was MAXT the only formula type affected?

'MAXT' was the first type for each hour,
so when formula_type was 'MAXT', 
try: hourdict = hoursdict[hour] failed with an KeyError, 
so the except section runs. hourdict and hoursdict[hour] 
are initialized to (different) empty dictionaries and 
hoursdict[hour] does not refer to hourdict, 
so changes to hourdict are not saved in hoursdict. 
For subsequent lines of an hour, the hourdict = hoursdict[hour]
succeeds in the try: section, because of the hoursdict[hour] = {}
from the previous failure, so changes to hourdict are 
also changes to hoursdict[hour]. 
'MAXT' was the only formula type affected because it was the 
first type for each hour.

Change the except section to:

    except KeyError:
        hourdict = {}
        hoursdict[hour] = hourdict


    except KeyError:
        hoursdict[hour] = {}
        hourdict = hoursdict[hour]

Better yet, change the try/except stuff to:

    if hour not in hoursdict:
        hoursdict[hour] = {}
    hourdict = hoursdict[hour]

Need some better variable names. 

More information about the CentralOH mailing list