goodthings4me.tistory.com
파이썬 기초 연습으로 회원가입 시 아이디와 비밀번호를 생성하고 비밀번호를 변경하는 기능을 만들어보았다. 텍스트 기반으로 터미널에서 수행되며, 아이디와 비밀번호 생성 시 파이썬 정규표현식으로 유효성을 체크하는 기능도 포함했다.
회원 아이디 & 비밀번호 생성, 변경, 그리고 유효성 체크까지 구현
설명 목차
- 프로그램 메인(시작)
- 아이디 및 비밀번호 생성
- 아이디 및 비밀번호 유효성 체크(정규표현식 활용)
- 비밀번호 변경
[프로그램 시작]
def main():
regist_user = {'haha':'gkgkgh!!11'}
sw = True
while sw:
print('-----------------------------')
print('1. 회원 아이디 생성')
print('2. 비밀번호 변경')
print('3. 전체 회원 아이디 목록 보기')
print('4. 종료')
print('-----------------------------\n')
select_no = int(input('번호 선택(1~4): '))
if select_no == 1:
id_result = make_id(regist_user)
if id_result:
regist_user[id_result[0]] = id_result[1]
print(regist_user)
if select_no == 2:
uid = str(input('회원 아이디: '))
if uid in regist_user:
print(f'{uid} / {regist_user[uid]}')
n_pwd = edit_password(uid, regist_user[uid])
regist_user[uid] = n_pwd
print('비밀번호 변경 완료!\n')
else:
print('등록된 아이디가 아닙니다.\n')
continue
if select_no == 3:
for k, v in regist_user.items():
print(f'id: {k} / pw: {v}')
print()
if select_no == 4:
sw = False
main()
- 프로그램 메뉴 표시 반복을 위해 while 문을 사용했으며, 각 번호 입력 시 개별적인 함수를 호출해서 수행되도록 했다.
- 1번은 회원 아이디를 생성하는 함수를 호출하고 결과(리스트)를 받아 회원관리 딕셔너리 변수 regist_user에 저장한다. (비밀번호 생성은 아이디 생성하는 함수에서 같이 수행함)
- 2번은 비밀번호 변경을 위해 회원관리 딕셔너리에서 아이디를 검색하고, 있으면 비밀번호 변경 함수를 호출(아이디와 기존 비밀번호를 인자로 전달) 한 후 결과를 받아 저장한다.
- 3번은 등록된 회원 아이디 목록을 보여주고,
- 4번은 프로그램을 종료한다.
[아이디 및 비밀번호 생성]
def make_id(regist_user):
regist_id = []
while True:
uid = str(input('회원 아이디 입력: '))
if uid in regist_user:
print('이미 등록된 id입니다.')
ex = input('메인 화면으로 이동하시겠습니까? (y/n): ')
if ex == 'y' or ex == 'Y':
return False
else:
continue
else:
res_id = chk_id(uid)
if not res_id:
continue
else:
regist_id.append(uid)
break
# print(regist_id)
while True:
pwd = str(input('비밀번호 입력: '))
res_pwd = chk_password(pwd)
if not res_pwd:
continue
else:
regist_id.append(pwd)
break
# print(regist_id)
return regist_id
- 신규 회원 아이디를 입력받고, 아이디가 이미 등록되어 있으면 메인화면으로 가던지 다시 아이디를 입력하던지 선택
- 입력받은 아이디의 유효성 체크 함수 호출 후 결과를 받아 None이면 회원 아이디를 다시 입력하고, None이 아니면 regist_id 리스트에 저장하고 다음 단계인 비밀번호 생성 while 문으로 이동
- 비밀번호를 입력하면 비밀번호 유효성 체크 함수를 호출하여 결과를 받고, None이면 다시 입력하고, None이 아니면 regist_id 리스트에 저장하고 while 문 종료
- 결과 값인 regist_id 리스트를 리턴
[아이디 및 비밀번호 유효성 체크(정규표현식 활용)]
import re
def chk_id(id):
result = True
reg = r'^[A-Za-z0-9_]{4,20}$'
if not re.search(reg, id):
print('아이디 생성 기준에 부적당합니다!')
result = False
return result
def chk_password(pwd):
result = True
reg = r'^(?=.*[A-Za-z])(?=.*\d)(?=.*[!@#$%&*?])[A-Za-z\d!@#$%&*?]{8,20}$'
if not re.search(reg, pwd):
print('비밀번호 기준에 부적당합니다!')
result = False
return result
- 아이디와 패스워드는 파이썬 정규표현식으로 유효성 체크를 한다.
- 아이디는 영문 대소문자와 숫자, 그리고 특수기호인 '_'만을 허용하되 4자 이상 20자 이하로 한다.
- 비밀번호도 영문 대소문자와 숫자, 그리고 특수기호(!@#$%&*?)를 허용하며, 8자 이상 20자 이하로 한다.
[비밀번호 변경]
def edit_password(uid, pwd):
n_pwd = ''
while True:
pw = str(input('새로운 비밀번호 입력: '))
if pw == pwd:
print(f'기존 비번하고 같음!')
continue
else:
res_pwd = chk_password(pw)
if not res_pwd:
continue
else:
n_pwd = pw
break
print(f'id:{uid}, n_pwd:{n_pwd}')
return uid, n_pwd
- 비밀번호 변경은 등록된 아이디와 기본 비밀번호를 받아 다시 입력된 새로운 비밀번호가 기존 비밀번호와 같은 경우, 다시 입력하고, 다를 경우 비밀번호 유효성 체크 함수를 호출하여 결과를 받아 str 변수 n_pwd에 대입한다.
- 아이디와 새로운 비밀번호를 리턴한다.
'코딩 연습 > 파이썬 기초(예제)' 카테고리의 다른 글
bmi 계산하기 - 한국인의 체질량 지수 계산 [파이썬기초예제] (0) | 2022.04.20 |
---|---|
북마크 관리 프로그램 코딩, 엑셀 생성 관리 [파이썬기초(예제)] (0) | 2022.04.17 |
파이썬 반복문 - 김밥 주문 계산하기 [파이썬기초(예제)] (0) | 2022.04.15 |
파이썬 openpyxl 활용 엑셀 시트 이름 가져오기 (0) | 2022.04.13 |
[python] 파이썬 알고리즘 - 선택정렬(Selection Sort) (0) | 2020.09.09 |
댓글