λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
IT/Python

[Python] 1. λ„μ„œ μž…κ³ /λŒ€μΆœ/λ°˜λ‚© 관리λ₯Ό μœ„ν•œ ν‚€μ˜€μŠ€ν¬ 파이썬 ν”„λ‘œκ·Έλž¨ μ‹€μŠ΅ (class 이용)

by ITyranno 2023. 11. 14.
728x90
λ°˜μ‘ν˜•

 

 

 

 

ν”„λ‘œκ·Έλž˜λ° 세계λ₯Ό νƒκ΅¬ν•©μ‹œλ‹€.

 

 

 

* decorator μ‚¬μš©ν•œ μ‹€μŠ΅μ€ μ•„λž˜ κ²Œμ‹œκΈ€ μ°Έκ³  λ°”λžλ‹ˆλ‹€.

 

2023.11.16 - [IT/Python] - [Python] 2. λ„μ„œ μž…κ³ /λŒ€μΆœ/λ°˜λ‚© 관리λ₯Ό μœ„ν•œ ν‚€μ˜€μŠ€ν¬ 파이썬 ν”„λ‘œκ·Έλž¨ λ°μ½”λ ˆμ΄ν„° μ‹€μŠ΅ (decorator 이용)

 

[Python] 2. λ„μ„œ μž…κ³ /λŒ€μΆœ/λ°˜λ‚© 관리λ₯Ό μœ„ν•œ ν‚€μ˜€μŠ€ν¬ 파이썬 ν”„λ‘œκ·Έλž¨ λ°μ½”λ ˆμ΄ν„° μ‹€μŠ΅ (decorator

ν”„λ‘œκ·Έλž˜λ° 세계λ₯Ό νƒκ΅¬ν•©μ‹œλ‹€. * class μ‚¬μš©ν•œ μ‹€μŠ΅μ€ μ•„λž˜ κ²Œμ‹œκΈ€ μ°Έκ³  λ°”λžλ‹ˆλ‹€. 2023.11.14 - [IT/Python] - [Python] λ„μ„œ μž…κ³ /λŒ€μΆœ/λ°˜λ‚© 관리λ₯Ό μœ„ν•œ ν‚€μ˜€μŠ€ν¬ 파이썬 ν”„λ‘œκ·Έλž¨ μ‹€μŠ΅ (class 이용) [Python]

ityranno.tistory.com

 

 

 

 

* νšŒμ›κ°€μž… κΈ°λŠ₯ μΆ”κ°€ν•œ μ‹€μŠ΅μ€ μ•„λž˜ κ²Œμ‹œκΈ€ μ°Έκ³  λ°”λžλ‹ˆλ‹€.

 

2023.11.20 - [IT/Python] - [Python] 3. λ„μ„œ μž…κ³ /λŒ€μΆœ/λ°˜λ‚© 관리λ₯Ό μœ„ν•œ ν‚€μ˜€μŠ€ν¬ 파이썬 ν”„λ‘œκ·Έλž¨ λ°μ½”λ ˆμ΄ν„° μ‹€μŠ΅ (νšŒμ›κ°€μž… κΈ°λŠ₯ μΆ”κ°€)

 

[Python] 3. λ„μ„œ μž…κ³ /λŒ€μΆœ/λ°˜λ‚© 관리λ₯Ό μœ„ν•œ ν‚€μ˜€μŠ€ν¬ 파이썬 ν”„λ‘œκ·Έλž¨ λ°μ½”λ ˆμ΄ν„° μ‹€μŠ΅ (νšŒμ›κ°€

ν”„λ‘œκ·Έλž˜λ° 세계λ₯Ό νƒκ΅¬ν•©μ‹œλ‹€. * class μ‚¬μš©ν•œ μ‹€μŠ΅μ€ μ•„λž˜ κ²Œμ‹œκΈ€ μ°Έκ³  λ°”λžλ‹ˆλ‹€. 2023.11.14 - [IT/Python] - [Python] λ„μ„œ μž…κ³ /λŒ€μΆœ/λ°˜λ‚© 관리λ₯Ό μœ„ν•œ ν‚€μ˜€μŠ€ν¬ 파이썬 ν”„λ‘œκ·Έλž¨ μ‹€μŠ΅ (class 이용) [Python]

ityranno.tistory.com

 

 

 

 

 

 

 

λ„μ„œ μž…κ³ /λŒ€μΆœ/λ°˜λ‚© κ΄€λ¦¬λ₯Ό μœ„ν•œ ν‚€μ˜€μŠ€ν¬ νŒŒμ΄μ¬ ν”„λ‘œκ·Έλž¨ μ‹€μŠ΅

 

 

[λ―Έμ…˜]

λ„μ„œλͺ©λ‘ : μƒˆλ‘œμš΄ 책이 λ„μ„œκ΄€μ— [μž…κ³ ]λ˜μ—ˆμ„ λ•Œ ν”„λ‘œκ·Έλž¨ μž‘μ„±
λ„μ„œλŒ€μΆœ : λ„μ„œ λͺ©λ‘μ—μ„œ μž„μ˜ 책을 빌리고자 ν•  λ•Œ [λŒ€μΆœ] ν”„λ‘œκ·Έλž¨ μž‘μ„±
λ„μ„œ λ°˜λ‚© : λŒ€μΆœν•œ λ„μ„œλ₯Ό [λ°˜λ‚©]ν•˜κ³ μž ν•  λ•Œ ν”„λ‘œκ·Έλž¨ μž‘μ„±
μ’…λ£Œν•˜κΈ° : μ’…λ£Œν•˜κΈ°μ— λŒ€ν•œ ν”„λ‘œκ·Έλž¨ μž‘μ„±
λ„μ„œ μž…κ³ /λŒ€μΆœ/λ°˜λ‚©/μ’…λ£Œ 쀑 μ›ν•˜λŠ” 것을 μ„ νƒν–ˆμ„ λ•Œ μœ„ λ‚΄μš© μˆ˜ν–‰ν•©λ‹ˆλ‹€.
ν”„λ‘œκ·Έλž¨μ„ μ’…λ£Œν•˜κΈ° μ „κΉŒμ§€λŠ” μœ„ λ‚΄μš©μ€ λˆ„κ΅¬λ“ μ§€ μ„œλΉ„μŠ€λ₯Ό 받을 수 μžˆλ„λ‘ 반볡 μ‹€ν–‰
λ„μ„œμ— λŒ€ν•œ 확인 값은 자유둭게 μ •μ˜ν•΄μ„œ 진행


[쑰건]



class μƒμ„±ν•˜μ—¬ 처리

 

<μž‘μ„± μ½”λ“œ1>

 

### κΈ°λŠ₯을 μˆ˜ν–‰ν•  클래슀(λͺ¨λ“ˆ or 라이브러리) μ •μ˜
class LibraryKiosk :
    ### 클래슀 μƒμ„±μž μ •μ˜
    def __init__(self) :
        ### λ„μ„œ λͺ©λ‘μ„ μ €μž₯ν•  λ”•μ…”λ„ˆλ¦¬ λ³€μˆ˜ 생성
        # - λ„μ„œλ²ˆν˜Έ, λ„μ„œμ œλͺ©, λ„μ„œμž¬κ³ μˆ˜λŸ‰ 정보 λ‹΄κΈ°
        self.books = {}
        print("클래슀 생성 λ˜μ—ˆμŠ΅λ‹ˆλ‹€.")
        
    ### λ„μ„œμž…κ³  κΈ°λŠ₯ μ •μ˜ν•˜κΈ°
    def add_book(self, book_id, title, quantity) :
        ## μž…κ³ ν•  λ„μ„œλ²ˆν˜Έκ°€ μ‘΄μž¬ν•˜λŠ”μ§€ 확인
        # - μ‘΄μž¬ν•œλ‹€λ©΄ μˆ˜λŸ‰λ§Œ μ¦κ°€μ‹œν‚€κΈ°
        if book_id in self.books :
            # self.books[book_id]["quantity"] = self.books[book_id]["quantity"] + quantity
            self.books[book_id]["quantity"] += quantity
        # - μ‘΄μž¬ν•˜μ§€ μ•ŠλŠ”λ‹€λ©΄
        else :
            # {"001" : {"title":"파이썬 기초", "quantity":4}}
            self.books[book_id] = {"title":title, "quantity":quantity}
        print(f"λ„μ„œλ²ˆν˜Έ:{book_id} / 제λͺ© : {title} / μž…κ³ μˆ˜λŸ‰ : {quantity} μž…κ³  성곡!!" )


    ### λŒ€μΆœ κΈ°λŠ₯ μ •μ˜ν•˜κΈ°
    def borrow_book(self, book_id) :
        ### λŒ€μΆœν•˜κ³ μžν•˜λŠ” λ„μ„œλ²ˆν˜Έμ— ν•΄λ‹Ήν•˜λŠ” μž¬κ³ μˆ˜λŸ‰ ν™•μΈν•˜κΈ°
        if (book_id in self.books) and (self.books[book_id]["quantity"] > 0) :
            #self.books[book_id]["quantity"] = self.books[book_id]["quantity"] - 1
            self.books[book_id]["quantity"] -= 1
            print(f"λ„μ„œλ²ˆν˜Έ:{book_id} / 제λͺ©:{self.books[book_id]['title']} / λ‚¨μ€μž¬κ³ μˆ˜λŸ‰:{self.books[book_id]['quantity']}")
        else :
            print("λ„μ„œκ°€ μ‘΄μž¬ν•˜μ§€ μ•Šκ±°λ‚˜, λŒ€μΆœν•  μž¬κ³ κ°€ μ—†μŠ΅λ‹ˆλ‹€.")


    ### λ°˜λ‚© κ°€λŠ₯ μ •μ˜ν•˜κΈ°
    def return_book(self, book_id) :
        # - λ°˜λ‚©ν•  λ„μ„œλ²ˆν˜Έκ°€ λ„μ„œλͺ©λ‘μ— μžˆλŠ”μ§€ 확인
        if book_id in self.books :
            self.books[book_id]["quantity"] += 1
            print(f"λ„μ„œλ²ˆν˜Έ:{book_id} / 제λͺ©:{self.books[book_id]['title']} / λ‚¨μ€μž¬κ³ μˆ˜λŸ‰:{self.books[book_id]['quantity']}")
        
        # - ν•΄λ‹Ή λ„μ„œκ°€ λͺ©λ‘μ— μ—†λ‹€λ©΄
        else :
            print("ν•΄λ‹Ή λ„μ„œκ°€ μ‘΄μž¬ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.")

 

 

### 2. μ΅œμ΄ˆμ— μ‹€ν–‰ν•  κΈ°λŠ₯(ν•¨μˆ˜) μ •μ˜
def main():
    ### 클래슀 μƒμ„±ν•˜κΈ°
    # - 졜초 ν•œλ²ˆ : ν”„λ‘œκ·Έλž¨μ΄ μ’…λ£Œλ˜λ©΄ ν΄λž˜μŠ€λŠ” μ†Œλ©Έ(λ©”λͺ¨λ¦¬ 곡간 μ‚­μ œ)λ©λ‹ˆλ‹€.
    kiosk = LibraryKiosk()
    print(kiosk)
    
    #print('성곡!')
    ###3. 메뉴 선택 보여주기
    while True:
        print('<λ„μ„œ ν‚€μ˜€μŠ€ν¬ 메뉴>')
        print('1. λ„μ„œ μž…κ³ ')
        print('2. λ„μ„œ λŒ€μΆœ')
        print('3. λ„μ„œ λ°˜λ‚©')
        print('4. μ’…λ£Œ')

        choice = input('μ›ν•˜λŠ” 번호(1~4)λ₯Ό μ„ νƒν•˜μ„Έμš” : ')

        if choice == '1':
            # print('μž…κ³  선택')
            book_id = input('λ„μ„œ 번호λ₯Ό μž…λ ₯ν•΄ μ£Όμ„Έμš” : ')
            title = input('λ„μ„œ 제λͺ©μ„ μž…λ ₯ν•΄ μ£Όμ„Έμš” : ')
            quantity = int(input('μž…κ³ ν•  ꢌ수λ₯Ό μž…λ ₯ν•΄ μ£Όμ„Έμš” : '))
            # print(f"{book_id} / {title} / {quantity}")
            # - 클래슀 λ‚΄λΆ€μ˜ μž…κ³  κΈ°λŠ₯ ν˜ΈμΆœν•˜κΈ°
            kiosk.add_book(book_id, title, quantity)
            
        elif choice == '2':
            #print('λŒ€μΆœ 선택')
            book_id = input("λŒ€μΆœν•  λ„μ„œλ²ˆν˜Έλ₯Ό μž…λ ₯ν•΄μ£Όμ„Έμš” :")

            ### 클래슀 λ‚΄λΆ€μ˜ λŒ€μΆœ κΈ°λŠ₯ ν˜ΈμΆœν•˜κΈ°
            kiosk.borrow_book(book_id)
            
        elif choice == '3':
            #print('λ°˜λ‚© 선택')
            book_id = input("λ°˜λ‚©ν•  λ„μ„œλ²ˆν˜Έλ₯Ό μž…λ ₯ν•΄μ£Όμ„Έμš” :")

            ## 클래슀 λ‚΄λΆ€μ˜ λ°˜λ‚© κΈ°λŠ₯ ν˜ΈμΆœν•˜κΈ°
            kiosk.return_book(book_id)

            
        elif choice == '4':
            print('μ’…λ£Œ 선택')
            break
        else:
            print('잘λͺ» μ„ νƒν•˜μ˜€μŠ΅λ‹ˆλ‹€. λ‹€μ‹œ 선택해 μ£Όμ„Έμš”!')

### 1. 졜초 μ½”λ“œ μ‹œμž‘
if __name__ == "__main__":
    ### μ΅œμ΄ˆμ— μ‹€ν–‰ν•  κΈ°λŠ₯(ν•¨μˆ˜) 호좜
    main()

 

 

 

<μ‹€ν–‰ ν™”λ©΄>

 

 

 

 

<μž‘μ„± μ½”λ“œ 2>

 

class Library:
    def __init__(self):
        self.books = []
        self.borrowed_books = []

    def add_book(self, book_name):
        self.books.append(book_name)
        print(f"'{book_name}' 책이 λ„μ„œκ΄€μ— μž…κ³ λ˜μ—ˆμŠ΅λ‹ˆλ‹€.")
        
    def borrow_book(self, book_name):
        if book_name in self.books:
            self.books.remove(book_name)
            self.borrowed_books.append(book_name)
            print(f"'{book_name}' 책이 λŒ€μΆœλ˜μ—ˆμŠ΅λ‹ˆλ‹€.")
        else:
            print(f"'{book_name}' 책은 λ„μ„œκ΄€μ— μ—†μŠ΅λ‹ˆλ‹€.")
            
    def return_book(self, book_name):
        if book_name in self.borrowed_books:
            self.borrowed_books.remove(book_name)
            self.books.append(book_name)
            print(f"'{book_name}' 책이 λ°˜λ‚©λ˜μ—ˆμŠ΅λ‹ˆλ‹€.")
        else:
            print(f"'{book_name}' 책은 λŒ€μΆœλ˜μ§€ μ•Šμ•˜μŠ΅λ‹ˆλ‹€.")
            
library = Library()

while True:
    print("\n1: λ„μ„œ μž…κ³ , 2: λ„μ„œ λŒ€μΆœ, 3: λ„μ„œ λ°˜λ‚©, 4: μ’…λ£Œν•˜κΈ°")
    user_input = input("μ›ν•˜λŠ” κΈ°λŠ₯을 μ„ νƒν•˜μ„Έμš”: ")
    
    if user_input == '1':
        book_name = input("μž…κ³ ν•  λ„μ„œμ˜ 이름을 μž…λ ₯ν•˜μ„Έμš”: ")
        library.add_book(book_name)
    elif user_input == '2':
        book_name = input("λŒ€μΆœν•  λ„μ„œμ˜ 이름을 μž…λ ₯ν•˜μ„Έμš”: ")
        library.borrow_book(book_name)
    elif user_input == '3':
        book_name = input("λ°˜λ‚©ν•  λ„μ„œμ˜ 이름을 μž…λ ₯ν•˜μ„Έμš”: ")
        library.return_book(book_name)
    elif user_input == '4':
        print("λ„μ„œκ΄€ μ‹œμŠ€ν…œμ„ μ’…λ£Œν•©λ‹ˆλ‹€.")
        break
    else:
        print("μ˜¬λ°”λ₯Έ 번호λ₯Ό μž…λ ₯ν•˜μ„Έμš”.")

 

 

 

<μ‹€ν–‰ ν™”λ©΄>

 

 

 

 

이와 같은 λ°©μ‹μœΌλ‘œ λ„μ„œ μž…κ³ /λŒ€μΆœ/λ°˜λ‚© 관리λ₯Ό μœ„ν•œ ν”„λ‘œκ·Έλž¨μ„ 생성할 수 μžˆμŠ΅λ‹ˆλ‹€.

728x90
λ°˜μ‘ν˜•

loading