-
13주차 월 1113 (가상환경 설정, 쥬피터, (도서관리프로그램)광주인력개발원 일일포스팅(메모장) 2023. 11. 13. 16:49728x90반응형
JDK Java Development Kit
자바 언어로 소프트웨어를 개발할 때 사용되는 개발 도구와 라이브러리 집합을 제공하는 소프트웨어 개발 키트입니다. JDK에는 자바 컴파일러, 디버거, 자바 가상 머신 (JVM), 그리고 다양한 개발 및 실행 도구가 포함되어 있습니다. JDK를 사용하면 자바 프로그램을 개발하고 실행하는 데 필요한 모든 도구와 라이브러리를 포함하여 효과적으로 자바 애플리케이션을 작성할 수 있다.
JDK는 Oracle Corporation에서 제공되며, 자바 개발자들이 자바 애플리케이션을 개발하고 배포하는 데 필수적입니다. JDK의 여러 버전이 있으며, 각 버전은 새로운 기능, 개선 사항, 보안 패치 등을 포함하고 있습니다. 최신 버전의 JDK를 사용하는 것이 보안 및 성능 측면에서 권장된다.
----------------------------------------------------------------------------------------------------------------------------
아나콘다 설치 이유
가장 편해서
기본적으로 파이썬exe 설치되어있고
시각화 라이브러리, 사용할 수 있는 라이브러리가 포함되어 설치
오류가 적다.
일관적으로 라이브러리 관리가 유리
base는 아나콘다가 관리하는 최상위
base가 꺠지면 아나콘다가 꺠진다.
가상환경을 새로 만들어서 작업을하고 문제가 생길시 새로만든 애를 삭제
가상환경이 꺠진다는 의미- 라이브러리가 충돌 등..
파이썬exe는 가상환경이 없고 만들어 가야한다.
exe와 아나콘다는 가상환경을 만든느 기법이 조금 다르다.
----------------------------------------------------------------------------------------------------------------------------
가상환경만들기
1. 생성되어 있는 가상환경 확인하기
> conda env list2. 가상환경 생성하기
>conda create -n gj_env_01 python=3.9(해석) conda create -n 가상환경이름 python=파이썬버전 (3.9는 가장 안정적인 버전)
콘다를 생성하겠다. -n(이름) 가상환경이름 python 버전3. 경로 , 목록확인
>conda env list4. 가상환경 삭제하기 (버전충돌 등이 났을때 삭제)
>conda remove -n gj_env_01 --all5. 가상환경으로 들어가기(활성화시키기)
>conda activate gj_env_016. 가상환경에서 나오기(비활성화 시키기)(한단계 상위로 올라간다.)
>conda deactivate7. 설치되어 있는 패키지(라이브러리) 확인하기
- 두가지 방법
>conda list
>pip list
- 패키지를 설치할 때 conda를 이용해서 설치하면 가장 최적화된 것을 설치(conda는 y/n를 물어본다)
pip를 이용해서 설치하면 가장 최신버전을 설치(pip는 바로설치)8. 외부 에디터에서 가상환경을 연결(kernel)하기 위하여
kernel = 연결통로(커널이 가상환경 base와 연결이 되어있다)
- jupyter 설치하기>pip install jupyter notebook
jupyter notebook 설치확인
>jupyter notebook여기서 내가 연결한 폴더를 열고 작업을 하면된다.
----------------------------------------------------------------------------------------------------------------------------
★학습
[미션]
- 도서 목록 : 새로운 책이 도서관에 [입고] 되었을 때 프로그램 작성
- 도서 대출 : 도서 목록에서 임의 책을 빌리고자 할 때 [대출] 프로그램 작성
- 도서 반납 : 대출한 도서를 [반납] 하고자 할 때 프로그램 작성
- 종료하기 : 종료하기에 대한 프로그램 작성
- 도서 입고/대출/반납/종료 중 원하는 것을 선택했을 때 위 내용 수행합니다.
- 프로그램을 종료하기 전까지는 위 내용은 누구든지 서비스를 받을 수 있도록...반복 실행
- 도서에 대한 확인 값은 자유롭게 정의하여 진행
[조건]
- class 생성하여 처리----------------------------------------------------------------------------------------------------------------------------
class librery: # 책 list와 인덱스 생성 def __init__(self): self.books = list() self.보유책갯수 = 0 self.returnBooks = list() self.대출책갯수 = 0 self.직원pw = '1234' # 폼 생성 def menu(self): return input(""" 입고 - a 대출 - b 반납 - c 목록 - d 종료 - q """) # 입고 시 이름과 번호입력 books에 append, index +1 def do_a(self, books): pw = input('직원만 관리가능합니다. 비밀번호를 입력해주세요. :') if self.직원pw == pw: book = {'name':'', 'code':''} book['name'] = input('책 이름을 입력하세요. : ') book['code'] = input('책 번호를 입력하세요. : ') self.books.append(book) self.보유책갯수 = len(books) print(f'현재 책의 총 갯수 : {self.보유책갯수}' ) else: print('비밀번호가 일치하지 않습니다.') # 대출 시 책이름 입력후 books.remove, returnBook에는 append def do_b(self, books, returnBooks): for book in self.books: print(book['name'], book['code']) returnBook = {'name':'', 'code':''} checkOut = input('대출하고자 하는 책이름을 입력해주세요. : ') checkCode = input('해당 책의 코드를 입력해주세요. : ') for book in self.books: if book.get('name') == checkOut and book.get('code') == checkCode: self.books.remove(book) self.보유책갯수 = len(books) print(f'현재 책의 총 갯수 : {self.보유책갯수}' ) self.returnBooks.append({'name': checkOut, 'code': checkCode}) self.대출책갯수 = len(self.returnBooks) print(f'대출 책의 총 갯수 : {self.대출책갯수}' ) break else: input('책이름과 코드번호를 확인해주세요.') # 반납 시 책이름 입력후 books.append, returnBook에는 remove def do_c(self, books, returnBooks): for returnBook in self.returnBooks: print(returnBook['name'], returnBook['code']) checkIn = input('반납하고자 하는 책이름을 입력해주세요. : ') checkCode = input('해당 책의 코드를 입력해주세요. : ') for returnBook in self.returnBooks: if returnBook.get('name') == checkIn and returnBook.get('code') == checkCode: self.returnBooks.remove(returnBook) self.대출책갯수 = len(self.returnBooks) print(f'대출 책의 총 갯수 : {self.대출책갯수}' ) self.books.append({'name': checkIn, 'code':checkCode}) self.보유책갯수 = len(self.books) print(f'현재 책의 총 갯수 : {self.보유책갯수}' ) break else: input('책이름과 코드번호를 확인해주세요.') def do_d(self, books): for book in self.books: print(book['name'], book['code']) def main(self): while True: menu = self.menu() if menu == 'a': print('입고') self.do_a(self.books) elif menu == 'b': print('대출') self.do_b(self.books, self.returnBooks) elif menu == 'c': print('반납') self.do_c(self.books, self.returnBooks) elif menu == 'd': print('목록') self.do_d(self.books) elif menu == 'q': print('종료') break else: print('잘못 입력하셨습니다.') if __name__ == '__main__': a = librery() a.main()
내가 구성한 로직..
강사님 코드
### 기능을 수행할 클래스(모듈 or 라이브러리) 정의 class LibraryKiosk : ### 라이브러리는 일반적으로 항상 첫글자가 대문자 ### 클래스 생성자 정의 def __init__(self) : ### 도서 목록을 저장할 딕셔너리 변수 생성 ### 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) ### 3. 메뉴 선택 보여주기 while True: print("<도서 키오스크 메뉴>") print("1. 도서입고") print("2. 도서대출") print("3. 도서반납") print("4. 종료") choice = input("원하는 번호(1~4)를 선택하세요 : ") if choice == "1": 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()
기능을 나눠서 해버리더라고...
728x90반응형'광주인력개발원 일일포스팅(메모장)' 카테고리의 다른 글
13주차 화 1114 (클로저) (2) 2023.11.14 13주차 화 1114 (유니코드 프로그램) (2) 2023.11.14 12주차 금 1110 (MVC) (2) 2023.11.10 12주차 목 1109(프로젝트생각해보기, 정규식, 예외처리, 클래스) (6) 2023.11.09 12주차 수 1108 (라이브러리) (4) 2023.11.08