Day 11. 실습 프로젝트 2

심플디 2017.01.02 23:30 조회 수 : 13

01. 본문


01.01 모듈 테스트


#

# Method test

#


# system

for clc in range(1, 99):

    print();

print('[System] 20170102_1304_ex_module_test');

print('[System] str 메서드들의 값들을 확인해봅니다.');

print();


# def. variable

strCase1    = 'asdf';

strCase2    = 'asdfASDF';

strCase3    = 'asdfASDF123';

strCase4    = 'asdf@';


# def. function

def fInspString (str):

    # calc.

    bInsp_numeric   = str.isnumeric();

    bInsp_alpha     = str.isalpha();

    bInsp_upper     = str.isupper();

    bInsp_lower     = str.islower();


    # result

    print('[System] str 입력된 값      : ', str);

    print('[System] str.isnumeric() 값 : ', bInsp_numeric);

    print('[System] str.isalpha() 값   : ', bInsp_alpha);

    print('[System] str.isupper() 값   : ', bInsp_upper);

    print('[System] str.islower() 값   : ', bInsp_lower);

    print();

    return;


# calc. & result

fInspString(strCase1);

fInspString(strCase2);

fInspString(strCase3);

fInspString(strCase4);


Cap 2017-01-02 15-15-21-001.png




01.02. Pass word 입력받는 모듈 작성


# Example.pp313, (많이 변경했음)

#


# system

for x in range(1,99):

    print();


# def. function

def fPassword_check(pwd):


    # def.variable

    upper = False; # 기본적으로 false

    lower = False; # 기본적으로 false

    

    # Insp. 01

    if (len(pwd) <= 6) or (len(pwd) >= 12):

        print('[fPassword_check] [Insp. 01]', pwd, ', 길이가 적당하지 않습니다.');

        return False;


    # Insp. 02

    for c in pwd:

        if ((not c.isnumeric()) and (not c.isalpha())):

            print('[fPassword_check] [Insp. 02]', pwd, ', 숫자 및 영문자 외, 다른 문자가 있습니다!');

            return False;

        

    # calc.

    print('[fPassword_check] [Insp. 03, 04] : ', end='');

    for c in pwd:

        print(c, end=' ');       

        # 해당문자가 영문이면

        if c.isalpha():           

            # 아직 대문자가 발견되지 않은 경우에만

            if not upper and c.isupper():

                upper = True;

            # 아직 소문자가 발견되지 않은 경우에만

            elif not lower and c.islower():

                lower = True;

        else:

            continue;

        

    # Insp. 03

    # 대문자와 소문자가 모두 있으면 루프 탈출

    if upper and lower:

        print();

        print('[fPassword_check] [Insp. 03] 대소문자가 모두 있습니다.');

        print('[fPassword_check [Insp. 03]', pwd, ', 비밀번호로 적당합니다!');

        return True;          # for 문 탈출


    # Insp. 04

    # 대문자 혹은 소문자가 없는 경우 확인

    if ((not upper) or (not lower)):  # upper도 False고, lower도 False라면...

        print();

        print('[fPassword_check] [Insp. 04]', pwd, ', 대소문자 혼합이 필요합니다.');

        return False;

        

    return False;


if __name__ == '__main__':

    print('[System] Password의 길이는 6이상, 12이하 입니다.');

    print();

    fPassword_check('23jke');         # False, 길이오류

    print();

    fPassword_check('432rewvb53');    # False, 대문자 부재

    print();

    fPassword_check('2@3jke%');       # Flase, 기호포함

    print();

    fPassword_check('3k39QLe6o0');    # True

    print();

    fPassword_check('ASDFASDF');      # True

    print();


Cap 2017-01-02 16-14-26-070.png




01.03. 정규식을 이용한 표현


# Example.pp313

#


# system

for x in range(1,99):

    print();


# import module

import re;      # re 모듈 탑


# def. function

def fE_mail_check():

    pass;


def fPassword_check(pwd):


    # def.variable

    upper = False; # 기본적으로 false

    lower = False; # 기본적으로 false

    

    # Insp. 01 : 길이확인

    if (len(pwd) <= 6) or (len(pwd) >= 12):

        print('[fPassword_check] [Insp. 01]', pwd, ', 길이가 적당하지 않습니다.');

        return False;

    

    # Insp. 02 : 특수문자 확인

    elif re.findall('[a-zA-Z0-9]+', pwd)[0] !=pwd:

        print('[fPassword_check] [Insp. 02]', pwd, ', 숫자 및 영문자 외, 다른 문자가 있습니다!');

    

    # Insp. 04

    elif len(re.findall('[a-z]', pwd))==0 or len(re.findall('[A-Z]', pwd))==0:

        print('[fPassword_check] [Insp. 04]', pwd, ', 대소문자 혼합이 필요합니다.');

        return False;


    # Insp. 03

    else:

        print('[fPassword_check [Insp. 03]', pwd, ', 비밀번호로 적당합니다!');

        return True;          # for 문 탈출


    return False;


if __name__ == '__main__':

    print('[System] Password의 길이는 6이상, 12이하 입니다.');

    print();

    fPassword_check('23jke');         # False, 길이오류

    print();

    fPassword_check('432rewvb53');    # False, 대문자 부재

    print();

    fPassword_check('2@3jke%');       # Flase, 기호포함

    print();

    fPassword_check('3k39QLe6o0');    # True

    print();

    fPassword_check('ASDFASDF');      # True

    print();


Cap 2017-01-02 16-39-11-600.png


Reference


1. 도서


1.1 조인석, "입문부터 실무까지 한방에 끝내는 파이썬 프로그래밍 python programming", 혜지원



2. 웹사이트


2.1 이지선(서강대학교), "기초 Python 프로그래밍", http://www.edwith.org/sogang_python, edwith, 2016

2.2 "Python 문자열 ISNUMERIC()메서드", http://www.w3ii.com/ko/python/string_isnumeric.html, w3ii.com

  - 메소드 ISNUMERIC ()는 문자열이 숫자 만 구성되어 있는지 여부를 확인합니다. 이 방법은 유니 객체에 존재한다.

2.3 Triany, "[파이썬] python 문자열 함수 정리", http://simplesolace.tistory.com/entry/파이썬-python-문자열, Tistory, 2014.05.23

2.4 "Python 문자열 isalpha() 메서드", http://www.w3ii.com/ko/python/string_isalpha.html, w3ii.com

  - 메소드 ISNUMERIC ()는 문자열이 숫자 만 구성되어 있는지 여부를 확인합니다. 이 방법은 유니 객체에 존재한다.

2.5 "Python 문자열 isupper()메서드", http://www.w3ii.com/ko/python/string_isupper.html, w3ii.com

  - 메소드 isupper ()는 문자열의 모든 경우 기반 문자 (문자) 대문자 여부를 확인합니다.

2.6 "Python 문자열 islower()메서드", http://www.w3ii.com/ko/python/string_islower.html, w3ii.com

  - 메소드 islower ()는 문자열의 모든 경우 기반 문자 (문자) 소문자 여부를 확인합니다.


3. 첨부파일


3.1 Python 모듈 테스트  :  20170102_1304_ex_module_test.py

3.2 Python Password 검사모듈 :  user_password.py

3.3 정규식을 이용한 Password 검사 모듈 :  user_password_re_module.py