人様に迷惑かけないためにも、validationって大事ですね~
この前、validationというものを教えてもらいました。
詳しくはこちらに載っていますが、
https://wa3.i-3-i.info/word11610.html
簡単に言うと入力値チェックのようです~
具体的な例だと、WebページのTELの所にTELじゃないものが入っていたら
エラーとして吐き出す機能ですかね?
今回も、実際に簡単なものを作ってみて、
validationについて理解を深めたいと思います~
今回はこんな感じに、入力値が数字かどうか確認する
validationプログラムを作りました~
|--validation | |--main.py | |--validation.py
# validation.py class Validation(): @staticmethod def int_ck(in_data): if type(in_data) != int: raise TypeError('入力値が整数ではありません。', in_data)
# main.py import sys from validation import Validation def validation_test(num): if num == 1: Validation.int_ck(123) elif num == 2: Validation.int_ck(456.0) elif num == 3: Validation.int_ck('123') else: raise IndexError('1~3を入力してください。') print('正常に終了しました') validation_test(int(sys.argv[1]))
昨日と同じく、再利用可能プログラムを同じディレクトリに置いてあります~
main.pyは1,2,3のどれかを引数で渡すと実行する形にしました~
早速確認してみましょう~
(Tracebackがあると見づらいので、貼り付け時に成形してます~)
$ python main.py 1 正常に終了しました $ python main.py 2 TypeError: ('入力値が整数ではありません。', 456.0) $ python main.py 3 TypeError: ('入力値が整数ではありません。', '123') $ python main.py 4 IndexError: 1~3を入力してください。
お~とりあえずちゃんとチェックされてそうです♪
でも、この場合だとどんな型になっているか知りたいですね…
validation.pyを改良して、型表示できるようにしましょう~
class Validation(): @staticmethod def int_ck(in_data): if type(in_data) != int: # ↓を改良 raise TypeError('入力値が整数ではありません。', in_data, type(in_data))
では、再び実行です~
$ python main.py 1 正常に終了しました $ python main.py 2 TypeError: ('入力値が整数ではありません。', 456.0, <class 'float'>) $ python main.py 3 TypeError: ('入力値が整数ではありません。', '123', <class 'str'>) $ python main.py 4 IndexError: 1~3を入力してください。
お~いい感じじゃないでしょうか?
昨日の勉強(再利用プログラム)もちゃんと活かせてますし、
これで受け取ったデータが数字かどうかはばっちりチェックできますね!
これをもっと発展させるならどうしましょ?
文字列チェックはすぐ作れそうですね!
フォーマットを受け取って、その通りになっているかチェック!
とかだと色々な場面で使えそうですね~
フォーマット作りで四苦八苦しそうですが~
いやぁ、勉強になりました~