ちなみにJANコードは、8桁13桁が有効として
ISBNは古い体系の10桁のものをチェックしています。
ISBNの新しい体系の13桁のものはJANコードと同じなのでJANコードの関数の方でチェックできます。
まずはJANコードの版はこんな感じです。
def check_jan_code(code):
if code.isdigit() == False :
return False
if len(code) == 8 or len(code) == 13 :
pass
else :
return False
cd = code[-1]
data = code[0:-1]
total = 0
for i in range(0,len(data)):
if i%2 ==0 :
total = total + int(data[i])
else:
total = total + int(data[i]) * 3
dig = total % 10
dig = 10 - dig
if dig == 10 :
dig = 0
if dig == int(cd) :
return True
else :
return False
そしてISBNはこんな感じです。
def check_isbn(code):
pattern = "^[0-9]{9}[0-9X]{1}$"
if re.match(pattern,code) :
pass
else :
return False
cd = code[-1]
data = code[0:-1]
total = 0
w = 10
for i in range(0,len(data)):
total = total + int(data[i]) * w
w = w - 1
dig = total % 11
dig = 11 - dig
if dig == 10 :
dig = "X"
if str(dig) == cd :
return True
else :
return False
ちなみに、うまい棒チョコレート味のJANコードは49480764です。
※JANコードチェックでCDが0の時の処理が間違っていたので修正しました(2011/9/16)
0 件のコメント:
コメントを投稿