장기수
장기수
  • 2016.4.7 02:24
  • 조회수 266
  • 답변수 3
장기수
장기수
  • 2016.4.7 02:24
  • 조회수 266
  • 답변수 3

문제가 너무 어렵습니다.

정말 return 10 같은 것을 입력해서 서버에서 주는 값이랑 같은 값이 나오길 기대해보라는 얘기인지

걸어 놓으신 hashcode 링크에 가서 힌트를 얻어와 코드를 작성하라는 건지

감을 못잡겠네요...

정말로 운을 시험해서 같은 숫자가 나올때까지 계속 제출하란 얘기인가요?

maybe_lucky.py
from random import randint

def maybe_lucky():
    return randint(1,100)
  • #파이썬 입문
  • #당신의 운을 테스트해봅시다

3 답변

  • 정두식
    정두식
    • 2016.4.7 10:23

    이 문제는 hashcode의 힌트를 얻어와서 코드를 작성해야 합니다.

    == 연산을 할 때는 __eq__메소드로 비교를 하기 떄문에 항상 __eq__가 항상 true를 리턴하는 클래스를 정의하고, 그 클래스의 객체를 maybe_lucky에서 리턴해주면 ==연산자로 같은지를 비교할 때 항상 true가 나오게 됩니다.

    • 감사합니다. 도움이 되었습니다. 제공해 주시는 틀에 'def maybe_lucky():'라고 제시하신게 혼선을 빚지 않나 하는 소견을 말씀드려 봅니다. (제 문제를 이해하는 능력이 조금 떨어져서 그렇게 느낄수도 있지만요.)-장기수
      2017.8.18 11:24
  • Hoyoung Jung
    Hoyoung Jung
    • 2017.6.8 11:16

    ㅎㅎ 저는 정말로 운을 시험해 보기도 했는데 쉽지 않네요.

    첫번째 시도

    from random import randint
    
    def maybe_lucky():
        return 30
    

    몇 번 시도하다 운 좋으면 통과할 수 있습니다.

    작성자 의도

    작성자의 의도는 __eq__를 새로 구현하는 거겠죠. 저는 새로운 클래스를 만들고 __eq__(self, other) 에서 항상 True를 리턴하게 만들어서 테스트를 통과했습니다.

    from random import randint
    
    class myNum:
        def __init__(self, number):
            self.num = number
    
        def __eq__(self, other):
            return True
    
    
    def maybe_lucky():
        # TODO: implement 
        a = myNum(10)
        # ...
    

  • 신우준
    신우준
    • 2017.6.24 09:13

    저는 eq가 이해가 잘 안가서 쉽게 만들었요

    import random

    answer = random.randrange(1,101)
    select = int(input('1부터 100 중에 숫자 하나를 고르세요 >> '))
    def maybe_lucky():
    if select == answer:
    return True
    else:
    return False

    print(maybe_lucky(), answer)

    그런데 작성자 의도와는 달라서 그런지 문제가 통과되지는 않네요ㅎ

답변 쓰기

이 입력폼은 마크다운 문법을 지원합니다. 마크다운 가이드 를 참고하세요.