천생 문과가 컴공으로 전과하면/우당쾅콱! 대학 팀플 현실

[Python] 약 자판기 프로그램 코드

Buang 2023. 1. 12. 20:28
반응형

1. 약 자판기 코드

 

모교 기숙사에서 사용할 수 있는

약 자판기 프로그램을 파이썬으로 만들었다.

 

코드는 깃허브에 올려뒀고, 아래는 해당 링크다. 

 

https://github.com/minji9988/School_Medicine_Vending_Machine

 

GitHub - minji9988/School_Medicine_Vending_Machine: 대학교 기숙사 약 자판기 프로그램

대학교 기숙사 약 자판기 프로그램. Contribute to minji9988/School_Medicine_Vending_Machine development by creating an account on GitHub.

github.com

 


2. 프로그램 실행 모습

 

1. 환영 메세지

 

처음 프로그램을 실행하면 환영 메세지가 뜬다.

우리 학교 학생들만 사용할 수 있도록 확인 절차를 위해

학번을 입력하도록 설정했다.

 


2. 유의사항

 

 

 

적절하지 않은 학번을 입력하면

위와 같이 학번을 차지 못했다는 문구가 뜬다.

 

여기서 적절한 학번은 프로그램에 저장된 학번을 의미한다.

 

 

현재 프로그램에는 우리 팀원의 학번과 이름이 저장되어 있다.

팀원 중 한 명의 학번을 입력하면 다음 단계로 넘어갈 수 있다.

 

나는 내 학번인 202454544를 입력했고,

학번을 입력하니 '안녕하세요, 부엉이님.'란 문구가 떴다. 

 

 

 

그리고 다음 페이지는 약 자판기 사용시 유의사항이 출력되도록 만들었다.

키보드의 1번을 누르면 다음 화면으로 넘어간다.


 

3. 판매중인 약

 

현재 약 자판기에 있는 약과 약의 수량과 가격

그리고 각 약의 효능이 출력되도록 했다.

 

구매할 약의 번호를 입력하면 해당 약을 선택할 수 있다.

 

 

나는 타이레놀과 베아제를 구매하고 싶어서

1번과 6번을 입력했다. 그리고 이 이상 구매할 약이 없어서 8번을 입력했다.

 

8번을 누르면 내가 선택한 약이

정확히 맞는지 확인하는 절차가 뜬다.

 

 

 

만약 3개의 약을 선택하면 8번을 누르지 않아도

바로 구매하실 약이 무엇이 맞습니까?란 문구가 뜨도록 했다.

 

프로그램을 종료하고 다시 시작하면 사용자가 구매한 약 기록도

삭제돼서 큰 의미는 없지만 나름3개 이하를 구현하고자 했던 부분이다.

 

본론으로 돌아와서 1번을 누르면 결제창으로 넘어간다.

 

사용자가 약을 잘못 선택한 경우를 고려해서

'다시 선택하기' 부분도 만들어야 하는데 

학생 정보 저장을 딕셔너리 형태로 작성해서 계속 오류가 생겼다.

 

이 부분은 너무 개발과 깊숙히 관련된 이야기라

생략하는 게 좋을까 싶다가도 기록으로 남겨는 놓는 게 좋을 거 같아서

'더보기'를 클릭하면 확인할 수 있도록 만들었다.

 

더보기

현재 학생 정보를 딕셔너리 형태로

'학번: 이름' 으로 저장을 해놨다.

 

#  studentList: 학생의 학번과 이름을 저장한 변수
studentList = {'22206425' : '토끼', '20206243' : '나비',
        '20212444' : '캥거루', '202454544' : '부엉이' }
 

그리고 약 리스트를 만들어서 학생이 선택한 약을 저장하는 공간도

'학번:약'과 같이 딕셔너리 형태로 만들었고

약은 리스트 형태로 저장되도록 만들었다.

 

# studentMedicineList: 학생이 선택한 약이 저장되는 변수
 
studentMedicineList = {'22206425' : [],
'20206243' : [], '20212444' : [], '202454544' : [] }
 
# 예) 토끼학생이 타이레놀과 부루펜을 선택했다면
# 토끼의 학번인 22206425에 있는 [] 빈 리스트에 ["타이레놀", "부루펜"] 형식으로 저장됨

 

위와 같은 상황에서 '다시 선택하기'를 구현하려고 하면

처음에 부엉이란 사람이 선택한 약,

가령 부엉이란 사람이 처음에 타이레놀과 부푸렌이란 약을 선택했는데

'다시 선택하기'를 통해서 약을 다시 선택하고자 하는 경우

 

약 리스트(studentMedicineList)에 있는 부엉이 처음에 선택했던 값들을 초기화 시켜야 한다.

이 과정에서 value(= 부엉이가 선택한 약)만 초기화하는데 이때 value를 지우면 key(즉 학번)도 같이 지워진다.

 

학생이 선택한 약이 저장되는 변수를 딕셔너리로 만들어서

학번에 대한 선택한 약 목록만 초기화 시킬 수 없었다.

 

key와 value는 하나만 삭제할 수 없고 두 개 모두 삭제되기 때문에 이런 현상이 발생했다.

예초에 변수를 딕셔너리 형태로 만들어서 문제가 생긴 거였다.

 

이미 개발이 많이 진행된 상황이었기 때문에 

'다시 선택하기'는 생략하고 개발을 이어가게 됐다.

 

pandas를 이용하면 해결할 수 있지 않을까? 싶어서 시도해 봤는데

실패...시간 관계상 그럼 다시 선택하기는 버리고 나머지 부분을 진행하기로 했다.

'더보기' 글을 생략하고 바로 아래 글을 읽어도 상관없다.

혹시라도 이 글을 읽는 사람 중 개발을 하는 분들도 있을까 싶어서

기록해 놓은 글이다.

 


4. 결제창

내가 총 지불해야 할 금액이 뜬다.

 

 

 

부족한 돈을 지불하면 잔액부족이란 문구가 뜨면서

추가로 지불해야 할 돈을 알려준다.

 


 

5. 구매 완료

 

 

돈을 정확히 입력하면 프로그램이 종료된다.

 

 

 

 

4탄. 공대생의 '와르르맨션' 대학 팀플 일화 - 약 자판기 편

1. 코드 한 줄도 "아직 코드 한 줄도 작성하지 않았습니다." 첫 회의 이후 4일 뒤 팀원들과 만났다. 다른 팀원분들은 상황 진척이 꽤 됐는데 한 팀원분께서 아직 코드 한 줄 작성하지 않았단 이야

studywithowl.tistory.com

 

반응형