지금까지 자료형, 반복문, 조건문을 알아보았어요.이를 최대한 활용해서
사용자가 상품 구매를 하는 코드를 만들어보았습니다.
이전에 배우고 포스팅한 내용들을 활용하여 만들어 보았습니다.
2024.07.09 - [컴퓨터 공학/Networks] - SK networks AI Camp - Python 기본(1)
2024.07.10 - [컴퓨터 공학/Networks] - SK networks AI Camp - Python 기본(2)_자료구조
2024.07.11 - [컴퓨터 공학/Networks] - SK networks AI Camp - Python 기본(3)_제어문
이렇게 코딩해보니까 막히는 부분도 있고
제가 아직 부족하다는 것을 알았네요 ㅠㅠ
판매 제품 : 유랑 상점 네이버 스토 베스트 상품 일부
판매 제품 선정 이유 : 귀여워서
사용 Tool : VS Code
사용 언어 : Python
https://smartstore.naver.com/yurangmall/best?cp=1
1. 전체 코드
buy = {'감자 망그러진 곰 키링 인형 발그레' : 15000, '망그러진 곰 아크릴 키링 감자' : 7500,
'아기 망그러진 곰 20cm 시팅 인형' : 23000, '망그러진 곰 아크릴 키링 뱃살 망곰' : 7500,
'감자 망그러진 곰 키링 인형 울먹' : 15000, '망그러진 곰 데코 스티커 팩 꼬질 망곰' : 4000,
'망그러진 곰 그립톡 울먹' : 14000, '망그러진 곰 캐릭터 울보 얼굴 쿠션 40cm 인형' : 36000,
'감자 망그러진 곰 키링 인형 기본' : 15000, '망그러진 곰 캐릭터 스티커 왠지 잘될..' : 2500,
'망그러진 곰 아크릴 키링 꼬질 햄터' : 8500, '망그러진 곰 캐릭터 스티커 아기 망그러진 곰' : 2500,
'망그러진 곰 데코 스티커 팩 감자 망곰' : 4000, '감자 망그러진 곰 키링 인형 부아앙' : 15000,
'망그러진 곰 미니 얼굴 키링 인형 5cm' : 7600, '망그러진 곰 캐릭터 동전지갑' : 13000}
buy_index = [i for i in buy.keys()]
Total = 0
baguni = []
print('판매 종류')
j = 1
for i in buy_index:
print('({}){} : {}원'.format(j, i, buy[i]))
j += 1
bw = 1
while bw:
want = int(input(f'구매를 원하시는 것을 숫자로 선택해주세요. : '))
if want > 16 or want < 1:
print('없는 상품 번호입니다. 존재하는 상품의 번호를 입력해주세요.')
else:
Total += buy[buy_index[want-1]]
baguni.append(want)
baguni.sort()
print(f'원하시는 상품은 {buy[buy_index[want-1]]}원입니다.')
print(f'전체 금액은 {Total}원 입니다.')
more = int(input('더 구매하시면 1, 장바구니를 확인하려면 2, 구매 목록에서 제거하려면 3, 그만 사시려면 4을 눌러주세요.'))
if more == 1:
continue
elif more == 2:
for i in baguni:
print(f'{buy_index[i]} ', end =' ')
print(' 을(를) 구매하셨습니다.')
print(f'전체 금액은 {Total}원 입니다.')
more_in_baguni = int(input('더 구매를 원하시면 1, 그만 사시려면 2를 눌러주세요.'))
if more_in_baguni == 1:
continue
elif more_in_baguni == 2:
break
elif more == 3:
while True:
remove = int(input(f'{baguni}에서 제외할 것의 번호를 눌러주세요.'))
del baguni[baguni.index(remove)]
Total -= buy[buy_index[remove-1]]
print(f'전체 금액은 {Total}원 입니다.')
action = input(('더 제외하시나요? Y/ N : '))
if action == 'Y':
pass
elif action == 'N':
action_action = int(input('더 구매하시려면 1, 그만 사시려면 2을 눌러주세요.'))
if action_action == 2:
bw = 0
break
else:
break
elif more == 4:
break
else:
print('1부터 4까지 중에 입력해주세요.')
while ' ':
money = int(input('돈을 주세요 : '))
if money < Total:
print(f'잔액이 부족합니다. {Total - money}원을 더 주세요.')
Total -= money
elif money == Total:
print('감사합니다. ^^ 또 오세요.')
break
else:
print(f'거스름돈 {money - Total}원 입니다.')
break
2. 변수명과 용도
변수명 | 타입 | 사용 용도 |
buy | dict | 제품명과 가격 저장 |
buy_index | list | 제품명을 buy에서 받아와 저장 |
Total | int | 전체 지불해야할 가격 |
money | int | 지불한 가격 |
baguni | list | 장바구니에 담긴 제품의 번호 |
want | int | 구매를 원하는 제품의 번호 |
more | int | 손님의 행동 결정(1, 2, 3, 4) |
more_in_baguni | int | 장바구니에 들어가서의 행동 결정(1, 2) |
del | int | 장바구니에서 제외할 제품의 번호 |
3. 코드 뜯어보기
1. 제품 설정 부분 구현
○ buy_index : buy.keys() 함수를 사용해 제품명을 담음
○ print('판매종류') 아래 부분 :
● 형태 : (제품번호)(제품명) : (제품가격)원
● 제품 번호(j) : 1번부터 ~ 16번까지 출력
● 제품명(i) : 변수 i 가 buy_index의 첫번째부터 끝까지 출력
● 제품가격(buy[i]) : buy에서 제품명에 해당하는 것의 value를 출력
buy = {'감자 망그러진 곰 키링 인형 발그레' : 15000, '망그러진 곰 아크릴 키링 감자' : 7500,
'아기 망그러진 곰 20cm 시팅 인형' : 23000, '망그러진 곰 아크릴 키링 뱃살 망곰' : 7500,
'감자 망그러진 곰 키링 인형 울먹' : 15000, '망그러진 곰 데코 스티커 팩 꼬질 망곰' : 4000,
'망그러진 곰 그립톡 울먹' : 14000, '망그러진 곰 캐릭터 울보 얼굴 쿠션 40cm 인형' : 36000,
'감자 망그러진 곰 키링 인형 기본' : 15000, '망그러진 곰 캐릭터 스티커 왠지 잘될..' : 2500,
'망그러진 곰 아크릴 키링 꼬질 햄터' : 8500, '망그러진 곰 캐릭터 스티커 아기 망그러진 곰' : 2500,
'망그러진 곰 데코 스티커 팩 감자 망곰' : 4000, '감자 망그러진 곰 키링 인형 부아앙' : 15000,
'망그러진 곰 미니 얼굴 키링 인형 5cm' : 7600, '망그러진 곰 캐릭터 동전지갑' : 13000}
buy_index = [i for i in buy.keys()]
Total = 0
baguni = []
print('판매 종류')
j = 1
for i in buy_index:
print('({}){} : {}원'.format(j, i, buy[i]))
j += 1
2. 제품 구매 부분 구현
○ want : 사용자가 원하는 제품의 번호를 입력한 것을 담는 변수
○ if문
● 1 ~ 16번까지 없는 제품의 번호를 선택한 경우 오류 메시지 출력 후 다시 구매 번호 요구
○ else문
● buy[buy_idex[want-1]] :
□ want가 1번부터 시작하지만 인덱스는 0부터 시작해서 -1
□ buy_index[숫자] : buy.keys() 함수를 통해 받아온 제품의 인덱스로 검색하여 제품명 확보
□ buy[제품명] : buy에 있는 제품명의 value 값 확보
□ Total : Total에 해당 제품 가격 담기
● baguni.append(want) / baguni.sort()
□ 바구니에 제품 번호 저장
□ 바구니에 제품 번호 정렬
● more
□ 사용자에게 추가 행동을 물어봄
□ 1번을 클릭하면 다시 구매 실행
□ 2번을 클릭하면 : 장바구니 확인
■ more_in_baguni : 바구니 안에서 구매 | 종료 코드 선택
□ 3번을 클릭하면 구매목록에서 제거
■ remove : 제외할 번호를 클릭하면 해당 변수에 저장
■ del baguni[baguni.index(remove)]
- baguni.index(remove) : 제거할 제품의 번호 인덱스 찾기
- baguni[제거할 제품 번호 인덱스] : 제품 번호
■ 제거 후 행동 요구(Y | N)
- 'N' 을 입력하면 더 구매(1), 종료(2)를 물어봄
- 2를 클릭하면 bw를 0으로 만들어 while문 종료
□ 4번을 클릭하면 구매 페이지로 이동& 종료
□ 그 외의 번호를 클릭하면 오류를 설명
[여기서 바로 while문 위로 올라가는 데 else 문의 more을 물어보는 위치로 이동하는 기능 추가해야 할듯 합니다.]
bw = 1
while bw:
want = int(input(f'구매를 원하시는 것을 숫자로 선택해주세요. : '))
if want > 16 or want < 1:
print('없는 상품 번호입니다. 존재하는 상품의 번호를 입력해주세요.')
else:
Total += buy[buy_index[want-1]]
baguni.append(want)
baguni.sort()
print(f'원하시는 상품은 {buy[buy_index[want-1]]}원입니다.')
print(f'전체 금액은 {Total}원 입니다.')
more = int(input('더 구매하시면 1, 장바구니를 확인하려면 2, 구매 목록에서 제거하려면 3, 그만 사시려면 4을 눌러주세요.'))
if more == 1:
continue
elif more == 2:
for i in baguni:
print(f'{buy_index[i]} ', end =' ')
print(' 을(를) 구매하셨습니다.')
print(f'전체 금액은 {Total}원 입니다.')
more_in_baguni = int(input('더 구매를 원하시면 1, 그만 사시려면 2를 눌러주세요.'))
if more_in_baguni == 1:
continue
elif more_in_baguni == 2:
break
elif more == 3:
while True:
remove = int(input(f'{baguni}에서 제외할 것의 번호를 눌러주세요.'))
del baguni[baguni.index(remove)]
Total -= buy[buy_index[remove-1]]
print(f'전체 금액은 {Total}원 입니다.')
action = input(('더 제외하시나요? Y/ N : '))
if action == 'Y':
pass
elif action == 'N':
action_action = int(input('더 구매하시려면 1, 그만 사시려면 2을 눌러주세요.'))
if action_action == 2:
bw = 0
break
else:
break
elif more == 4:
break
else:
print('1부터 4까지 중에 입력해주세요.')
3. 제품 구매 부분 구현
○ while ' ' : 스페이스 바 한개(띄어쓰기)가 들어가있는 문자열은 True
bool('공백') ==> bool(len('공백')) = 1 So, True가 출력
● money < Total: Total에서 지분한 금액(money)를 빼고, 추가 금액 요구
● money = Total: 지불한 돈이 같으면 종료
● money > Total: 지불한 돈이 크면 거스름돈 지불하고 종료
while ' ':
money = int(input('돈을 주세요 : '))
if money < Total:
print(f'잔액이 부족합니다. {Total - money}원을 더 주세요.')
Total -= money
elif money == Total:
print('감사합니다. ^^ 또 오세요.')
break
else:
print(f'거스름돈 {money - Total}원 입니다.')
break
4. 더 보완해야 할 사항
1. 코드 단순화 & while문 안에 수정 및 보완
3. 기능 추가
● 한 번에 여러개의 제품 번호를 치는 경우(split 사용과 for문 사용)
4. 예외 처리
● 더 고민 해봐야 할듯
5. 더 귀여운 망곰이 제품 추가
● 너무너무 귀여워
1번 그림 원본 출처(유랑상점 네이버 블로그) : https://m.blog.naver.com/yurangcorp/223171794666
2번 그림 원본 출처(망그러진 곰 인스타) : https://www.instagram.com/yurang_official/?hl=ko
'Networks > Python' 카테고리의 다른 글
SK networks AI Camp - Python(함수) (2) | 2024.07.15 |
---|---|
SK networks AI Camp - 오류(Exception)와 예외처리 (6) | 2024.07.14 |
SK networks AI Camp - Python 기본(3)_제어문 (0) | 2024.07.12 |
SK networks AI Camp - Python 기본(2)_자료구조 (0) | 2024.07.11 |
SK networks AI Camp - Python 기본(1) (0) | 2024.07.10 |