파이썬 회원과 게시물을 관리 하는 프로그램

장현웅·2023년 8월 28일
0

소셜 미디어 플랫폼의 회원과 게시물을 관리하는 프로그램


내용:

  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 라이브러리를 써서 회원 비밀번호를 해시화하여 저장하게 해주세요.

평가

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

1) Member 클래스와 Post 클래스를 정의하세요.

class Member:
	def __init__(self):
    	print("인잇 실행중")

class Post:
	def __init__(self):
    	print("인잇 실행중")
    

2) Member 클래스에는 다음과 같은 속성을 가지고 있어야 합니다.

  • 회원 이름 (name)
  • 회원 아이디 (username)
  • 회원 비밀번호 (password)
# 처음에는 빈 값의 속성을 넣고 인스턴스에서 속성 값을 넣는다.

class Member:
 	name = ''
    username = ''
    password = ''
    
    def __init__(self):
		print("인잇 실행중")

class Post:
	def __init__(self):
    	print("인잇 실행중")

# 회원 인스턴스
m1 = Member()
m1.name = '장현웅'
m1.username = 'Alex' 
# m1.password = '123'	# 만약 실수로 하나를 빼먹고 줄 수도 있기 때문에 그런 것을 방지하기 위해서 
						# 애초에 줄 때부터 init함수에서 인스턴스를 만들때
                        # m1 = Member('장현웅', 'Alex', '123') 이렇게 해서 준다.
class Member:
    def __init__(self, name, username, password):	# self는 인스턴스 자체, 인스턴스를 생성할 때 자동으로 init함수가 발동되기 때문에 m1자체를 파이썬이 자동으로 준다.
    	self.name = name							# self(인스턴스) 안의 name을 받은 해당 변수 값으로 바꿔준다.
    	self.username = username
    	self.password = password
    
		print("인잇 실행중")

class Post:
	def __init__(self):
    	print("인잇 실행중")      

m1 = Member('장현웅', 'Alex', '123')

print(m1.username)	# Alex


3) Member 클래스에는 다음과 같은 메소드를 가지고 있어야 합니다.

회원 정보를 print해주는 display (회원이름과 아이디만 보여주고 비밀번호는 보여줘서는 안됩니다!)

class Member:
    def __init__(self, name, username, password):
    	self.name = name						
    	self.username = username
    	self.password = password
  
		print("인잇 실행중")
        
	def display(self):
    	print(f"회원님의 이름 : {self.name} 아이디 : {self.username}")
        
class Post:
	def __init__(self):
    	print("인잇 실행중")      

m1 = Member('장현웅', 'Alex', '123')

m1.display()	# 회원님의 이름 : 장현웅 아이디 : Alex

display(m1)		# <__main__.Member object at 0x000001B218608BD0> : 인스턴스 데이터가 저장되어있는 RAM 주소
def __repr__(self):		
	return self.name

display(m1)				# 장현웅
						# print는 string으로 출력해주는 함수라서 
						# display(m1)으로 했을 때는 뭘 보여줘야할지 몰라서 메모리 주소만 보여줌.
						# 이 메소드를 사용하면 self(인스턴스) 데이터의 대표 문자열을 설정해줄 수 있다.

4) Post 클래스에는 다음과 같은 속성을 가지고 있어야 합니다.

  • 게시물 제목(title)
  • 게시물 내용 (content)
  • 작성자 (author) : 회원의 username 이 저장되어야 함!
class Member:
    def __init__(self, name, username, password):
        self.name = name
        self.username = username
        self.password = password

    def display(self):
        print(f"회원님의 이름 : {self.name} 아이디 : {self.username}")

    def __repr__(self):
        return f"{self.name}님의 회원정보"

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

    def __repr__(self):
        return f"{self.author}님이 작성하신 {self.title}"    
    
m1 = Member('장현웅', 'Alex', '123')

