파이썬 프로그래밍 시작 (5) 연습문제 : 함수 만들기

파이썬 프로그래밍 시작 (5) 연습문제 : 함수 만들기

파이썬 프로그래밍을 시작한 이래 지난 포스팅까지 변수, 타입, 조건문, 그리고 함수의 기본개념까지 배웠습니다. 이번에는 지금까지 배운 것을 하나의 함수로 만들어보는 연습을 해보겠습니다. 파이썬 함수 만들기 총 복습의 개념입니다.



글의 순서

파이썬 프로그래밍 시작하기 : replit 로그인
파이썬 함수 만들기를 위한 복습
파이썬 프로그래밍 연습 주제 : 식약처에서 권고하는 1일 카페인 최대 섭취량
파이썬 프로그래밍 연습


파이썬 프로그래밍 시작하기 : replit 로그인

리플(http://repl.it)에 로그인합니다.
로그인하고 난 후 보이는 화면의 중앙 상단에 ‘+new repl’ 버튼이 있습니다. 이 버튼을 클릭하면, ‘New repl’ 창이 뜨는데 여기서 프로그래밍 언어로 파이썬(Python)을 선택합니다. 파이썬 선택 후 ‘Creat Repl’ 을 클릭합니다.

이 과정을 거치면 지난 포스팅에서 보셨던 코딩 환경이 나타나는데, 역시나 3개의 창이 보입니다. 창의 배치는 달라질 수 있습니다만, 그 3개의 창은 각각 코드를 담고 있는 파일이름이 있는 창, 코드를 편집할 수 있는 창, 코드 실행결과를 확인할 수 있는 창(=터미널)으로 구성되어 있습니다.



파이썬 함수 만들기를 위한 복습

(1) 변수 (variable)

변수는 변할 수 있는 값을 의미합니다. x, y 와 같은 알파벳 기호를 이용합니다만, 변수가 될수 있는 문자의 조합은 무한합니다. 변수01 코드에서는 변수에 값을 할당하는 방법과, 변수에 할당된 값을 실제로 확인하는 방법을 보여줍니다. 첫 번째 줄의 x = 3을 보겠습니다. 등호 ‘=’가 있어서 ‘같다’ 라고 생각하실 수 있겠으나, x 라는 그릇에 3이라는 값을 담으라는 의미입니다. 변수는 그릇이고, 값은 그릇에 담기는 음식이라고 생각하시면 쉬울 것 같습니다.

변수01 이라는 코드는 ‘x에 3을 담고, y에 4를 담은 후, x, y에 담겨있는 값을 출력해줘라(보여줘라)’를 의미합니다. 변수에 담긴 값을 보는데 가장 쉬운 방법이 print를 이용해서 출력해 보는 것입니다.

실습코드 : 변수01

x = 3
y=4

print(x)
print(y)

(2) 조건문 (if, elif, else)

‘어떤 조건이 참이면 A를 하고, 어떤 조건이 거짓이면 B를 해라’ 와 같은 문장을 실행시키느 것이 조건문입니다. if, elif, else 와 같이 여러 조건들을 설정할 수가 있어서 복잡한 문제를 해결하는데 꼭 필요한 구문입니다. 조건문07 코드는 세 개의 조건을 설정한 경우를 보여주고 있습니다. 만약 2개의 조건만 사용한다면, elif를 제외시키면 되고, 1개의 조건만 사용한다면 elif, else를 모두 없애면 됩니다. 그렇다면 더 많은 조건이 필요하다면 어떻게 해야 할까요? elif를 필요한 만큼 추가하면 됩니다.

실습코드 : 조건문07

x=3

 if x>5:
   print("#34;Yes")
 elif x==3:
   print("Great")
 else:
   print("Good")

(3) 함수(function)

함수는 반복되는 코드를 모아놓은 것입니다. 함수는 ‘def’로 시작하는데, definition을 의미합니다. def를 쓰고 함수이름을 써주면 함수가 됩니다. 함수는 파라미터(parameter) 또는 아규먼트(argument)라고도 불리는 인자를 넘겨받을 수 있습니다.

함수를 선언할 때 def chat(): 와 같이 def, 함수이름, 괄호, 콜론이 필요한데, 인자를 함수에 넘겨줄 때 괄호()를 이용합니다. 함수09 코드에서 함수를 정의하는 방법과, 인자를 넘겨주는 모습을 화인할 수 있습니다. 아래 코드는 chat이라는 함수를 먼저 선언해주고 있습니다. def chat();로 함수를 선언해주면, 함수 안에 있는 print 시작은 def보다 한 칸 더 들어가야 합니다. 함수09 코드에서 chat이라는 함수를 선언한 것과, chat이라는 함수를 부르는 방법을 유심히 봐 주시기 바랍니다.

실습코드 : 함수09

def chat(name1, name2, cup_number):
  print("%s : 언니 하루에 아메리카노 몇 잔 마셔?" %name1)
  print("%s : 나? 아메리카노 %d잔" %(name2, cup_number))

chat("현아","사랑", 2)
chat("민서","서윤", 3)


파이썬 프로그래밍 연습 주제 : 식약처에서 권고하는 1일 카페인 최대 섭취량

카페인은 깨어있게 만들어서 집중하는데 도움이 됩니다. 그래서 공부할 때 카페인의 도움을 받는 분들이 많은데요. 청소년에게 카페인은 신경 써야 할 물질입니다. 무엇보다 중독의 위험이 있기 때문입니다. 그래서 식품의약품안전처에서는 청소년의 1일 최대섭취량을 몸무게 1 kg 당 2.5mg 으로 권고하고 있습니다. 성인의 경우 400mg입니다. 임산부인 경우는 300mg으로 권고하지만, 실제로는 카페인을 멀리하는게 좋습니다. 태반으로 가는 혈류량을 감소시키기 때문입니다.


파이썬 프로그래밍 연습

변수, 함수, 조건문을 써서 카페인을 주제로 하는 파이썬 프로그래밍을 해 보겠습니다.

(1) 알고리즘 구상 : 식약처 권고 1일 카페인 최대섭취량을 출력하는 프로그램

나이와 몸무게를 입력하면 식약처에서 권고하는 1일 카페인 최대섭취량을 출력하는 프로그램을 만들어 보겠습니다. 프로그램을 만들 때 어떤 순서로 만들어 나갈지를 미리 구상해야 합니다. 이와 같이 어떤 문제를 해결하기 위한 절차나 방법, 명령어들의 집합을 알고리즘이라고 합니다.

알고리즘 : 카페인 권고량 함수

이름, 나이, 몸무게를 받는다.

나이가 14세 미만이면,
  1일 카페인 최대 섭취량 : 0mg
나이가 14세 이상, 20세 미만이면,
  1일 카페인 최대 섭취량 : 몸무게 × 2.5mg
나이가 20세 이상이면,
  1일 카페인 최대 섭취량 : 400mg

출력 : “식약처에서 권고하는 당신의 1일 카페인 최대 섭취량은 000.00 mg 입니다.”

그런데, 위의 알고리즘에서는 임산부에 대한 카페인 최대섭취량을 알려주는 인자(parameter)를 받을 수 없습니다. 일단 여기서는 ‘임산부라면 카페인을 섭취하지 않는 게 좋습니다.’를 맨 먼저 출력하는 것으로 프로그램을 구성해 보겠습니다.

(2) 파이썬 프로그래밍

위에서 만든 알고리즘을 연습코드01 에 구현해 보았습니다. 나이와 몸무게를 받은 후, 식약처에서 권고하는 1일 카페인 최대 섭취량을 출력하는 프로그램입니다. caffein_per_day라는 함수를 만들었습니다. 이 함수는 age, weight를 인자로 받은 후 나이에 따라 카페인 권고량 caffpd를 계산한 후 이 값을 함수값으로 돌려줍니다.

실제 프로그램을 실행시키는 것은 x = caffein_per_day 부분입니다. 연습코드01에서는 나이 17, 몸무게 50을 인자로 쓰고 있습니다. 여기서 나이와 몸무게를 바꿔보면, 청소년에 해당하는 14세부터 19세까지는 몸무게에 2.5를 곱한 값을 함수로부터 돌려받는 것을 알 수 있습니다. 이 함수값을 변수 x에 담아 놓은 후 출력문(print)에서 x를 출력합니다. x를 출력할 때 %f 가 나왔는데요. 이는 소수점이 있는 실수형으로 출력하라는 의미입니다.

연습코드01

def caffein_per_day(age, weight):
  if age <14:
   caffpd = 0
  elif age >= 14 and age < 20:
   caffpd = 2.5*weight
  else:
   caffpd = 400
  return(caffpd)

x = caffein_per_day(17, 50)
print("식약처에서 권고하는 당신의 카페인 1일 최대 섭취량은 %f mg입니다." %x)
print("그런데 만약 임산부라면 카페인을 섭취하지 않는 게 좋습니다.")

print를 이용한 출력 형식을 잠시 살펴보겠습니다. 연습코드01에서 실수형을 %f로 나타낸 것을 보셨습니다. 기본적으로 소수점 이하 6자리까지 써줍니다. 만약 소수점 둘째자리까지만 쓰고싶다면 %f를 %0.2f로 바꾸면 됩니다. 여기서는 소수점 첫 번째까지만 써 보겠습니다. 만약 %f를 %d로 바꾼다면 소수점 이하 값이 없어진 정수형으로 출력되는 것을 확인 할 수 있습니다.

연습코드02

def caffein_per_day(age, weight):
  if age <14:
   caffpd = 0
  elif age >= 14 and age < 20:
   caffpd = 2.5*weight
  else:
   caffpd = 400
  return(caffpd)

x = caffein_per_day(17, 50)
print("식약처에서 권고하는 당신의 카페인 1일 최대 섭취량은 %0.1f mg입니다." %x)
print("그런데 만약 임산부라면 카페인을 섭취하지 않는 게 좋습니다.")


마치며 …

이번 포스팅에서는 변수, 타입, 조건문, 그리고 함수를 이용하여 파이썬 프로그래밍 연습을 해보았습니다. 식약처에서 권고하는 1일 카페인 최대섭취량이 청소년의 경우 몸무게에 따라 달라진다는 것을 조건문으로 구현하였습니다. print문에서 실수형 출력형식인 %f, %0.1f에 대해서 익숙해지셨길 바랍니다.

 

 

함께 참고하면 더 좋은 글 :
1. 파이썬 프로그래밍 시작하기 (1) 온라인 프로그래밍 환경 replit
2. 파이썬 프로그래밍 시작 (2) 변수, 타입, 문자열 실습
3. 파이썬 프로그래밍 시작 (3) 파이썬 함수 실습
4. 파이썬 프로그래밍 시작 (4) 조건문
5. 파이썬 데이터 분석! 데이터 분석을 위한 코딩언어 파이썬
6. 애플 실리콘 M1 시리즈 비교 : M1 Pro, M1 Max, M1 Ultra
7. 디스코드 메신저로 만드는 알림 봇 : 파이썬 함수 예제

 


참고자료

테크보이 워니(2020), 코딩 1시간만에 배우기 – 파이썬 (ft. 실리콘밸리 엔지니어)

 

Leave a Comment