코딩도장 파이썬 심사문제 # 5

chaerin·2021년 1월 9일
0

PYTHON

목록 보기
10/17
post-thumbnail

29.4 사칙 연산 함수 만들기

표준 입력으로 숫자 두 개가 입력됩니다. 다음 소스 코드를 완성하여 두 숫자의 덧셈, 뺄셈, 곱셈, 나눗셈의 결과가 출력되게 만드세요. 이때 나눗셈의 결과는 실수라야 합니다.

입력
10 20
결과
덧셈: 30, 뺄셈: -10, 곱셈: 200, 나눗셈: 0.5

입력
40 8
결과
덧셈: 48, 뺄셈: 32, 곱셈: 320, 나눗셈: 5.0

point ✅

  • calc 함수는 값을 두 개를 받으므로 def calc(a, b): 입력
  • return으로 값을 네 개 반환해야 하므로 각 반환값은 콤마로 구분해 준다.

30.7 가장 낮은 점수, 높은 점수와 평균 점수를 구하는 함수 만들기

표준 입력으로 국어, 영어, 수학, 과학 점수가 입력됩니다. 다음 소스 코드를 완성하여 가장 높은 점수, 가장 낮은 점수, 평균 점수가 출력되게 만드세요. 평균 점수는 실수로 출력되어야 합니다.

입력
76 82 89 84
결과
낮은 점수: 76.00, 높은 점수: 89.00, 평균 점수: 82.75
낮은 점수: 82.00, 높은 점수: 84.00, 평균 점수: 83.00

입력
89 92 73 83
결과
낮은 점수: 73.00, 높은 점수: 92.00, 평균 점수: 84.25
낮은 점수: 83.00, 높은 점수: 92.00, 평균 점수: 87.50

point ✅

  • 가장 낮은 점수와 가장 높은 점수를 구하는 get_min_max_score 함수와 평균 점수를 구하는 get_average함수를 만든다. 함수를 호출할 때마다 인수의 개수가 달라지기 때문에 가변 인수 함수로 만들어야 한다.
  • get_min_max_score 함수는 get_min_max_score(korean, english, mathematics, science)처럼 인수를 위치 인수로 넣고 있으므로 def get_min_max_score(*args):와 같이 만들어 준다.
  • get_average 함수는 get_average(korean=korean, english=english, mathematics=mathematics, science=science)처럼 인수를 키워드 인수로 넣고 있으므로 def get_average(**kwargs):와 같이 만들어 준다.
    이 때 평균값을 구하기 위해서는 sum(kwargs.values())처럼 values로 딕셔너리의 값만 가져온 뒤 sum으로 합계를 구하여 키의 개수로 나눠준다.

31.5 재귀호출로 피보나치 수 구하기

표준 입력으로 정수 한 개가 입력됩니다(입력 값의 범위는 10~30). 다음 소스 코드를 완성하여 입력된 정수에 해당하는 피보나치 수가 출력되게 만드세요.
피보나치 수는 0과 1로 시작하며, 다음 번 피보나치 수는 바로 앞의 두 피보나치 수의 합입니다.

n
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21...
결과
0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765, 10946...

point ✅

  • 피보나치 수를 재귀호출로 구하려면 트리 구조로 구해야 한다.
  • 현재 n에서 바로 앞의 수(-1)과 그 앞의 수(-2)를 구해서 fib 함수에 넣는 식으로 수를 쪼개 나간다. n이 피보나치 수의 시작인 1이나 0이 되었을 때 재귀호출을 끝내고 n을 반환한다.

32.5 파일 이름을 한꺼번에 바꾸기

표준 입력으로 숫자.확장자 형식으로 된 파일 이름 여러 개가 입력됩니다. 다음 소스 코드를 완성하여 파일 이름이 숫자 3개이면서 앞에 0이 들어가는 형식으로 출력되게 만드세요. 예를 들어 1.png는 001.png, 99.docx는 099.docx, 100.xlsx는 100.xlsx처럼 출력되어야 합니다. 그리고 람다 표현식을 사용해야 하며 출력 결과는 리스트 형태라야 합니다. 람다 표현식에서 파일명을 처리할 때는 문자열 포매팅과 문자열 메서드를 활용하세요.

입력
1.jpg 10.png 11.png 2.jpg 3.png
결과
['001.jpg', '010.png', '011.png', '002.jpg', '003.png']

입력
97.xlsx 98.docx 99.docx 100.xlsx 101.docx 102.docx
결과
['097.xlsx', '098.docx', '099.docx', '100.xlsx', '101.docx', '102.docx']

point ✅

  • 모든 요소를 지정된 함수로 처리해야 하므로 map 함수를 사용한다.
  • 001.png, 099.docx, 100.xlsx 같은 형식으로 만들어 주기 위해 문자열 포매팅을 '{0:03d}.{1}'와 같이 만들어준다.
    {0:03d}는 파일 이름 부분이고 {1}은 확장자 부분이다.
  • lambda에서 매개변수로 x를 지정하고 int(x.split('.')[0])x.split('.')[1]으로 파일 이름 부분과 확장자 부분을 얻는다.

33.6 카운트다운 함수 만들기

표준 입력으로 정수가 입력됩니다. 다음 소스 코드를 완성하여 함수 c를 호출할 때마다 숫자가 1씩 줄어들게 만드세요. 여기서는 함수를 클로저로 만들어야 합니다. 정답에 코드를 작성할 때는 def countdown(n):에 맞춰서 들여쓰기를 해주세요.

입력
10
결과
10 9 8 7 6 5 4 3 2 1 

입력
20
결과
20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 

point ✅

  • 1씩 줄어드는 함수를 만들기 위해 매개변수 n에 1을 더해서 할당하여 함수 countdown의 지역 변수를 만든다.
  • nonlocal을 사용하여 함수 바깥의 지역 변수를 변경할 수 있도록 한다.

0개의 댓글