python 메소드 실습

조회수 1843회

이미지

특별한 메소드 실습 강의인데요

None가 왜 나오는건지 그리고 몸무게 수치는 walk -0.1 eat+0.1인데 뒤의 소숫점도 궁금합니다.

뒤의 소숫점은 이전의 강의에서 들었던거 같은데 기억이 잘 안나 한번더 질문하게 되었습니다...

  • (•́ ✖ •̀)
    알 수 없는 사용자

2 답변

  • "None"은 print하려고 한 function의 리턴값입니다. 만약에 해당 function에서 return 명령문을 사용하지 않으면 return None 이 function의 끝에 묵시적으로 추가된답니다.

    그리고 68.7 - 0.1의 결과가 68.60000000000001로 출력되는 것은 binary floating-point의 기본적 특성이지요. Python의 버그도 아니고, 님의 코드의 버그도 아니지요. floating-point 연산을 지원하는 모든 언어에서는 똑같은 결과를 얻을 수 있을 것입니다^

    • (•́ ✖ •̀)
      알 수 없는 사용자
  • class Human():
    
        def __init__(self, name, weight):
            self.name = name
            self.weight = weight
    
        def __str__(self):
            return "{} (몸무게 {}kg)".format(self.name, self.weight)
    
        def eat(self):
            self.weight += 0.1
            print("{}가 먹어서 {}kg이 되었습니다.".format(self.name, self.weight))
    
        def walk(self):
            self.weight -= 0.1
            print("{}가 걸어서 {}kg이 되었습니다.".format(self.name, self.weight))
    
    # 아래에서 person을 이름과 몸무게를 가지는 Human클래스의 인스턴스로 만들어보세요.
    person = Human("하하", 68.7)
    print(person)
    print(person.walk())
    print(person.eat())
    print(person.walk())
    

    return값이 문자열화 해주는 함수에 들어있는데 walk와 eat에도 return값을 줘야하나요? (문자열화 하는 str 이것도 잘 이해는 안가지만..)

    • (•́ ✖ •̀)
      알 수 없는 사용자
    • 이 경우는 person.walk(); person.walk(); person.eat() 처럼 써 주세요 메소드 안에서 print하니 굳이 뭔가 리턴하지 않아도 됩니다. 알 수 없는 사용자 2016.5.23 11:13

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)