開発環境
- 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 コメント:
コメントを投稿