[Python]ISBN10をISBN13に変換したりとか。

久々にブログを更新。

ISBNをごにょごにょする事が多かったので、Pythonで作ったのが昨今。それを再度書いた。

概要

ひとまず実装したのは下記の通り。

  • ISBN10のチェック関数(check10)
  • ISBN13のチェック関数(check13)
  • モジュラス11ウェイト10~2関数(modulus11weight10to2)
  • モジュラス11ウェイト3関数(modulus11weight3)
  • ISBN10をISBN13に変換する関数(encode10to13)
  • ISBN13をISBN10に変換する関数(encode13to10)

改善点

  • モジュラス11ウェイト10~2関数、モジュラス11ウェイト3関数を別のスクリプトファイルに分けたほうが良さそう。
  • エラーハンドリングがなぁなぁな作りになってる。
    • 独自のErrorExceptionを作り、送出するのがよさそう。

実装上の問題点と個人的な経緯

  • 以前作った際には、wikipediaを参考に、「ハハーン、アウトプットはこうなればいいのね」という軽い気持ちで作ってしまった。(要件満たしてるのでよいのでだけど...根本の考え方がおかしい!)
    • 今回は仕様を再確認していたところ、「チェックデジットはモジュラス10ウェイト10~2、モジュラス11ウェイト3を使用」と明記されていることに気づく。
    • 結果、モジュラス11ウェイト10~2関数(modulus11weight10to2)とモジュラス11ウェイト3関数(modulus11weight3)を独立して再実装する。

つまり一言で表すと、「仕様の確認漏れ」!反省します。