Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.python > #39595 > unrolled thread

Re: Number validation issue

Started byMorten Engvoldsen <mortenengv@gmail.com>
First post2013-02-22 18:27 +0100
Last post2013-02-22 18:27 +0100
Articles 1 — 1 participant

Back to article view | Back to comp.lang.python

This discussion starts older than the indexed window; earlier articles aren't shown. The article labeled Started by below is the oldest one visible, not the original post.


Contents

  Re: Number validation issue Morten Engvoldsen <mortenengv@gmail.com> - 2013-02-22 18:27 +0100

#39595 — Re: Number validation issue

FromMorten Engvoldsen <mortenengv@gmail.com>
Date2013-02-22 18:27 +0100
SubjectRe: Number validation issue
Message-ID<mailman.2288.1361554059.2939.python-list@python.org>

[Multipart message — attachments visible in raw view] — view raw

Hi,
My below code is wrong :

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

it works for 9 digit number , not 11 digit number, so i have changed the
code and sending again with correct code with valid number:

def is_valid_number(checknum):
    weights = [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("123456785")

This code validate this 9 digit number "123456785" with below algorithm:

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 i am looking for solution how i can change this code to validate with
weight 1, 2, 3, 4, 5, 6, 7, 2, 3, 4, 5, 6, 7, 2, 3, 4, 5, 6, 7... from
right to left for any length of number. This code validate only 9 digit
number.

Sorry for inconvience :(

[toc] | [standalone]


Back to top | Article view | comp.lang.python


csiph-web