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