Juni_Dev_log

20.11.22 (MyPick-31) TIL 본문

Project/MyPick-31(Dev)

20.11.22 (MyPick-31) TIL

Juni_K 2020. 11. 23. 00:56

(문제1) split 을 할 때, 띄어쓰기가 되는 값이 생겨서 if 구문으로 비교할 때, 비교가 되지 않는다.

 체리   // 비교군 1
체리  // 비교군 2
시럽이 다릅니다. // 두 개의 값이 같은가?

띄어쓰기로 인해서, " 체리" 와 "체리"가 같지않다는 코드가 작성되었다.

띄어쓰기를 제거하기 위해서, replace() 를 사용해서 띄어쓰기가 되는 부분을 제거해야한다.

c10106.tistory.com/3742

 

파이썬에서 문자열의 모든 공백을 제거하십시오.

파이썬에서 문자열의 모든 공백을 제거하십시오. 문자열, 양쪽 끝 및 단어 사이의 모든 공백을 제거하고 싶습니다. 이 파이썬 코드가 있습니다 : def my_handle(self): sentence = ' hello apple ' sentence.strip..

c10106.tistory.com

['과일', '딸기', ' 블루베리', ' 체리', ' 망고', ' 블랙베리', ' 라즈베리', ' 크랜베리', ' 카시스']

이렇게 앞 부분에 띄어쓰기가 들어가지는 요소들을 띄어쓰기를 제거해야 비교를 할 수 있다.

 

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
Comments