SMALL
문제1: 재귀를 이용한 리스트 합계 계산
다음 조건을 만족하는 재귀 함수를 작성하세요:
- 함수 이름은 recursive_sum입니다.
- 이 함수는 정수로 이루어진 리스트를 입력받아 모든 요소의 합을 반환합니다.
- 리스트가 비어있으면 0을 반환해야 합니다.
- 재귀를 사용해 문제를 해결해야 합니다.
추가 조건
- 반복문을 사용하지 마세요.
- 함수 내부에서 재귀 호출만으로 문제를 해결하세요.
코드 설명
- Base Case:
- 입력받은 리스트가 비어있는 경우(not numbers), 합이 없으므로 0을 반환합니다.
- Recursive Step:
- 리스트의 첫 번째 요소 numbers[0]를 가져와 나머지 요소들(numbers[1:])의 합과 더합니다.
- 나머지 리스트에 대해 다시 recursive_sum을 호출합니다.
- 작동 과정:
- 리스트 [1, 2, 3, 4, 5]는 아래와 같은 과정을 거칩니다:
- 1+recursive_sum([2,3,4,5])
- 1+(2+recursive_sum([3,4,5]))
- 1+(2+(3+recursive_sum([4,5])))
- ...
- 최종적으로 합산이 완료되어 반환됩니다.
- 리스트 [1, 2, 3, 4, 5]는 아래와 같은 과정을 거칩니다:
문제2: 사용자 입력을 활용한 리스트 합계 계산
다음 조건을 만족하는 프로그램을 작성하세요:
- 사용자가 입력한 숫자들의 합을 계산하는 프로그램입니다.
- 사용자로부터 쉼표(,)로 구분된 숫자들을 입력받습니다.
- 입력받은 숫자들을 리스트로 변환한 뒤, 모든 숫자의 합을 출력합니다.
- 사용자가 아무것도 입력하지 않으면, "입력값이 없습니다."라는 메시지를 출력합니다.
추가 조건
- input() 함수를 사용해 사용자 입력을 받으세요.
- 숫자로 변환하기 전에 입력값 검증을 통해 비어있거나 잘못된 입력을 처리하세요.
코드 설명
- 사용자 입력 받기:
- input() 함수로 쉼표로 구분된 숫자를 입력받습니다.
- strip()을 사용해 공백을 제거하여 정확한 입력 검증을 돕습니다.
- 입력값 확인:
- 입력값이 비어있다면 "입력값이 없습니다." 메시지를 출력하고 프로그램을 종료합니다.
- 숫자 변환 및 합계 계산:
- split(",")으로 쉼표를 기준으로 입력값을 나누어 리스트로 만듭니다.
- 리스트의 각 요소를 int()로 변환하여 숫자 리스트를 생성합니다.
- sum()을 사용해 숫자들의 합을 계산합니다.
- 예외 처리:
- 숫자가 아닌 값이 입력되면 ValueError가 발생하므로, "잘못된 입력입니다." 메시지를 출력합니다.
문제3: 콜백 함수로 숫자 연산하기
다음 조건을 만족하는 프로그램을 작성하세요:
- 콜백 함수를 사용하여 숫자 연산을 수행합니다.
- 함수 이름은 operate이며, 다음 매개변수를 가집니다:
- 첫 번째 매개변수: 숫자 a
- 두 번째 매개변수: 숫자 b
- 세 번째 매개변수: 연산을 수행할 콜백 함수 callback
- 콜백 함수는 두 숫자 a와 b를 입력받아 연산 결과를 반환합니다.
- 사용자로부터 연산 종류(덧셈, 뺄셈, 곱셈, 나눗셈)를 입력받아 적절한 콜백 함수를 호출합니다.
- 나눗셈 연산에서 0으로 나누는 경우 "0으로 나눌 수 없습니다."라는 메시지를 출력합니다.
코드 설명
- 콜백 함수 정의:
- add, subtract, multiply, divide 함수는 각각 덧셈, 뺄셈, 곱셈, 나눗셈을 수행합니다.
- divide 함수는 0으로 나누는 경우 예외 처리를 합니다.
- operate 함수:
- 입력받은 숫자와 콜백 함수를 매개변수로 받아 연산 결과를 반환합니다.
- 사용자 입력 처리:
- 사용자로부터 연산 종류와 숫자를 입력받습니다.
- 연산 종류는 operations_map 딕셔너리를 통해 적절한 콜백 함수와 매핑됩니다.
- 예외 처리:
- 나눗셈에서 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
'파이썬' 카테고리의 다른 글
파이썬 리스트, 딕셔너리, 튜플, 세트 (1) | 2024.11.30 |
---|---|
GPT 파이썬 배우기 1화 파이썬 기초, 게임, 추천 서적, 유튜브 (13) | 2024.10.22 |