[Python] 기초 개념: 함수

프로그래밍의 개념함수가 없는 프로그램은 1회용일 뿐

무슨 일을 할 때마다 동작을 하나하나 일일이 알려줘야 한다면 제대로 일을 할 수 없습니다. 그래서 함수가 필요합니다.

함수(Function)

  • 함수는 특정한 목적을 달성하기 위해 필요한 변수, 조건문, 반복문 그리고 다른 함수들을 모아놓은 것입니다.
  • 함수를 사용하지 않으면 컴퓨터가 수행해야 하는 모든 동작을 일일히 지정해주어야 합니다

‘라면 끓이는 방법’을 출력하는 프로그램

  • 우리가 출력하려고 하는 라면의 조리법은 다음과 같습니다.
  • ‘보통’라면인 경우
    1. ‘원하는 라면’을 선택합니다.
    2. ‘적정한 양의 물’을 냄비에 넣고 끓입니다.
    3. 끊는 물에 면과 스프를 넣고, ‘일정 시간동안’ 더 끓입니다.
    4. 기호에 따라 파, 계란 등을 곁들이면 더 좋습니다.
  • ‘비빔’라면인 경우
    1. ‘원하는 라면’을 선택합니다.
    2. ‘적정한 양의 물’을 냄비에 넣고 끓입니다.
    3. 끊는 물에 면과 후레이크를 넣고, ‘일정 시간동안’ 더 끓입니다.
    4. 물을 50ml만 남기고 따라버립니다.
    5. 소스와 잘 비벼 드십시오.
  • 조리하려면 라면은 ‘신라면’, ‘너구리’, ‘스낵면’, ‘짜파게티’입니다.
  • 라면마다 이름, 물의 양, 끓이는 시간이 다릅니다.
    • 신라면: 550ml, 4분 30초, 보통
    • 너구리: 600ml, 5분, 보통
    • 스낵면: 500ml, 2분, 보통
    • 짜파게티: 600ml, 5분, 비빔
noodle_list = [
  ['신라면', '550ml', '4분 30초', '보통'],
  ['너구리', '600ml', '5분', '보통'],
  ['스낵면', '500ml', '2분', '보통'],
  ['짜파게티', '600ml', '5분', '비빔']
]

for i in range(3):
  print("<", noodle_list[i][0], "> 끓이는 법")
  print("1.", noodle_list[i][0], "을 선택합니다.")
  print("2. 물", noodle_list[i][1], "을 냄비에 넣고 끓입니다.")
  print("3. 끓는 물에 면과 스프를 넣고,", noodle_list[i][2], "더 끓입니다.")
  print("4. 기호에 따라 파, 계란 등을 곁들이면 더 좋습니다.\n")

print("<", noodle_list[3][0], "> 끓이는 법")
print("1.", noodle_list[3][0], "을 선택합니다.")
print("2. 물", noodle_list[3][1], "을 냄비에 넣고 끓입니다.")
print("3. 끓는 물에 면과 후레이크를 넣고,", noodle_list[3][2], "더 끓입니다.")
print("4. 물을 50ml만 남기고 따라버립니다.")
print("5. 소스와 잘 비벼 드십시오.\n")
  • 그런데, 누군가 ‘신라면’ 다음에 ‘짜파게티’ 조리법을 먼저 보여주고, 그 다음에 ‘너구리’, ‘스낵면’을 끓이는 방법을 보여달라고 합니다.
  • 그러면 프로그램을 다시 작성해야 합니다.
noodle_list = [
  ['신라면', '550ml', '4분 30초', '보통'],
  ['너구리', '600ml', '5분', '보통'],
  ['스낵면', '500ml', '2분', '보통'],
  ['짜파게티', '600ml', '5분', '비빔']
]

print("<", noodle_list[0][0], "> 끓이는 법")
print("1.", noodle_list[0][0], "을 선택합니다.")
print("2. 물", noodle_list[0][1], "을 냄비에 넣고 끓입니다.")
print("3. 끓는 물에 면과 스프를 넣고,", noodle_list[0][2], "더 끓입니다.")
print("4. 기호에 따라 파, 계란 등을 곁들이면 더 좋습니다.\n")

print("<", noodle_list[3][0], "> 끓이는 법")
print("1.", noodle_list[3][0], "을 선택합니다.")
print("2. 물", noodle_list[3][1], "을 냄비에 넣고 끓입니다.")
print("3. 끓는 물에 면과 후레이크를 넣고,", noodle_list[3][2], "더 끓입니다.")
print("4. 물을 50ml만 남기고 따라버립니다.")
print("5. 소스와 잘 비벼 드십시오.\n")

for i in range(1,3):
  print("<", noodle_list[i][0], "> 끓이는 법")
  print("1.", noodle_list[i][0], "을 선택합니다.")
  print("2. 물", noodle_list[i][1], "을 냄비에 넣고 끓입니다.")
  print("3. 끓는 물에 면과 스프를 넣고,", noodle_list[i][2], "더 끓입니다.")
  print("4. 기호에 따라 파, 계란 등을 곁들이면 더 좋습니다.\n")
  • 함수를 사용하면 이런 일이 발생했을 때 훨씬 쉽게 대응할 수 있습니다.
  • 라면 정보가 주어지면 조리법을 출력하는 printRecipe 라는 함수를 만들어보겠습니다.
def printRecipe(noodle):
  print("<", noodle[0], "> 끓이는 법")
  print("1.", noodle[0], "을 선택합니다.")
  print("2. 물", noodle[1], "을 냄비에 넣고 끓입니다.")
  if noodle[3] == '보통':
    print("3. 끓는 물에 면과 스프를 넣고,", noodle[2], "더 끓입니다.")
    print("4. 기호에 따라 파, 계란 등을 곁들이면 더 좋습니다.\n")
  else:
    print("3. 끓는 물에 면과 후레이크를 넣고,", noodle[2], "더 끓입니다.")
    print("4. 물을 50ml만 남기고 따라버립니다.")
    print("5. 소스와 잘 비벼 드십시오.\n")
  • 이제 새로운 라면의 레시피를 입력해달라는 요구나, 출력 순서를 바꿔달라는 요구에 보다 쉽게 대응할 수 있습니다.
printRecipe(noodle_list[0])
printRecipe(noodle_list[3])
printRecipe(noodle_list[1])
printRecipe(noodle_list[2])
printRecipe(['짜왕', '550ml', '4분', '비빔'])
printRecipe(['무파마', '550ml', '4분 30초', '보통'])

함수의 의미

  • 함수는 프로그램이 실행하는 일련의 동작을 하나의 명령어로 해결할 수 있게 해줍니다.
  • 밥상을 차릴 때마다 ‘숫가락 놔주세요’, ‘젓가락 놔주세요’, ‘물 따라주세요’, ‘반찬 차려주세요’, ‘밥 퍼주세요’를 다 따로따로 이야기해야 한다면 효율성이 매우 떨어질 것입니다.
  • ‘밥상을 차려주세요’라는 한마디로 밥상이 차려져야 합니다.
  • 그래서 함수가 꼭 필요합니다.

위 프로그램들을 실행해보려면 아래 파일을 Google Colab 사이트에서 불러오면 됩니다.

Python_Basic_Function.ipynb