I'm trying to change this python 2 class to make it works in python 3 But unfortunatly i'm stuck with comprehension list
Here is the original class:
class GTIN(object):
def __init__(self, barcode=''):
self.barcode = barcode
def __checkDigit(self, digits):
total = sum(digits) + sum(map(lambda d: d*2, digits[-1::-2]))
return (10 - (total % 10)) % 10
def validateCheckDigit(self, barcode=''):
barcode = (barcode if barcode else self.barcode)
if len(barcode) in (8,12,13,14) and barcode.isdigit():
digits = map(int, barcode)
checkDigit = self.__checkDigit( digits[0:-1] )
return checkDigit == digits[-1]
return False
def addCheckDigit(self, barcode=''):
barcode = (barcode if barcode else self.barcode)
if len(barcode) in (7,11,12,13) and barcode.isdigit():
digits = map(int, barcode)
return barcode + str(self.__checkDigit(digits))
return ''
Here is where am I with my noob skill
class GTIN(object):
def __init__(self, barcode=''):
self.barcode = barcode
def __checkDigit(self, digits):
#total = sum(digits) + sum(map(lambda d: d*2, digits[-1::-2]))
total = sum(digits) + sum([d*2 for d in digits[-1::-2]])
return (10 - (total % 10)) % 10
def validateCheckDigit(self, barcode=''):
barcode = (barcode if barcode else self.barcode)
if len(barcode) in (8,12,13,14) and barcode.isdigit():
#digits = map(int, barcode)
digits = (int(s) for s in barcode)
checkDigit = self.__checkDigit( digits[0:-1] )
return checkDigit == digits[-1]
return False
def addCheckDigit(self, barcode=''):
barcode = (barcode if barcode else self.barcode)
if len(barcode) in (7,11,12,13) and barcode.isdigit():
#digits = map(int, barcode)
digits = (int(s) for s in barcode)
return barcode + str(self.__checkDigit(digits))
return ''
I changed all map fonction by comprehension list but now i'm stuck with this error
TypeError: 'generator' object is not subscriptable