무료 밥차
1. 챕터의 목표
조건문
: if, elif, else문을 사용할 수 있습니다.
논리 연산
: and, or, not 연산을 할 수 있습니다.
2. 스토리
라이캣은 그동안 라이언 타운 바깥으로 은밀하게 금괴를 이동시켜왔습니다.
'라이언 타운에서 1골드는 간식을 살 돈이지만 위니브월드에선 10가족이 10달을 먹고 살 수 있는 돈이다냥!'
그는 믿을만한 직원들을 선별하여 이동시킨 금괴로 식자재를 구매하여 오랜 기간 밥차를 운영했습니다.
"먹는 문제는 내가 해결해주겠다냥! 먹을 것을 걱정 말고, 입을 것을 걱정 말고, 잘 곳을 걱정 말고 더 큰 가치를 위해 시간을 써라냥!"
누가 그 밥차를 운영하는지 대부분은 몰랐지만, 많은 이들이 그 밥차를 기다려왔고 감사해왔습니다. 그렇게 어떤 이는 성장하고, 실력을 키워 누가 그 밥차를 운영하는지 알게 되었고 은밀히 그를 따르게 되었습니다.
그중에서도 하티는 자신이 태어난 마을에 오랫동안 밥차가 왔었다는 것을 알고 있었습니다.
캣네생선
에서 첩자 활동을 하며 누가 그 밥차를 운영하는지 알게 되었고 그가 보여주었던 진심, 그가 보여주었던 행동으로 하티의 마음이 흔들리고 있었습니다.
2.1 임무
fish-1이 10마리 이상, goldbar가 10개 이상이면 밥차를 운영하는 (1, 4) 공간으로 들어갑니다. 그리고 fish-1을 한 마리 놓고 밥차를 운영한다고 말해주세요.
fish-1이 10마리 미만, goldbar가 10개 미만이면 밥차를 운영하는 (1, 4) 공간에서 밥차를 운영하지 않는다고 말해야 합니다. 두 조건이 동시 만족되어야 합니다.
2.1.1 기본 코드
if 조건:
say('오늘은 밥차를 운영합니다!')
else:
say('오늘은 밥차를 운영하지 않습니다!')
if 조건:
say('오늘은 밥차를 운영합니다!')
else:
say('오늘은 밥차를 운영하지 않습니다!')
2.2 사용 코드
아래 코드들을 조합하여 문제를 풀어주세요.
mission_start()
mission_end()
True and False
True or False
10 > 5 and False
move()
repeat(2, move)
pick()
say('hello world!')
show_item()
show_item()['fish-1']
10 > 20
30 < 10
10 >= 5
3 == 3
3 != 5
5 <= 10
mission_start()
mission_end()
True and False
True or False
10 > 5 and False
move()
repeat(2, move)
pick()
say('hello world!')
show_item()
show_item()['fish-1']
10 > 20
30 < 10
10 >= 5
3 == 3
3 != 5
5 <= 10
3. 문제 풀이를 위한 개념
3.1 조건문
조건문은 해당 조건이 True
일 때, 그 아래 if 범위에 있는 코드를 실행시키는 것입니다.
print('start')
if True:
print('hello')
print('hello')
print('hello')
print('end')
print('start')
if True:
print('hello')
print('hello')
print('hello')
print('end')
코드의 범위는 위 네모 박스 버튼을 눌러 확인할 수 있습니다. 접힌 곳까지가 if문의 범위입니다. 범위는 띄어쓰기 4칸으로 나타냅니다.
if문의 조건을 True
로 했을 때와 False
로 했을 때 각각 출력 결과를 확인해 보도록 하겠습니다.
start
hello
hello
hello
end
start
hello
hello
hello
end
start
end
start
end
if문이 False
일 때 실행하게 하는 것이 else
구문입니다. 아래 구문을 확인해 볼게요.
print('start')
if True:
print('hello')
else:
print('world')
print('end')
print('start')
if True:
print('hello')
else:
print('world')
print('end')
위 구문에서 if문 뒤가 True
이면 ‘hello’를, False
라면 ‘world’를 출력합니다. if는 단독으로 사용할 수 있지만 else는 단독으로 사용할 수 없습니다. 조건문에는 if와 else뿐만 아니라 elif도 있습니다.
x = 10
if x > 10:
print('x는 10보다 큽니다')
elif x == 10:
print('x는 10입니다.')
else:
print('x는 10보다 작습니다.')
x = 10
if x > 10:
print('x는 10보다 큽니다')
elif x == 10:
print('x는 10입니다.')
else:
print('x는 10보다 작습니다.')
elif는 else if의 줄임말입니다. 그렇지 않고 만약
이라는 뜻으로 앞의 조건문이 False
이고 뒤에 값이 True
라면 실행하는 것이죠. elif는 아래와 같이 여러 개를 사용할 수 있습니다.
x = 76
if x >= 90:
print('A')
elif x >= 80:
print('B')
elif x >= 70:
print('C')
else:
print('D')
x = 76
if x >= 90:
print('A')
elif x >= 80:
print('B')
elif x >= 70:
print('C')
else:
print('D')
여기서 x는 순차적으로 조건문이 참인지 거짓인지를 검사하게 됩니다. 첫 번째 if문에서 x는 90점 이상이 아니기 때문에 False
값으로 다음 코드로 넘어가게 됩니다. 두 번째 elif문에서 x는 80점 이상도 아니기 때문에 다음 코드로 넘어가게 됩니다. 세 번째 elif문에서 x는 70점 이상이기 때문에 C를 출력하고 그 뒤 else문으로는 넘어가지 않습니다. 이미 앞에서 True
인 것이 나왔기 때문입니다.
논리 연산은 평소에 다루던 연산이 아니기 때문에 생소하고 어렵지만 컴퓨터 공학에서는 필수로 다뤄야 하는 개념이며 자주 사용되는 개념입니다. 따라서 반복하여 자연스럽게 사용할 수 있도록 해주세요. 아래처럼 정리하면 좋습니다.
# True는 1, False는 0
# and는 곱, or는 합
# not은 부정
True and False # 첫번째 예제
True or False # 두번째 예제
True or True # 세번째 예제
not True # 네번째 예제
# True는 1, False는 0
# and는 곱, or는 합
# not은 부정
True and False # 첫번째 예제
True or False # 두번째 예제
True or True # 세번째 예제
not True # 네번째 예제
첫 번째 예제에서 True and False는 1 곱하기 0과 같습니다. 곱하기이니 둘 중 하나라도 0이라면 0이겠죠? 그래서 and 연산은 둘 중 하나라도 False라면 False를 반환합니다. 이 예제는 뒤의 값이 False이니 False를 반환합니다.
두 번째 예제에서 True or False는 1 더하기 0과 같습니다. 더하기이니 둘 중 하나라도 1이라면 1 이상일 것입니다. 그래서 or 연산은 둘 중 하나라도 True라면 True를 반환합니다. 이 예제는 앞의 값이 이미 True이니 True를 반환합니다.
세 번째 예제는 1 더하기 1이 되는데요. 0외에 다른 숫자는 모두 True 취급한다고 생각해 주시면 됩니다.
네 번째 예제에서 not True라면 False를 not False이면 True를 출력합니다.
쉽게 설명하기 위해 더하기와 곱하기에 대입하여 위 문제를 풀어보았습니다. 다만 실제 파이썬은 위와 같이 연산하는 것이 아니라 문장들을 평가해가며 연산합니다. 예를 들어 앞에 False가 나오고 and가 나왔다면 뒤에 문장은 보지 않고 False로 평가합니다.