if rand_num not in numbers 를 안해주면 중복값이 아래와 같이 들어가게 된다
스트라이크 판단 방법 guesses의 인덱스 i에 있는 숫자와 solution의 인덱스 i에 있는 숫자가 동일하면 스트라이크입니다. 이렇게 작성할 수 있겠죠?
볼 판단 방법 guesses의 인덱스 i에 있는 숫자가 '볼'이기 위해서는 이 두 가지 조건을 충족해야 합니다. 이 숫자가 solution 안에도 있어야 한다. 이 숫자가 solution의 인덱스 i에 있으면 안 된다. 그러면 코드를 이렇게 작성할 수 있습니다.
if guesses[i] in solution
and
guesses[i] != solution[i]
보시다시피 조건 부분은 그냥 True라고 써서, 조건 부분을 통과 못할 일이 없습니다. 하지만 수행 부분에서 s가 3인 경우 break를 했기 때문에, 반복문을 빠져나올 수 있습니다. 조건 부분은 s != 3로 했을 수도 있는데, 왜 굳이 이렇게 했을까요? 조건 부분을 s != 3로 하기 위해서는 s를 미리 정의해야 합니다. 그게 번거롭고 조금 지저분하다고 느껴져서, 위와 같은 방식을 택한 것입니다.