On Fri, Dec 4, 2009 at 12:43 PM, MRAB <pyt...@mrabarnett.plus.com> wrote:
> Victor Subervi wrote: > >> Hi; >> I have this code: >> >> > [snip] > > As you can see in the supplied comments, when I loop through for table >> 'prescriptions', it only prints out the first element of each variable. When >> I loop through for table 'products', it prints out all of them! Why? >> >> If you're serious about killing bugs, DON'T USE BARE EXCEPTS, especially > ones which contain only "pass"! > > As for you're problem, it's not clear to me which one is behaving > correctly. You should add more print statements to tell you where it is in > the code, and then read through the output, checking the logic. Are > the values what you expect? Is it following the route through the code > that you expect? > Forgive me, but I believe I already addressed your question. There are two tables: prescriptions and products, in that order, and both with (in this case) the exact same options. For some reason, when products goes through the loops, everything comes out exactly as expected. But when prescriptions goes through, only optionsCode[0] passes (there are two) and only optionsCode[0][0] goes through when there are 7. To restate that, both optionsCode[y] and all optionsCode[y][z] get correctly processed when 'products' goes through, but only one when 'prescriptions' goes through, and the options and options tables are identical! Here's the code again. Please advise. V for table in tables: if table == 'products': optionsCode = optionsCodeProducts fromForm = prodsFromForm try: fn = getattr(options, table) fromForm = form.getfirst('%s-options' % table) fromForm = string.split(fromForm[2:-2], "', '") optionsCode = fn(table, 'specificCode', fromForm) except: if table != 'products': # We recall we must add the products table fields to all tables. optionsCode = optionsCodeProducts i = 0 j = 0 oldJ = 0 try: y = 0 while y < len(optionsCode): if table == 'prescriptions': print len(optionsCode) # prints '2' for inputName in optionsCode[y]: if table == 'prescriptions': print len(optionsCode[y]) # prints '7' print inputName # prints 'Extra-small', which is only the first inputName in optionsCode[0] if j != oldJ: i = 0 oldJ = j x = '%s-%s%d' % (table, fromForm[y], i) x = form.getfirst(x) if x is not None: ourInputNames.append('%s-%s' % (table, inputName)) i += 1 j += 1 y += 1 except: pass
-- http://mail.python.org/mailman/listinfo/python-list