Trouble with for loop

Paul Hankin paul.hankin at gmail.com
Tue Nov 6 07:31:54 EST 2007


On Nov 6, 10:19 am, Shriphani <shripha... at gmail.com> wrote:
> On Nov 6, 3:09 pm, Ant <ant... at gmail.com> wrote:
>
> > On Nov 6, 9:59 am, Shriphani <shripha... at gmail.com> wrote:
> > ...
>
> > > My main intention is to state that each of the variables namely a, b,
> > > c, ## can take value from 1 to 9.
> > > How do I go about this ?
>
> > It sounds like you are after something like:
>
> > for var in (a, b, c, d, e, f):
> >    assert var in [1, 2, 3, 4, 5, 6, 7, 8, 9]
>
> > but it's hard to tell without some more information from you on
> > exactly what you are trying to achieve.
>
> I want to obtain a number whose first digit "a" is divisible by 1,
> 10*b +a is divisible by 2, 10^2*c + 10b + a is divisible by 3 and so
> on.
> I hope my question is a bit clearer now.

Any time you want a bunch of variables with similar meanings, use an
list (or an array in most other languages) instead. It makes it
clearer what the relationship between the variables is, and it also
makes it much easier to extend the code (for instance, what if you
want to add another digit?)

  a + 10*b == 0 (mod 2) => a is even
  a + 10*b + ... + 10^4*e == 0 (mod 5) => a is 0 or 5

Therefore, a is 0, so only considering digits 1-9 is a mistake.

So, something like this is probably what you want...

for n in range(10 ** 5, 10 ** 6):
    digits = map(int, str(n))
    ... test digits

--
Paul Hankin





More information about the Python-list mailing list