앞서 포스팅 된 글에서 바이트(byte)를 문자열, 문자열(string)을 정수(integer)로 변환하였다.
각 저울의 무게의 출력까지 진행했으니, 저울의 무게을 알맞게 조합하였다.
파이썬은 조합 모듈이 내장되어 있다.
from itertools import combinations
조합을 사용하기 위해서는 리스트를 만들어야 하는데, 앞전에 포스팅 된 글에서 리스트를 이미 만들었다.
for문을 활용한 리스트 변환.
p_4 = [int(i) for i in p_3]
파이썬을 사용하는 사람들이라면 절대적으로 필요한 반복문이다.
저 문장을 글로 해석하자면, p_3안에 있는 원소 i를 정수화 int(i) 하여 리스트 '[ ]' 안에 p_4라는 변수로 정의하겠다. 라는 의미다.
고로 p_4라는 변수는 8개의 저울 무게가 포함된 리스트이다.
본 프로젝트는 문제 정의는 다음과 같다.
1. 각 저울 무게로부터 하여금 알맞게 조합하여 타겟 무게를 확보하는 것.
2. 타겟 무게는 사용자가 임의로 지정하여 타겟 무게보다 높아야하고, 제일 가까운 수여야 함.
3. 3개 조합, 4개 조합, 5개 조합, 6개 조합이 포함된 리스트 내에서 타겟에 가까워야 함.
4. 다시 말해서 3,4,5,6개 조합이 한 리스트에 저장된 후, 그 중에서 가장 가까운 조합을 선정해야 함.
조합을 하기 위해서 for문을 사용하는데, 다음과 같다.
comb_3 = [a for a in itertools.combinations(p_4, 3)]
p_4안에 있는 원소들을 활용하여 3개씩 조합하는 문장이다.
이 문장을 글로 해석하자면 p_4의 원소들을 활용하여 3개씩 조합 itertools.combinatios(p_4, 3) 하여 a라는 원소로 comb_3 리스트에 담는다.
이와 같이 4,5,6 조합 리스트를 구한다.
comb_4 = [b for b in itertools.combinations(p_4, 4)]
comb_5 = [c for c in itertools.combinations(p_4, 5)]
comb_6 = [d for d in itertools.combinations(p_4, 6)]
조합된 리스트의 원소들을 한 곳으로 모으기 위해서 len 을 활용했다.
comb_3[len(comb_3):len(comb_3)] = comb_4
comb_3[len(comb_3):len(comb_3)] = comb_5
comb_3[len(comb_3):len(comb_3)] = comb_6
comb_3라는 리스트에 3,4,5,6개의 조합된 원소들이 포함된다.
'코딩 > 프로젝트, 개발' 카테고리의 다른 글
[Arduino & Python]2-1 Python 내장 모듈 Serial을 활용한 아두이노 시리얼 데이터 수신 (0) | 2022.09.23 |
---|---|
[Arduino & Python]1-3 아두이노를 활용한 8개의 로드셀(HX711) 연결 (0) | 2022.09.21 |
[Arduino & Python]1-2 로드셀의 캘리브레이션(Calibration) (0) | 2022.09.16 |
[Arduino & Python]1-1 로드셀을 활용한 아두이노 선 연결 & 코딩 (0) | 2022.09.15 |
[Arduino & Python]0-1 왕왕초보 개발자의 중량 선별기 제작 프로젝트(Weight Checker Project) (0) | 2022.09.14 |