5) 회원 인스턴스를 세개 이상 만들고 members 라는 빈리스트에 append를 써서 저장해주세요

  • members 리스트를 돌면서 회원들의 이름을 모두 프린트 해주세요.
class Member:
    def __init__(self, name, username, password):
        self.name = name
        self.username = username
        self.password = password

    def display(self):
        print(f"회원님의 이름 : {self.name} 아이디 : {self.username}")

    def __repr__(self):
        return f"{self.name}님의 회원정보"

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

    def __repr__(self):
        return f"{self.author}님이 작성하신 {self.title}"    

members = []    

m1 = Member('장현웅', 'Alex', '123')
m2 = Member('장준호', 'Max', '123')
m3 = Member('홍서현', 'Lily', '123')

members.append(m1)
members.append(m2)
members.append(m3)

print(members)            # [장현웅님의 회원정보, 장준호님의 회원정보, 홍서현님의 회원정보]

for member in members:
    print(member.name)    # 장현웅 장준호 홍서현

6) 각각의 회원이 게시글을 세개 이상 작성하는 코드를 만들어주세요.(회원이 세명이명 총 9개 이상의 post 인스턴스가 만들어져야 합니다). 만들어진 게시글 인스턴스들은 posts 빈리스트에 append를 써서 저장해주세요

  1. for 문을 돌면서 특정유저가 작성한 게시글의 제목을 모두 프린트 해주세요
  2. for문을 돌면서 ‘특정 단어’가 content에 포함된 게시글의 제목을 모두 프린트 해주세요
class Member:
    def __init__(self, name, username, password):
        self.name = name
        self.username = username
        self.password = password

    def display(self):
        print(f"회원님의 이름 : {self.name} 아이디 : {self.username}")

    def __repr__(self):
        return f"{self.name}님의 회원정보"

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

    def __repr__(self):
        return f"{self.author} 작성 : {self.title}  {self.content}"    

members = []    

m1 = Member('장현웅', 'Alex', '123')
m2 = Member('장준호', 'Max', '123')
m3 = Member('홍서현', 'Lily', '123')

members.append(m1)
members.append(m2)
members.append(m3)

posts = []

for member in members:
    print(member.name)          

p1 = Post('안녕하세요', '잘 부탁드립니다', m1.name)
p2 = Post('Hi', 'Nice to meet you', m1.name)
p3 = Post('Hello', 'Rock', m1.name)
posts.append(p1)
posts.append(p2)
posts.append(p3)

p4 = Post('Yo Check this out', '나는 정상수', m2.name)
p5 = Post('백발백중하는 명사수', '부산진구 유명가수', m2.name)
p6 = Post('일취월장하며 성장중', '내가 대표해 이 거리를', m2.name)
posts.append(p4)
posts.append(p5)
posts.append(p6)

p7 = Post('Super Shy', '슈퍼샤아아', m3.name)
p8 = Post('Hype Boy', '커자아아아', m3.name)
p9 = Post('가시', '크으으대기억이~', m3.name)
posts.append(p7)
posts.append(p8)
posts.append(p9)

print(posts)					# [장현웅 작성 : 안녕하세요  잘 부탁드립니다, 장현웅 작성 : Hi  Nice to meet you, 장현웅 작성 : Hello  Rock, 
장준호 작성 : Yo Check this out  나는 정상수, 장준호 작성 : 백발백중하는 명사수  부산진구 유명가수, 장준호 
작성 : 일취월장하며 성장중  내가 대표해 이 거리를, 홍서현 작성 : Super Shy  슈퍼샤아아, 홍서현 작성 : Hype 
Boy  커자아아아, 홍서현 작성 : 가시  크으으대기억이~]

# 6-1
for post in posts:
    if post.author == '장준호':
        print(post.title)		# Yo Check this out 백발백중하는 명사수 일취월장하며 성장중

# 6-2
certain_word = input()
for post in posts:
    if certain_word in post.content:
        print(post.title) 		# 크으으대기억이~ 가시    

어어어엄청 어려웠다...

0개의 댓글