기타/What I Learned

[TIL] ISBN코드 활용 도서번호 검증(21.11.30)

가죽방패 2021. 11. 30. 12:24

※ ISBN 코드를 이용해 도서 번호 검증하기

- ISBN(International Standard Book Number) 코드는 각 출판사가 펴낸 도서의 국제 표준에 맞추어 붙이는 도서 고유 번호이다. ISBN 코드는 10~13자리로 구성되며 13자리 ISBN 코드의 경우 다음과 같은 형식으로 구성됨.

예시로 979(접두부)-11(국별번호)-957304(발행자번호)-3(서명식별번호)-8(체크기호) 와 같다.

 

ISBN 코드의 유효성을 검증하는 방법은 ISBN 코드 12자리 숫자에 가중치 1과 3을 번갈아 곱해 값을 더하고

가중치의 합을 10으로 나누어 나머지를 구하며 10에서 나머지를 뺀 값이 체크기호가 되며, 나머지가 0인 경우

체크기호가 0이 된다.

 

def isbn_check(isbn):
    s = 0
    
    for i in range(len(isbn)-1):
        if (i+1) % 2 == 1:				# 홀수 자리에 가중치 1을 곱함
            s = s + int(isbn[i]) * 1
        else:							# 짝수 자리는 가중치 3을 곱함
            s = s + int(isbn[i]) * 3
    print("ISBN 1~12자리의 가중치 반영 합계: %d"%s)
    
    t = s % 10							# 변수 s의 가중치 압을 10으로 나누어 나머지 값을 구함
    chk = (10 - t) % 10
    print("ISBN 1~12자리의 체크기호 값: %d"%chk)
    
    if chk == int(isbn[12]):			# 체크기호 값이 isbn[12]와 일치할 경우
        rst = 1							# rst의 값이 1로 설정됨 == 검증됨
    else:
        rst = 0
    return rst

isbn = input("ISBN 13자리(- 제외) : ")

if len(isbn) == 13:
    rst = isbn_check(isbn)
    if rst == 1:
        print("ISBN 코드 : %s는 검증되었습니다."%isbn)
    else:
        print("ISBN 코드 : %s는 검증되지 않았습니다."%isbn)
else:
    print("ISBN 코드 입력은 -를 제외하고 13자리를 입력해주세요.")