2019年5月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 コメント:

コメントを投稿