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. wiseman
    190418 1136
  2. gogo
    190410 1544
    완료. 감사합니다
  3. Hotak Choi
    190406 이번꺼는 기네요!!
  4. 김동현
    루비에서 매개변수값에 들어갈 수 있는 값들이 뭐가 잇죠?
  5. huyk
    190330완료! 감사합니다
  6. 호두
    고맙습니다.
  7. CarryKim
    잘 봤습니다^^
  8. LeeHope
    19.3.9 완료! 감사합니다
  9. hystu2009
    생생하고 명확한 강의에, 감사의 말씀 올립니다.^^
  10. kmw8462
    감사합니다.
  11. 주재윤
    이해 OK!!!
  12. 주재윤
    이해 OK!!!
  13. 헬로우
    이해 되었습니다. !!
  14. 김정석
    이해 감사 !
  15. HyoSub Shin
    그렇다고 해주세요... 하실 때 빵터졌네요ㅋㅋㅋ

    인간미..
  16. 루이보스라떼
    18.11.25.
  17. 닐반
    2018. 10. 10.
  18. 김수
    20180906 고마워용
  19. 양디비
    2018-08-19 함수 완료! 강의 감사합니다.
  20. jinnie0820
    Done!
  21. 유닉스가이
    Thank you
  22. 해릭
    180711 감사합니다.
  23. 준혁짱짱맨
    시작 합니다!!
  24. Ji Yeoun Park
    2018.6.24 감사합니다. 381번
  25. Junbeom Jeong
    잘 봤습니다. 6월 17일 완료
  26. Jaeduk Jang
    완료했습니다. 감사합니다.
  27. 저도 배우는 입장이라 잘은 모르지만...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 를 쓰고 아이디를 틀리게 되면 아무것도 출력되지 않습니다.
        • dlrbrhkdww@hotmail.com
          return false 쓰는이유야 프로그램을 종료시켜서 그뒤에것들을 안나오게 하는것인데 return false 부분코드를 지워도 who are you 가 나오지않네요
          그럼애초에 return false 라는코드는 필요없어도 되는거아닌가요 ?
          return false 가잇어도 제대로되고 없어도 제대로 작동외는데 잇는이유를 잘 이해를못하겟네요
        • GoldPenguin
          완료했습니다.
        • 김태윤
          함수 완료!
        • hello world~
          함수(function) 완료
          감사합니다~
        • 파이떤
          for 문에서 가지고있는 값을 돌리고, 거기서 입력한 값과 같느냐를 확인해주려고 member == _id 를 지정해주는겁니다.
          예를들어 님이 로또를 한다 가정하고, 30번 번호를 입력하고 그 30번 공을 가지고 있습니다. 그리고 추첨기계를 1-45번 공을 순서대로 확인해서 같은게 있냐 확인하는겁니다.
          당신이 가지고 있는 공 = [30]
          추첨기계공=[1,2,3,4,5,,,,,,,,,,44,45]

          30==1? who are you
          30==2? who are you
          .
          .
          .
          30==30? hello
          대화보기
          • J.Y.Oh
            좋은 정리 감사드립니다. 많이 배우고 갑니다.
          • ikjus1
            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?')

            for member in members:
            ----if member==_id: => 만약 member 에 있는 인자가 _id와 같다면 결과값이 True다

            라고 저는 생각햇는데 최초에 input_id 값이 무슨 값을 넣어서 member 인자와 _id가 같을수 없는것 아닌가요??? _id값을 설정하는 곳이 if login(input_id):라는 곳에서 최소에 넣은 input_id값이 =>_id=[]값으로 들어가서 Hello, input_id=[최초값]이 나오느것 아닌가요..? 이해가 안가네요...

            요지는 for문 에서 member == _id를 왜 지정했는 가입니다 _id값이 =[] 항상 지정되지 않아서 member==_id 이 될수없는것아닌가요?
          • 미림_likelion
            수강 완료했습니다. 감사합니다.
          • bumdori2
            else 구문에서 리턴을 해버려서 그렇습니다.
            else 구문에 암것도 안쓰시면 되요.
            대화보기
            • 조유빈
              (첫번째 질문에 대해서만 답글 달겠습니다.)

              많이 헷갈리는 부분이며, 사람이 보기엔 한끗 차 같지만
              컴퓨터는 전혀 다르게 인식하고 작동하는 대표적인 예입니다.

              for 구문을 통해서
              'member'라는 object는
              members list 내부의 sy, hj, hw를
              순차적으로 가져다쓰는데요

              즉,

              member = sy
              member = hj
              member = hw

              가 for 구문 내에서 차례대로 돌게 됩니다.

              1) sy를 썼을 경우

              member = sy
              → 조건문 비교 sy == sy
              → return True (바로 함수 종료)
              → login(input_id) = True
              → print("hello"+input_id)실행

              (문제없어보입니다만,,,,,질문하신 바와 같이 아래가 문제입니다.)

              2) hj(혹은 hw)를 썼을 경우
              member = sy (← for in 구문은 상술한 바와 같이 list의 값을 처음부터 차례차례 모두 데려옵니다.)
              → 조건문 비교 sy == hj
              → if 뒤의 값 False
              → else로 이동(***)
              → return False (함수 종료)
              → login(input_id) = False
              → print("누구세요") 실행

              따라서 (***)부분은 우리가 의도한 바가 아니며,
              for 구문이 첫값인 sy외에 나머지 hj, hw도 가져올때까지는
              아직 False를 return하면 안되겠죠?
              (말하자면 for in 구문이 members 내부의 값을 다 찾는 동안 '기다려줘야' 합니다.)

              즉, False가 return되어야할 시점은 for in 구문이 종료된 이후입니다.
              대화보기
              • dkfdktjanjgkrp
                2가지 질문을 하려고 합니다.. 혹시 아시는 분 계시면 답글 부탁드려요~
                1. input_id= input("아이디를 입력해주세요.\n")
                def login(_id):
                members=['sy', 'hj', 'hw']
                for member in members:
                if member==_id:
                return True
                else:
                return False

                if login(input_id):
                print("hello"+input_id)
                else:
                print("누구세요")

                => 여기서 for문 안에 else: return false를 쓰면 'sy'일때만 출력값이 hello sy이 나오고 'hj', 'hw'는 누구세요. 가 나오네요 ㅠㅠ 혹시 왜 그런지 로직을 설명해주시면 감사하겠습니다

                2.
                input_id= input("아이디를 입력해주세요.\n")
                def login(_id):
                members=['sy', 'hj', 'hw']
                for member in members:
                if member==_id:
                return True

                if login(input_id):
                print("hello"+input_id)
                else:
                print("누구세요")
                => 동영상 강의는 for 이 끝날 때, return false를 했는데, return false를 굳이 입력하지 않아도 결과가 동일하게 출력되더라구요.. 꼭 return false를 해야하나요???
              • JustStudy
                return 값은 그 함수가 수행한 후 함수명의 값으로 되돌려 주는 값이거든요, print나 put과 같이 화면에 값을 찍어 주는 것이 아니죠.
                login()함수를 호출했을 경우 return True라고 한다면, login()의 값이 True인 것과 같습니다.
                따라서, True나 False를 화면에 찍어 주려면, print(login(input_id))라고 해야 하겠죠.
                대화보기
                • NoobUnityStarter
                  제가 잘 이해했는지는 모르겠네요, 아시는분 계씬다면 지적 부탁드립니다.
                  https://youtu.be......HHs

                  제가 유트브로 한번 아는데로 설명해봤습니다.
                버전 관리
                egoing
                현재 버전
                선택 버전
                graphittie 자세히 보기