본문 바로가기

매일 TIL

[내일배움캠프 11일차] member_class

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 시작