開発環境
- macOS Mojave - Apple (OS)
- Emacs (Text Editor)
- Windows 10 Pro (OS)
- Visual Studio Code (Text Editor)
- Python 3.7 (プログラミング言語)
退屈なことはPythonにやらせよう ―ノンプログラマーにもできる自動化処理プログラミング (Al Sweigart(著)、相川 愛三(翻訳)、オライリージャパン)の第Ⅱ部(処理の自動化)、7章(正規表現によるパターンマッチング)、7.18(演習プロジェクト)、7.18.1(強いパスワードの検出)の解答を求めてみる。
コード
Python 3
#!/usr/bin/env python3 from unittest import TestCase, main import re class MyTestCase(TestCase): def setUp(self): pass def tearDown(self): pass def test_password_strong(self): for o in ['a234567A', 'aA345678', '1a3456A8', 'abcdeF12', '12345678aA']: self.assertTrue(is_strong_password(o)) def test_password_weak(self): for o in ['12345678', 'ab345678', '12345aA', 'abcdABCD']: self.assertFalse(is_strong_password(o)) def is_strong_password(password): reg1 = re.compile('[a-z]') reg2 = re.compile('[A-Z]') reg3 = re.compile('[0-9]') if len(password) >= 8 and \ reg1.search(password) and \ reg2.search(password) and \ reg3.search(password): return True return False if __name__ == '__main__': main()
入出力結果(cmd(コマンドプロンプト)、Terminal、Jupyter(IPython))
C:\Users\...>py sample1.py -v test_password_strong (__main__.MyTestCase) ... ok test_password_weak (__main__.MyTestCase) ... ok ---------------------------------------------------------------------- Ran 2 tests in 0.000s OK C:\Users\...>
0 コメント:
コメントを投稿