Number validation issue

Morten Engvoldsen mortenengv at gmail.com
Fri Feb 22 17:40:35 CET 2013


Hi,
Just to clear the confusion: i am talking about below part of my code:

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

for which i am looking for solution that it should validate the 'n' length
of number with weight ...............4,3,2,7,6, 5, 4, 3, 2, 7, 6, 5, 4,
3,2, 1  in this format from left to right.

Thanks in advance again..

On Fri, Feb 22, 2013 at 5:32 PM, Morten Engvoldsen <mortenengv at gmail.com>wrote:

> Hi,
> Thanks for your reply.
>
> 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 <alec.taylor6 at gmail.com>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 <alec.taylor6 at gmail.com>
>> 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 <
>> mortenengv at gmail.com> 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
>> >>
>>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-list/attachments/20130222/95a7dee8/attachment.html>


More information about the Python-list mailing list