Hi, Thanks for below code: After this code: isbn = isbn[:-1] if len(isbn) != 10: return False
Add: if isbn[4:6] == "00": isbn = isbn[6:] It is working exactly how it should :) I didn't even change that part . The zip function automatically truncates to the length of the shorter input sequence. Thanks a lot again :) Have a nice day.. On Tue, Feb 19, 2013 at 11:59 PM, Morten Engvoldsen <mortene...@gmail.com>wrote: > Hi Team, > Thanks for the code. > I have altered the code with below code, it is able to validate the > number now, > > def calc_checkdigit(isbn): > isbn = isbn.replace(".", "") > check_digit = int(isbn[-1]) > isbn = isbn[:-1] > if len(isbn) != 10: > return False > weights = [5, 4, 3, 2, 7, 6, 5, 4, 3, 2] > result = sum(w * (int(x)) for w, x in zip(weights, isbn)) > remainder = result % 11 > if remainder == 0: > check = 0 > else: > check = 11 - remainder > return check == check_digit > > calc_checkdigit(""8601.11.**17947"") > > > But can you tell me how could i implement below > > "If digits 5 and 6 of the account number are zeros, the check digit is > calculated on the 7, 8, 9 and 10th digit of the account number." > > which means if account number is "8601.00.**17947" then check digit is > calculate as > > result = (1*5) + (7*4)+ (9*3)+(4*2) > > remainder = result % 11 > > check_digit = 11 - remainder > > Can you tell me how can i implement this ? > > > > > > >
-- http://mail.python.org/mailman/listinfo/python-list