파이썬 0부터 입력된 정수까지의 합을 구하는 함수 만들기.

조회수 2444회

정수를 매개변수로 전달받아 1보다 큰 정수이면 1부터 전달된 정수까지의 합계를, 0보다 작으면 -1부터 전달된 정수까지의 합계를 구하는 one2n_sum2()함수를 선언하고 싶습니다. 그리고 정수를 입력받아서 함수를 호출하고 결과를 반환받아 출력하고자 합니다. 그리고 0을 입력받으면 0이 입력되었다고 출력하고 싶은데 elif 부분에서 오류가 뜨는데 피드백 받을 수 있을까요?

def one2n_sum2(n):
    if n>1:
        j=0
        for i in range(1, n, 1):
            j=j+i
    return j
    print('1 --', n, '=', j)

    elif n<0:
        h=0
        for i in range(-1, n,-1):
            h=h+i
    return h
    print('-1 --', n, '=', h)

    else:
        print('입력된 수가', n, '입니다.')

a=int(input('정수 : '))
one2n_sum2(n)

2 답변

  • def one2n_sum2(n):
        if n>1:
            j=0
            for i in range(1, n+1, 1):
                j+=i
            print('1 --', n, '=', j)
            return j
    
        elif n<0:
            h=0
            for i in range(-1, n-1,-1):
                h+=i
            print('-1 --', n, '=',h)
            return h
    
        else:
            print('입력된 수가', n, '입니다.')
    
    a=int(input('정수 : '))
    one2n_sum2(a)
    

    print와 return의 순서를 바꾸시고 print와 return 모두 if문 안에 들어있어야 합니다

    그리고 마지막 두줄보시면 정수를 변수a로 받으셨는데 함수에 넣는 변수는 n인것도 고쳐야합니다

    +) for문에도 인덱스로 생각하시면 양수 부분은 n+1로 음수 부분은 n-1로 고쳐주시는게 좋겠네요

    +) j = j + i 대신 j += i로 작성하시면 더 깔끔한 코드를 작성할 수 있습니다.

    • (•́ ✖ •̀)
      알 수 없는 사용자
  • 아래를 봐주세요. 제가 이해한 게 맞나요?

    1. 경우의 수는 3가지이다.
      • n<0
      • n>1
      • n == 0 || n == 1
    2. n == 1일 땐 아무 일도 하지 않는다.
    3. 기본적으로 이 함수는 1부터 n까지의 자연수의 합을 돌려주는 함수이며, 따라서 등차수열 합 공식을 이용해 (n * (n+1))/2를 계산하면 되는데, n이 음수일 때는 여기에 -1을 곱해서 돌려줘야 한다.
      • 사실 파이썬에서는 sum(range(1, n+1))하면 된다.

    3번에 부연 설명을 하자면 이건 수학적 공식을 도입해서 해결 가능하고 그래야 하는 문제라고 봅니다. n이 정수인 한 이 문제는 모든 정수에 대한 일반 해법이 존재하는 문제라고 간주하는 편이 낫기 때문이지요. (더 간결하고 논리정연해지며 대부분의 경우 성능도 올라감) 왜 이런걸 루프연산 써서 해결하라고 과제들을 내주시는지 모르겠네요 차라리 별찍기를 내주지…

    그리고 일단 주어진 함수의 Indentation이 틀렸습니다. 한 구간만 보자면:

    def one2n_sum2(n):
        if n>1:
            j=0
            for i in range(1, n, 1):
                j=j+i
            print('1 --', n, '=', j) # n>1일때 일어나야 하는 일이므로
            return j # 위의 if 안에 있어야 함
    

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

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

(ಠ_ಠ)
(ಠ‿ಠ)