카테고리 없음

[SNS 플랫폼] "회원"과 "게시물" 관리 프로그램 개발

neullo 2024. 2. 29. 20:52

내용:

  1. Member 클래스와 Post 클래스를 정의하세요.
  2. Member 클래스에는 다음과 같은 속성을 가지고 있어야 합니다.
    • 회원 이름 (name)
    • 회원 아이디 (username)
    • 회원 비밀번호 (password)
  3. Member 클래스에는 다음과 같은 메소드를 가지고 있어야 합니다.
    • 회원 정보를 print해주는 display (회원이름과 아이디만 보여주고 비밀번호는 보여줘서는 안됩니다!)
  4. Post 클래스에는 다음과 같은 속성을 가지고 있어야 합니다.
    • 게시물 제목 (title)
    • 게시물 내용 (content)
    • 작성자 (author) : 회원의 username 이 저장되어야 함!
  5. 회원 인스턴스를 세개 이상 만들고 members 라는 빈리스트에 append를 써서 저장해주세요
    1. members 리스트를 돌면서 회원들의 이름을 모두 프린트 해주세요
  6. 각각의 회원이 게시글을 세개 이상 작성하는 코드를 만들어주세요.(회원이 세명이명 총 9개 이상의 post 인스턴스가 만들어져야 합니다). 만들어진 게시글 인스턴스들은 posts 빈리스트에 append를 써서 저장해주세요
    1. for 문을 돌면서 특정유저가 작성한 게시글의 제목을 모두 프린트 해주세요
    2. for문을 돌면서 ‘특정 단어’가 content에 포함된 게시글의 제목을 모두 프린트 해주세요

 

추가 도전 과제:

  1. input을 이용하여 Member 인스턴스 만드는것을 사용자가 터미널에서 할 수 있게 해주세요.
  2. post도 터미널에서 생성할 수 있게 해주세요.
  3. (심화)비밀번호 해싱이 무엇인지 공부한 후 hashlib 라이브러리를 써서 회원 비밀번호를 해시화하여 저장하게 해주세요.

 

import hashlib


class Member:
    def __init__(self, name, username, password):
        self.name = name
        self.username = username
        self.password = self._hash_password(password)

    def display(self):
        print(f"이름: {self.name}, 아이디: {self.username}")

    def _hash_password(self, password):
        return hashlib.sha256(password.encode()).hexdigest()


class Post:
    def __init__(self, title, content, author):
        self.title = title
        self.content = content
        self.author = author


def create_member():
    name = input("이름을 입력하세요: ")
    username = input("아이디를 입력하세요: ")
    password = input("비밀번호를 입력하세요: ")
    return Member(name, username, password)


def create_post(author):
    title = input("게시물 제목을 입력하세요: ")
    content = input("게시물 내용을 입력하세요: ")
    return Post(title, content, author)


def main():
    members = []
    posts = []

    # 회원 인스턴스 생성
    for _ in range(3):
        member = create_member()
        members.append(member)

    # 회원 이름 출력
    print("회원 이름 목록:")
    for member in members:
        print(member.name)

    # 회원이 게시글 작성
    for member in members:
        for _ in range(3):
            post = create_post(member.username)
            posts.append(post)

    # 특정 유저가 작성한 게시글 제목 출력
    print("\n특정 유저가 작성한 게시글 제목:")
    for post in posts:
        if post.author == members[0].username:
            print(post.title)

    # 특정 단어가 포함된 게시글 제목 출력
    keyword = input("\n게시글 내용에 포함된 단어를 입력하세요: ")
    print(f"'{keyword}'가 포함된 게시글 제목:")
    for post in posts:
        if keyword in post.content:
            print(post.title)


if __name__ == "__main__":
    main()

 

중요한점

  • 클래스와 인스턴스 개념을 설명할 수 있는가?
  • 메소드와 어트리뷰트(속성)을 설명할 수 있는가?
  • 클래스를 정의할 수 있는가?
  • 인스턴스를 생성할 수 있는가?