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 <mortene...@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 :( > > >
-- http://mail.python.org/mailman/listinfo/python-list