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


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

Re: Number validation issue

Started byMorten Engvoldsen <mortenengv@gmail.com>
First post2013-02-22 19:27 +0100
Last post2013-02-22 19: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 19:27 +0100

#39603 — Re: Number validation issue

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

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

Hi,
Just to make it more clear: I am looking for how to generate the weight in :
1, 2, 3, 4, 5, 6, 7, 2, 3, 4, 5, 6, 7, 2, 3, 4, 5, 6, 7..  format for any
length of number instead of

weights = [5, 4, 3, 2, 7, 6, 5, 4, 3, 2, 1]

only for fixed digit.

My below code can check only for 9 digit, so if we provide a number of more
than 9 digit, it is not able to check that number. Hope, this makes clear
what i am looking for...


On Fri, Feb 22, 2013 at 6:27 PM, Morten Engvoldsen <mortenengv@gmail.com>wrote:

> 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