본문 바로가기
프로그래밍/독학(어려워요 같이해요)

다음 코드는 변수 a와 b의 숫자를 비교하여 숫자와 자릿수가 같으면 'strike', 숫자는 서로 포함하나 자릿수가 다르면 'ball'로 카운트하는 프로그램이다.

by 노마드데이터랩 2020. 5. 7.
728x90
반응형

안녕하세요. 오늘의 파이썬 질문입니다.

다음 코드는 변수 a와 b의 숫자를 비교하여 숫자와 자릿수가 같으면 'strike', 숫자는 서로 포함하나 자릿수가 다르면 'ball'로 카운트하는 프로그램이다. 다음 프로그램의 실행 결과를 쓰시오. 또한, 결과값이 맞지 않는 이유를 쓰고, 올바른 결과값이 나오도록 코드를 수정하시오.

a = "369"
b = "693"

strike = 0
ball = 0

for number in a:
    if b.count(number) > 1:
        if b.find(number) != a.find(number):
            strike += 1
        else:
            ball += 1

print("Strike:", strike, "Ball:", ball)

그래서 한번 실행해봤습니다. 결과는 다음과 같습니다.

 

자 저 값이 맞는지 확인해볼까요?

a는 "369" b는 "693"이죠

첫번째 자리를 비교해보면 a는 3이고 b는 6

두번째 자리를 비교해보면 a는 6이고 b는 9

세번째 자리를 비교해보면 a는 9이고 b는 3이죠

숫자는 모두 있는데, 자릿수만 다르네요

그럼 strike는 1, ball이 3 나와야겠죠.

코드를 수정해보겠습니다.

a = "369"
b = "693"

strike = 0
ball = 0

for number in a:
    if b.count(number) >= 1:
        if b.find(number) == a.find(number):
            strike += 1
        else:
            ball += 1

print("Strike:", strike, "Ball:", ball)

결과값이 제대로 나왔네요.

count 함수는 1이상이면 돌아야 해서 >=로 수정했구요.

각각 자리수를 비교해서 맞으면 strike 다르면 ball이니까

if b.find(number) != a.find(number): 이부분이

if b.find(number) == a.find(number): 로 변경되어야 하겠죠

오늘은 strike과 ball 프로그램에 대해 알아보았습니다. 화이팅하시고 즐거운 하루 되세요~^^

728x90
반응형

댓글