일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- MYSQL
- Exercism
- 프로젝트
- Django
- Algorithm
- 파이썬 웹프로그래밍 장고
- 북마크앱
- MyPick31
- 장고 프로젝트 순서
- mongodb
- 타사인증
- 장고 프로젝트
- 개발
- 독립영화플랫폼
- python
- 장고
- til
- 북마크만들기
- JavaScript
- 알고리즘
- join()
- Blog
- Bookmark
- ART_Cinema
- 예술영화추천
- 자바스크립트
- Node.js
- passport.js
- 장고 개발 순서
- Django Blog
- Today
- Total
Juni_Dev_log
20.11.22 (MyPick-31) TIL 본문
(문제1) split 을 할 때, 띄어쓰기가 되는 값이 생겨서 if 구문으로 비교할 때, 비교가 되지 않는다.
체리 // 비교군 1
체리 // 비교군 2
시럽이 다릅니다. // 두 개의 값이 같은가?
띄어쓰기로 인해서, " 체리" 와 "체리"가 같지않다는 코드가 작성되었다.
띄어쓰기를 제거하기 위해서, replace() 를 사용해서 띄어쓰기가 되는 부분을 제거해야한다.
['과일', '딸기', ' 블루베리', ' 체리', ' 망고', ' 블랙베리', ' 라즈베리', ' 크랜베리', ' 카시스']
이렇게 앞 부분에 띄어쓰기가 들어가지는 요소들을 띄어쓰기를 제거해야 비교를 할 수 있다.
print(temp_syrup)
# 리스트 내 불필요한 띄어쓰기를 제거하는 for 문
for i in range(len(temp_syrup)):
temp_syrup[i] = temp_syrup[i].replace(" ", "")
print(temp_syrup)
테스트용으로 '슈팅 스타' 를 뽑기 위해서, 베이스 = 바닐라 / 토핑 = 캔디 / 시럽 = 과일 로 체크해보면,
정상적으로 알고리즘이 돌아간 것을 알 수 있다.
signature DB는 정상적으로 가져오는 것 같아서 season DB도 가져오는지를 확인하기 위해서 테스트를 진행하였다.
★ signature / season : 베이스 / 토핑 / 시럽 모두 있는 플레이버는 필터링 성공 ★
(문제2) 베이스, 토핑, 시럽을 모두 체크해서 필터링을 하면 정상적으로 아이스크림을 가져오지만, 셋 중에서 하나라도 고르지않으면 오류 발생.
예를 들어, '사랑에 빠진 딸기'를 필터링해보려고해본다.
/* 16 */
{
"_id" : ObjectId("5f918a30d9241646728d4ab9"),
"id" : "16",
"name" : "사랑에 빠진 딸기",
"name_eng" : "love struck strawberry",
"base" : "딸기, 치즈",
"topping" : "딸기, 크런치 초콜릿, 치즈케이크",
"syrup" : "",
"kcal" : "292",
"allergens" : "우유,밀,대두,계란,땅콩",
"img" : ""
}
base , topping 은 있지만, syrup 는 없는 케이스이다. (셋 중에서 하나가 없는 경우)
이를 필터링해보기 위해서 base 에 과일 / topping 에 과일을 골라보면
필터링이 제대로 작동하지 않고 오류가 발생하는 것을 볼 수 있다.
127.0.0.1 - - [23/Nov/2020 00:50:15] "POST /bring_season_ice_cream HTTP/1.1" 500 -
Traceback (most recent call last):
File "C:\Users\kks13\OneDrive\바탕 화면\Dev\MyPick31\MyPick-31\app\run.py", line 537, in bring_season_ice_cream
temp7 = temp_flavor[4].split(',')
IndexError: list index out of range
리스트 인덱스의 범위를 벗어났다는 것인데, temp_flavor[4]에 대한 값이 문제가 발생한 것으로 예상한다.
아마 추측하기로는, temp7 이라는 변수는 체크한 시럽을 담아서 사용하는 변수인데,
시럽 메뉴에서 체크한 것이 없기 때문에 빈 리스트를 split 으로 쪼개려고 해서 발생하는 것으로 추측된다.
그렇기 때문에, 만약 체크한 것이 없는 경우에는 if 구문으로 split 을 실행하는 코드를 제외시키는 구조로 코드를 추가 작성하면 될 듯하다.
'Project > MyPick-31(Dev)' 카테고리의 다른 글
MyPick-31 정리 (0) | 2021.02.01 |
---|---|
20.11.28 (MyPick-31) TIL (0) | 2020.11.28 |
20.11.21 (MyPick-31) TIL (0) | 2020.11.22 |
20.11.15 (MyPick-31) TIL (0) | 2020.11.15 |
20.11.14 (MyPick-31) TIL (0) | 2020.11.15 |