Python & Ruby

함수 (function)

함수란 무엇인가?

함수 만들기

Python

def a3():
    print('aaa')
a3()

Ruby

def a3()
    puts('aaa')
end
a3()

실행결과

aaa

Python | Ruby 

리턴값

Python

def a3():
    return 'aaa'
print(a3())

Ruby

def a3()
    return 'aaa'
end
puts(a3())

실행결과

aaa

Python | Ruby 

입력값

 Python

def a(num):
    return 'a'*num
print(a(3))

Ruby

def a(num)
    return 'a'*num
end
puts(a(3))

실행결과

aaa

Python | Ruby

여러개의 입력값

 Python

def make_string(str, num):
    return str*num
print(make_string('b', 3))

Ruby

def make_string(str, num)
    return str*num
end
puts(make_string('b', 3))

실행결과

aaa

Python | Ruby

로그인 애플리케이션 (루비)

puts("아이디를 입력해주세요")
input_id = gets.chomp()

def login(_id)
  members = ['egoing', 'k8805', 'leezche']
  for member in members do
      if member == _id
          return true
      end
  end
  return false
end

if login(input_id)
  puts('Hello, '+input_id)
else
  puts('Who are you?')
end

 ideone.com

로그인 애플리케이션 (파이썬)

input_id = input("아이디를 입력해주세요.\n")
def login(_id):
    members = ['egoing', 'k8805', 'leezche']
    for member in members:
        if member == _id:
            return True
    return False
if login(input_id):
    print('Hello, '+input_id)
else:
    print('Who are you?')

ideone.com

참고

github.com

댓글

