본문 바로가기
파이썬

파이썬 함수 문제 5개

by demianpark127 2024. 12. 1.
SMALL

문제1: 재귀를 이용한 리스트 합계 계산

다음 조건을 만족하는 재귀 함수를 작성하세요:

  1. 함수 이름은 recursive_sum입니다.
  2. 이 함수는 정수로 이루어진 리스트를 입력받아 모든 요소의 합을 반환합니다.
  3. 리스트가 비어있으면 0을 반환해야 합니다.
  4. 재귀를 사용해 문제를 해결해야 합니다.

추가 조건

  • 반복문을 사용하지 마세요.
  • 함수 내부에서 재귀 호출만으로 문제를 해결하세요.

 

 

코드 설명

  1. Base Case:
    • 입력받은 리스트가 비어있는 경우(not numbers), 합이 없으므로 0을 반환합니다.
  2. Recursive Step:
    • 리스트의 첫 번째 요소 numbers[0]를 가져와 나머지 요소들(numbers[1:])의 합과 더합니다.
    • 나머지 리스트에 대해 다시 recursive_sum을 호출합니다.
  3. 작동 과정:
    • 리스트 [1, 2, 3, 4, 5]는 아래와 같은 과정을 거칩니다:
      1. 1+recursive_sum([2,3,4,5])
      2. 1+(2+recursive_sum([3,4,5]))
      3. 1+(2+(3+recursive_sum([4,5])))
      4. ...
      5. 최종적으로 합산이 완료되어 반환됩니다.

 

 

 

문제2: 사용자 입력을 활용한 리스트 합계 계산

다음 조건을 만족하는 프로그램을 작성하세요:

  1. 사용자가 입력한 숫자들의 합을 계산하는 프로그램입니다.
  2. 사용자로부터 쉼표(,)로 구분된 숫자들을 입력받습니다.
  3. 입력받은 숫자들을 리스트로 변환한 뒤, 모든 숫자의 합을 출력합니다.
  4. 사용자가 아무것도 입력하지 않으면, "입력값이 없습니다."라는 메시지를 출력합니다.

 

 

추가 조건

  • input() 함수를 사용해 사용자 입력을 받으세요.
  • 숫자로 변환하기 전에 입력값 검증을 통해 비어있거나 잘못된 입력을 처리하세요.

 

코드 설명

  1. 사용자 입력 받기:
    • input() 함수로 쉼표로 구분된 숫자를 입력받습니다.
    • strip()을 사용해 공백을 제거하여 정확한 입력 검증을 돕습니다.
  2. 입력값 확인:
    • 입력값이 비어있다면 "입력값이 없습니다." 메시지를 출력하고 프로그램을 종료합니다.
  3. 숫자 변환 및 합계 계산:
    • split(",")으로 쉼표를 기준으로 입력값을 나누어 리스트로 만듭니다.
    • 리스트의 각 요소를 int()로 변환하여 숫자 리스트를 생성합니다.
    • sum()을 사용해 숫자들의 합을 계산합니다.
  4. 예외 처리:
    • 숫자가 아닌 값이 입력되면 ValueError가 발생하므로, "잘못된 입력입니다." 메시지를 출력합니다.

 

 

문제3: 콜백 함수로 숫자 연산하기

다음 조건을 만족하는 프로그램을 작성하세요:

  1. 콜백 함수를 사용하여 숫자 연산을 수행합니다.
  2. 함수 이름은 operate이며, 다음 매개변수를 가집니다:
    • 첫 번째 매개변수: 숫자 a
    • 두 번째 매개변수: 숫자 b
    • 세 번째 매개변수: 연산을 수행할 콜백 함수 callback
  3. 콜백 함수는 두 숫자 a와 b를 입력받아 연산 결과를 반환합니다.
  4. 사용자로부터 연산 종류(덧셈, 뺄셈, 곱셈, 나눗셈)를 입력받아 적절한 콜백 함수를 호출합니다.
  5. 나눗셈 연산에서 0으로 나누는 경우 "0으로 나눌 수 없습니다."라는 메시지를 출력합니다.

 

 

 

 

코드 설명

  1. 콜백 함수 정의:
    • add, subtract, multiply, divide 함수는 각각 덧셈, 뺄셈, 곱셈, 나눗셈을 수행합니다.
    • divide 함수는 0으로 나누는 경우 예외 처리를 합니다.
  2. operate 함수:
    • 입력받은 숫자와 콜백 함수를 매개변수로 받아 연산 결과를 반환합니다.
  3. 사용자 입력 처리:
    • 사용자로부터 연산 종류와 숫자를 입력받습니다.
    • 연산 종류는 operations_map 딕셔너리를 통해 적절한 콜백 함수와 매핑됩니다.
  4. 예외 처리:
    • 나눗셈에서 0으로 나눌 경우 메시지를 출력하고 결과를 반환하지 않습니다.
    • 잘못된 연산 종류가 입력되면 에러 메시지를 출력합니다.

 

 


문제 4 : (학원 문제)

 

#def

 

#ex direction이 1이면 1번의 첫번째 삼각형, 2면 두번째 삼각형

 

#  *  ***

# **   **

#***    *

 

 


문제5 : (학원문제) 재귀로 피보나치 수열 구현하기

#1, 1, 2, 3, 5, 8, 13, 21 ....

 

#pibo(1) = 1

#pibo(2) = 1

#pibo(3) = 2

#pibo(4) = 3

#...

#pibo(n) = pibo(n-1) + pibo(n-2)

 

 

 

LIST