" async="async"> ', { cookie_domain: 'auto', cookie_flags: 'max-age=0;domain=.tistory.com', cookie_expires: 7 * 24 * 60 * 60 // 7 days, in seconds }); CheckIO(python)-Fizz Buzz 문제

게임 프로그래밍/Python

CheckIO(python)-Fizz Buzz 문제

Alexu 2018. 7. 30. 14:35
반응형

요즘은 뭔가 배우기 참 좋은 시대다.
파이썬 기초만 학습하고 나서 실력을 키우려고 하는데 Check IO 사이트를 추천받아서
시작해보았다.

Check IO (https://checkio.org/)








들어가보면 위와같은 창을 만날 수 있는데, 언어는 자바스크립트와 파이썬을 지원한다.

게임은 Checkio라고하는 문제 풀이 게임과 엠파이어 코드라고 하는 시뮬레이션 게임 같은게 있다.
내가 시작한건 CheckiO - Python이다.

Python
메뉴에 들어오면 위와 같이 섬들이 보인다. 등급에 따라서 들어갈 수 있는 섬이 있는데
이제 막 시작했기 때문에 Elementary로 가야한다.




문제들이 쭉 나열되어 있고 원하는 문제를 골라 풀면된다.
이제 막 시작 했기 때문에 초딩 등급이다.




CheckIO에서 첫 번째로 풀어볼 문제

로봇에게 나누기를 가르친다.

  • 숫자를 입력해서3과 5로 나눌 수 있으면 Fizz Buzz
  • 3으로만 나눌 수 있으면 Fizz
  • 5로만 나눌 수 있으면 BUZZ
  • 모두 아니면 입력한 숫자를 토해낸다.

나머지 연산에 대한 문제다.
하지만 파이썬의 방향성은 하나의 문제를 푸는 하나의 아름...어라 이거 아닌데.

그냥 쭉 받아서 나열하려다가 괜히 다르게 해본다고 리스트형으로 받아서 덧셈 놀이를 해봤다.
(Pearl의 방향성이다. 하나를 푸는 여러가지 방법)

# Your optional code here
# You can import some modules or create additional functions


def checkio(number:int)-> str:
    checkn = [0,0]
    if number%3 == 0:
        checkn[0] = 1
    if number%5 == 0:
        checkn[1]= 2

    checksum = checkn[0] + checkn[1]
    
    if checksum == 1:
        return "Fizz"
    elif checksum == 2:
        return "Buzz"
    elif checksum == 3:
        return "Fizz Buzz"

        

    # Your code here
    # It's main function. Don't remove this function
    # It's using for auto-testing and must return a result for check.
    # replace this for solution
    return str(number)

# Some hints:
# Convert a number in the string with str(n)

# These "asserts" using only for self-checking and not necessary for auto-testing
if __name__ == '__main__':
    assert checkio(15) == "Fizz Buzz", "15 is divisible by 3 and 5"
    assert checkio(6) == "Fizz", "6 is divisible by 3"
    assert checkio(5) == "Buzz", "5 is divisible by 5"
    assert checkio(7) == "7", "7 is not divisible by 3 or 5"
    print("Coding complete? Click 'Check' to review your tests and earn cool rewards!")




성공~ 5포인트의 경험치를 받았다.

다른 사람들이 푼 방식도 좀 읽어봤다... 근데...

한 줄 요약

def checkio(n):
    return 'Fizz'*(not n%3)+' '*(not n%15)+'Buzz'*(not n%5) or str(n)

lambda 함수사용

checkio=lambda n:("Fizz "*(1-n%3)+"Buzz "*(1-n%5))[:-1]or str(n)

와... 열심히 해야겠다.

P.S 번외

....png

........

반응형

'게임 프로그래밍 > Python' 카테고리의 다른 글

Jupyter notebook 기본 브라우져 바꾸기  (4) 2019.01.31
아나콘다와 파이참 연결  (0) 2019.01.13
CheckIO-First Word  (0) 2018.08.17
CheckIO(python) - Say Hi 문제  (0) 2018.07.30
CheckIO-Correct_sentence 문제  (0) 2018.07.30