댓글 본문
작성자
비밀번호
  1. 정 준상
    2019/10/12 완료
  2. 가재준
    20190926 완료
  3. 20190818 완료
  4. 허니비
    190807
  5. 미스터안영미
    19.08.06
  6. Perpect
    함수정의{def login(id)}가 되면 그부분을 메모리에 저장해뒀다가
    함수호출{login(input_id)}이 될때, 참조한다고 알고있어요.

    예를들어 영어사전을 읽고 영어공부를 한다고 치면,
    사전을 읽고 영어공부를 하는 상황에서 단어의 뜻을 찾고 싶을 때 다시 사전을 찾는게 아니라
    (언급하신 처음->끝->중간->끝)
    사전을 읽고 영어공부를 하는 상황에서 단어의 뜻을 찾고 싶을 때 자기 뇌(메모리)속에서 찾는거죠
    (처음->끝->메모리(중간아님)->끝)
    대화보기
    • Ray Kim
      잘 듣고 있었다고 생각했는 데 막상 혼자 코드를 작성 해 보려니 조금 문제가 있네요! 이고잉님 말씀대로 천천히 반복해서 한번더 함수파트를 보는게 좋을 것 같아요!
    • Yongsung Kwon
      감사합니다!!
    • 얼그레이
      190602 감사합니다! 여기까지 오니 슬슬 for in문과 def 등 많은 개념이 나와서 헷갈리네요
      그치만 너무 재밌는 거 같아요! 앞으로도 힘내서 완강하겠습니다 :)
    • Sunday
      감사합니다.
    • 임희동
      다시 읽어보니 참 바보같은 질문이네요. 하지만 궁금하긴 하네요 ㅎㅎ
      대화보기
      • 임희동
        좀 바보같은 질문일 수 있지만!

        함수를 정의할 때는 변수를 id로 잡고, 즉 login(id)
        마지막에 결과값을 받는 함수는 변수를 input_id 즉, login(input_id)로 잡으면
        컴퓨터 입장에서는 입력된 값은 input_id로 처리되니, 이 login(input_id)에 어떤 값을 주기 위해서
        그 위에 정의된 함수 login(id)로 되돌아 갔다가 값을 가지고 내려오는 건가요?

        컴퓨터 입장에서 생각하려다보니... 처음->끝(끝에 왔다가 함수가 정의안된걸 알게됨)->중간(이곳에서 함수의 정의에 따라 값을 내놓음)->끝 이런 식으로 되는건가 싶어서요. ㅎㅎㅎ
      • hs4351
        190514 완료 감사합니다
      • wiseman
        190418 1136
      • 190410 1544
        완료. 감사합니다
      • Hotak Choi
        190406 이번꺼는 기네요!!
      • 김동현
        루비에서 매개변수값에 들어갈 수 있는 값들이 뭐가 잇죠?
      • 190330완료! 감사합니다
      • 호두
        고맙습니다.
      • CarryKim
        잘 봤습니다^^
      • LeeHope
        19.3.9 완료! 감사합니다
      • hystu2009
        생생하고 명확한 강의에, 감사의 말씀 올립니다.^^
      • kmw8462
        감사합니다.
      • 주재윤
        이해 OK!!!
      • 주재윤
        이해 OK!!!
      • 헬로우
        이해 되었습니다. !!
      • 김정석
        이해 감사 !
      • HyoSub Shin
        그렇다고 해주세요... 하실 때 빵터졌네요ㅋㅋㅋ

        인간미..
      • 루이보스라떼
        18.11.25.
      • 닐반
        2018. 10. 10.
      • 김수
        20180906 고마워용
      • 양디비
        2018-08-19 함수 완료! 강의 감사합니다.
      • jinnie0820
        Done!
      • 유닉스가이
        Thank you
      • 해릭
        180711 감사합니다.
      • 준혁짱짱맨
        시작 합니다!!
      • Ji Yeoun Park
        2018.6.24 감사합니다. 381번
      • Junbeom Jeong
        잘 봤습니다. 6월 17일 완료
      • Jaeduk Jang
        완료했습니다. 감사합니다.
      • 저도 배우는 입장이라 잘은 모르지만...return 가르쳐주실 때, return값이 나오고 나면 함수가 종료(?)된다고 하셨는데 그래서 exit을 안 붙여도 괜찮은 것 같습니다. 그리고 true가 리턴값으로 나오고 나면 함수는 종료되니까 false는 적용되지 않는 것이구요.
        대화보기
        • 궁금궁금
          def login(_id)

          members = ['egoing', 'k8805', 'leezche']

          for member in members do

          if member == _id

          return true

          end

          end

          return false

          end


          궁금한게 이 코드에서는 왜 return true 다음에 exit 을 쓰지 않나요? 이전 강의에서는 exit을 사용해서 그 다음에 오는 코드가 적용되지 않고 종료되도록 했는데 왜 여기에서는 안 하는지 답이 나오지 않네요ㅠㅠ 이렇게 코드를 쓴다면 return false도 같이 적용될 것 같아 혼선이 생길 것 같은데 강의 상에서는 문제 없이 작동하는 것이 신기합니다
        • 다람쥐
          감사합니다.
        • ddogagi
          음 저는 원래 다른언어를 사용하는 사람이고,
          루비를 공부하려고 듣고 있는사람이라, 루비에서의 규칙은 아직 잘 모르겠지만요..

          함수(메소드)의 경우,
          입력 값은 어떤 형태로 받고, 리턴 값으로 어떤 형태를 드릴께요 하고 약속을 해요.
          약속은 일관성이 있어야 하구요
          (누가 어떤식으로 사용할 지 모르니까, 리턴값은 배열로 드릴께요, 아님, 문자열로 드릴께요,
          boolean형태(true/false)로 드릴께요 란 식으로, 물론, 복합 형태도 있어요!)
          어떤 경우는 리턴값을 주고, 어떤 경우는 안주고 하면,
          함수를 사용하는 쪽에선 무슨 값이 돌아올지 몰라서 당황하게 되잖아요~

          단순 return만 적은경우는, null값을 준건지, false값을 준건지 알 수 없구요
          (이건, 앞으로 프로그램 하다보면 무슨 말인지 알 수 있으실 거에요)

          이번의 경우는 아이디가 있으면 안녕, 없으면, 누구세요 하고 물어보는 처리이지만,

          만약, 아이디가 없는경우, 아이디를 입력해주세요 하는 처리를 할 경우는,
          if !login(input_id)
          puts('아이디를 입력해주세요')
          end
          이런식으로 false인가 아닌가만 알고싶은 경우도 있을수도 있구요

          함수를 작성할 때에는 지금 당장만 사용하는게 아니라 범용성도 생각하면서 작성해야 돼요~
          한번만 쓰고 말 처리라면, 굳이 함수를 만들 필요가 없으니까요
          대화보기
          • 민호
            감사합니다.
          • 성현아빠
            완료
          • 두물
            return값과 변수의 다른점은 무엇인가요?
          • Duke
            Oct 24 2017
          • Gyoil Gu
            ->입력값 부터 공부하기!
          • dlrbrhkdww@hotmail.com
            감사합니다
            그럼 else 라는 조건이 붙어있을때는 굳이 false 를 써도 되지 않아도 되는것인지요 ?
            대화보기
            • Hello
              마지막 if문에서
              else를 써서 그런 것입니다.
              참이 아닌 값들을 모두 else가 처리해 주니까요..

              만약 else 대신
              elif False 를 쓰고 아이디를 틀리게 되면 아무것도 출력되지 않습니다.
            버전 관리
            egoing
            현재 버전
            선택 버전
            graphittie 자세히 보기