member 클래스 정의
import hashlib
class Member:
def __init__(self, name, username, password):
self.name = name
self.username = username
self.password = password
self.hash_password = hashlib.sha256(self.password.encode()).hexdigest()
def display(self):
print(f"회원 이름 : {self.name}")
print(f"회원 아이디 : {self.username}")
print(f"회원 비밀번호 : {self.hash_password}")
우선 member 클래스를 정의.
name, username, password를 매개변수로 받아 생성자에 전달.
여기서 hash_password 변수를 따로 만들어 해시화된 password를 따로 저장.(따로 저장하는 방법이 맞는지 모르겠음)
이후 display 메서드에서 이름, 아이디, 비밀번호를 출력하는데 이때 해시화된 password를 출력.
members = []
member_cnt = int(input("몇 명의 정보를 입력하시겠습니까? : "))
for i in range(member_cnt):
print(f"{i+1}번째 회원 정보를 입력해주세요.")
name = input("이름 : ")
username = input("아이디 : ")
password = input("비밀번호 : ")
members.append(Member(name, username, password))
print("-------------------------------")
for i in members:
i.display()
members 리스트 생성.
member_cnt를 사용자로부터 입력받아 반복.(몇 명의 정보를 입력할지?)
name, username, password를 input으로 입력받고 이 매개변수로 Member 인스턴스를 생성하여 리스트에 추가.
반복문을 통해 members 리스트를 순회하며 각 Member 인스턴스의 display 메서드를 호출하여 회원 정보를 출력.
리스트를 돌면서 이름만 출력하고 싶다면 : for i in members: print(i.name)문을 실행하면 된다.
문제점
몇 명의 정보를 입력할지 member_cnt 변수를 통해 미리 입력받는 부분이 별로임.
사용자가 회원 정보를 입력하기 전 몇 명을 입력해야 할지 정확히 알아야 하는 불편함이 있음. 수가 많아지면 헷갈림.
해결방법
members = []
while True:
print("회원 정보를 입력해주세요.")
name = input("이름 : ")
username = input("아이디 : ")
password = input("비밀번호 : ")
members.append(Member(name, username, password))
print("-------------------------------")
# 한번 정보 입력할 때마다 추가 입력 질문을 출력, 예외처리까지 설정
while True:
retry = input("추가로 정보를 입력하시겠습니까? (y/n) : ").lower()
if retry == 'y' or retry == 'n':
break
else:
print("(y/n)을 입력하세요.")
if retry == 'n':
break
무한 루프를 통해 한번 정보받고 한번 물어보는 방법을 채택하였음.
y 또는 n을 고르면 추가 입력 반목문을 탈출하도록 하였고 그 외 다른 입력이 들어오면 경고문을 출력.
retry에 들어온 입력이 n일 경우 회원 정보 입력 반복문 탈출.
오늘의 회고
우선 class를 이해하는데 많은 시간을 사용했다. 과제도 계속 수정함.
과제를 통해 어느정도 개념을 익힐 수 있었다.
다음 과제를 위해 전 강의를 복습했다. 안하니까 그새 바로 까먹었다.
내일의 목표는 과제3 마무리? + 과제 4 시작
'매일 TIL' 카테고리의 다른 글
[내일배움캠프 15일차] 가위바위보 게임 (0) | 2024.07.08 |
---|---|
[내일배움캠프 12일차] SQLite, SQLAlchemy (0) | 2024.07.05 |
[내일배움캠프 9일차] Updown 게임, 가위바위보 게임 (0) | 2024.07.02 |
[내일배움캠프 8일차] python 심화 (0) | 2024.07.01 |
[내일배움캠프 5일차] Python 기초 문법 (0) | 2024.06.28 |