# Re: Number validation issue

Discussion in 'Python' started by Morten Engvoldsen, Feb 22, 2013.

1. ### Morten EngvoldsenGuest

Hi,

Here in your code i think you didn't multiply the given number with the
weight i have mentioned. The each digit of the given number should
multiply with weight ...............4,3,2,7,6, 5, 4, 3, 2, 7, 6, 5, 4, 3,2,
1 in this format. That is in detail:

To verify the number use the following weights from right to left:
1, 2, 3, 4, 5, 6, 7, 2, 3, 4, 5, 6, 7, 2, 3, 4, 5, 6, 7...
Multiply each digit by its corresponding weight. Add the results together.
For the number to be correct the
total must be divisible by 11.
Field with control digit 1 2 3 4 5 6 7 8 5
Weight 3 2 7 6 5 4 3 2 1
Produce +3 +4 +21 +24 +25 +24 +21 +16 +5 =143
The sum must be divisible by 11 (143 divided by 11 leaves a remainder of 0)..

So my code has validated only the length of 11 digit. So i am looking for
'n' length of number should be validated with weight
................4,3,2,7,6, 5, 4, 3, 2, 7, 6, 5, 4, 3,2, 1 from left to
right..

Thanks again ...

On Fri, Feb 22, 2013 at 4:33 PM, Alec Taylor <> wrote:

> Whoops, my mistake:
>
> In [5]: [not len(x) >= 2 and len(x)<=25 for x in [str(y) for y in
> xrange(30)]]
> Out [5]: [True]*10, [False]*20
>
> But still, I'm guessing that's not the result you were looking forâ€¦
>
> On Sat, Feb 23, 2013 at 2:30 AM, Alec Taylor <>
> wrote:
> > Out[1]: '0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
> > 24 25 26 27 28 29'
> >
> > In [2]: [not len(x) >= 2 and len(x)<=25 for x in _]
> > Out[2]: [True]*79 # shorthand to prevent spam
> >
> >
> > I trust you can see the error now!
> >
> > On Sat, Feb 23, 2013 at 2:09 AM, Morten Engvoldsen <>

> wrote:
> >> Hi ,
> >> I have wrote the below code to validate a number using modulus 10 and

> 11:
> >>
> >> def is_valid_number(checknum, mod):
> >> if mod == 10:
> >> if not len(checknum) >= 2 and len(checknum) <=25:
> >> return False
> >> number = tuple(int(i) for i in reversed(str(checknum)) )
> >> return (sum(int(num) * 2 for num in number[1::2]) % 10) ==0
> >> elif mod == 11:
> >> if not len(checknum)!= 11:
> >> return False
> >> weights = [5, 4, 3, 2, 7, 6, 5, 4, 3, 2, 1]
> >> return (sum(w * int(x) for w, x in zip(weights, checknum)) %

> 11) ==
> >> 0
> >>
> >> is_valid_number("12345678217", 10)
> >>
> >> The above code is able to validate 25 length number for modulus 10 ,

> but for
> >> modulus 11 i have done the validation only for 11 digit, Since for

> modulus
> >> 11 the weight should be in
> >> .............4,3,2,7,6, 5, 4, 3, 2, 7, 6, 5, 4, 3, 2, 1 in this format.
> >>
> >> Could you please let me know how can i validate the 25 length number for
> >> modulus 11 with weight ...............4,3,2,7,6, 5, 4, 3, 2, 7, 6, 5,

> 4, 3,
> >> 2, 1 in this format.
> >>
> >> Regards,
> >> Morten
> >>
> >>
> >>
> >> --
> >> http://mail.python.org/mailman/listinfo/python-list
> >>

>

Morten Engvoldsen, Feb 22, 2013