만일 파이썬의 p 정도만 알고 이 문제를 만났을 경우
이 간단해 보이는 파이썬 "기본" 문제는 생각보다 간단하지 않을 것이다.
- '함수'의 개념을 알아야 한다.
- '인자'의 개념도 알아야 한다.
- '~이면', 즉 if 문 사용법을 알아야 한다.
- '리턴'의 개념도 알아야 한다.
내 경우는, 운 좋게도 자바를 먼저 배우다가 자바의 진정한 매운맛을 보기 전에 파이썬으로 넘어왔기 때문에 대강 무슨 말인지는 이해가 되는듯 했다.
A1. '함수'란
def '함수명'(인자):
라고 선언하여 사용한다. 선언 이후 그 아래로 쭉 적게될 일련의 식을 재사용할 경우, '함수명' 으로만 호출할 수 있는 유용한 기능이다.A2. 이 때 인자란 parameter 또는 매개변수라고도 부를 수 있는데, 쉽게 말해 해당 함수에 집어 넣는 값이다. 숫자가 될 수도 있고 변수가 될 수도 있다. 점프 투 파이썬에서는 과일 주스를 만들 때 사용하는 과일로 설명했다.
A3. if문의 기본식은 간단하고 직관적이라 기본식 하나만 보면 무슨 소리인지 알 수 있다.
if name=='Alex': print('Hi, Alex!') elif name=='Alice': print('Hi, Alice!') elif name=='Tom': print('Hi, Tom!')
난 처음에 elif를 보고 당연히 오타라고 생각했던 적이 있는데, else if의 줄임말이었다.
(참고로 보수적인 자바에서는 else if를 그대로 적고,
PL/SQL에서는 elsif라고 적는데 이건 정말 처음 봤을 때는 오타라고 확신했었다. 근데 오타 아님.)A4. 지금도 살짝 헷갈리긴 하는데, 이 리턴은 '돌려준다' 혹은 '해당 함수를 호출한 곳으로 돌아간다'의 의미로 사용된다. 이 문제에서는 투입한 매개변수로 계산식을 진행한 후, 그 값을 이 함수의 최종값으로 돌려줘라는 의미로 사용되었다. (🍎 개인적으로 자바 때부터 리턴의 의미가 자꾸 헷갈려서 곧 이건 따로 블로깅할 예정)
이런 기본 개념을 머리에 숙지한 이후 내가 내놓은 답은 이렇다.
def is_okay_to_drive(who):
if who == "son":
return "Nope!"
if who == "dad":
return "Good!"
if who == "grand father":
return "Be careful!"
else:
return "Who are you?"
참 간단하지만 알고보면 많은 개념이 들어가있는 문제였다.
200625 추가