안녕하세요 성조입니다.
개인 문제 풀이이므로 오답이 있을 수 있습니다.
오답이거나 조금 이상하다 또는 질문이 있는 경우 댓글 부탁드리겠습니다.
5장
01. 다음 코드의 실행 결과를 쓰시오
[ 정답 ] 출력 화면
Before : 10 In Function : 20 After : 10 |
첫 라인부터 시작하면
test(t)함수가 값을 받고 다음 부분에 t 변수가 t=20이라고 정의됐습니다. 소스코드는 반환 값이 없으므로 함수 안의 수행문만 수행합니다. 그러므로 함수 안에서 정의된 t= 20이란 수행문만 실행되며 특별한 값이 반환이 없고 함수 내에서만 실행되므로 10이 아닌 20이 출력됩니다.
02. 다음 코드의 실행 결과를 쓰시오
[ 정답 ] None
sotring_function함수는 리턴 값을 갖고 있다.
값에 의한 호출이 아닌 참조에 의한 호출이 사용되므로 None 값을 갖는다.
함수 안의 인수 값을 정렬해서 반환하는 것 이므로 [5, 4, 3, 2, 1]의 값을 변수에 저장해서 변수를 반환해야 된다.
03. 다음 코드의 실행 결과를 쓰시오 ( ★★ 잘 모르겠는 문제입니다.)
[ 정답 ] 모호한 구문 이므로 그에 대한 문법 경고가 나온다.<- 미확실
제대로 풀었는지 확신을 못 갖습니다. 아래의 링크에서 SyntaxWaring을 참조 했습니다!
python.flowdas.com/library/warnings.html
04. 다음과 같이 코드를 작성했을 때, 실행 결과로 알맞은 것은?
[ 정답 ] 3번 - None
if 조건에 들어가는 조건은 2가지이다.
1. 입력받은 문자를 대문자로 바꾸고 그 문자가 YES와 같은 경우.
2. 입력받은 문자를 대문자로 바꿨는데 Y 하나인 경우.
Yes를 입력받았으므로 YES와 Y가 답이 아니므로 if의 참값을 가질 수 없다.
즉 아무 겂도 없는 None 값을 의미한다.
05. 다음과 같이 코드를 작성했을 때, 실행 결과로 알맞은 것은?
[ 정답 ] 4번 - False
return 즉 반환하는 공식이 b+a*c+b이다.
4+3*5+3 == 63을 출력하는 문제이다.
위의 값을 계산하면 22 == 63이므로 값은 같지 않다.
즉 False가 출력된다.
06. 다음과 같이 코드를 작성했을 때, 실행 결과로 알맞은 것은?
(★ 이해가 애매하게 된 문제입니다)
[ 정답 ] 3번 - TypeError
*를 사용하는 가변 인자 *args를 사용하려면 문자열이 필요한데 함수에서 int형 과 형 충돌이 일어나기 때문에 타입 에러가 나온다.
07. 다음 코드의 실행 결과를 쓰시오.
[ 정답 ] [ 'green', 'blue' ]
문제는 주소에 의한 호출을 한다.
append 함수를 사용해서 colors 리스트 안에 purple이라는 단어를 삽입해도 바로 아래 줄에서 colors를 colors = ["green", "blue"]이라고 재정의한 후 반환하기 때문에 출력 결과로 [ 'green', 'blue' ]가 나온다.
08. 다음 코드의 실행 결과를 쓰시오.
[ 정답 ]
8 None |
위와 같이 출력된다.
이 문제의 function 함수는 값에 의한 호출을 하고 있으며 반환 값은 없다. 즉 값만 출력하면 되는데 print() 함수를 사용해서 값을 찾지 못해서 None 값을 갖는다.
09. 다음 코드의 실행 결과를 쓰시오.
[ 정답 ] appl
이 문제의 트릭은 함수 명이 get_apple이라는 것을 인지하고 있어야 한다.
fruit = "appl"이라고 이미 저장한 상태이다.
get_apple 함수에 fruit 변숫 값을 넣어서 반환받았지만 값에 의한 호출을 사용했으므로 함수 외부에 존재하는 fruit 변수는 영향을 받지 않는다. 그러므로 appl이 출력된다.
10. 다음과 같이 코드를 작성했을 때, 실행 결과로 알맞은 것은?
[ 정답 ] 3번
1) sentence 변수에 저장된 문자열 I Love You가 출력되고 5가 재귀 호출 sentence += str(n)을 이용하여 5부터 순차적으로 54321이 출력된다.
2) 0보다 작은 경우에도 출력된다. 즉 5번이므로 5,4,3,2,1,0 6개의 문자열이 출력된다.
3) I Love You543210이 완성된다.
11. 다음 코드의 실행 결과를 쓰시오.
[ 정답 ] [ ' x ' ]
C언어 같은 경우 test 함수는 위치를 바꾸는 스왑 함수이다.
x 리스트에 값이 [ ' y ' ]가 있다면 y.append(x)로 인해서 x 변수에는 [ ' y ' , [ ' x ' ] ]가 저장된다.
y 값은 함수 외부에 있으며 주소에 의한 호출이 아니므로 밖에 있는 y 변수 리스트에는 변화가 없다.
그러므로 [ ' x ' ]가 출력된다.
12. 다음 코드의 실행 결과를 쓰시오.
[ 정답 ]
Odd Even |
1) 값에 의한 호출을 사용하여 3의 값을 contdown 함수에 넣어준다.
2) 3의 값을 전달받았을 때 n % 2 ==0이 아닌 1이 나머지 값으로 남는다. -> Odd 출력
3) Odd 출력과 동시에 n-1을 수행한다. 즉 3에서 2로 감소된다.
4) 한 줄 한 줄 번역하는 인터프리터 언어 특성상 값이 변경되므로 countdown()이 다시 실행됐을 때 n% 2==0의 조건이 만족된다. -> Even 출력
5) 이후 값의 변동이 없으므로 Odd가 출력된 이후 Even가 출력되고 함수는 끝난다.
이 문제의 경우.
countdown(n-1) 즉 재귀 호출을 Even에도 적용하는 경우.
팩토리얼 계산만큼 Odd와 Even이 출력된다.
13. 다음 코드를 실행하면 결과값으로 120이 나온다. 빈칸에 들어갈 알맞은 코드를 작성하시오.
[ 정답 ]
factorial_calculator(n-1) |
1) 이 문제는 소스코드 빈 블록에 알맞은 코드를 작성하는 것이다.
2) 결과 값이 120이 나와야 한다.
3) 빈 블록은 재귀 호출을 사용해서 프로그램을 작성하면 120을 출력할 수 있다.
4) 본인 함수 자체를 호출하여 즉 factorial_calculator(n)을 호출하는데 1씩 감소시킨다. 즉 factorial_calculator(n-1)로 작성하면 재귀 호출을 사용한 함수로 120 값을 갖고 올 수 있다.
14. 다음 코드의 실행 결과를 쓰시오.
[ 정답 ] 따로 출력되는 값은 없다.
현재 출력하는 함수가 없다. 변수를 저장했을 뿐 특별히 출력되는 값은 없다.
15. 다음 코드의 실행 결과를 쓰시오.
[ 정답 ]
Value : 10 Value : 20 |
파이썬은 인터프리터 언어로 링커를 사용하는 타 언어와 다르게 한 줄 한 줄 읽어낸다.
즉 x =20을 읽으면서 변수가 저장된 후 exam_func() 함수가 실행되면서 exam_func() 함수 내의 Value : 10 값을 먼저 출력한다. 이후 함수 외부의 Value : 20 값을 출력한다.
16. 다음 코드의 실행 결과를 쓰고, 그 결과값이 나오는 이유를 설명하시오.
[ 정답 ] None
2번째 줄에서 country 리스트에 append 함수를 사용하여 Remove라는 원소를 추가했다.
하지만 3번째 라인 print함수 안에 country 리스트에 remove 함수를 사용하여 country 안에 추가됐던 Remove를 삭제해서 메모리를 반환했으므로 값을 찾을 수 없다.
최대한 정답이라고 생각하는 답과 개인적으로 풀이했습니다 개인 풀이이므로 미숙한 부분이 있을 수 있습니다.
댓글로 알려주시면 감사드리겠습니다.
감사합니다 성조였습니다.
다음 포스팅 때 뵙겠습니다!
'개인 학습용 해설 > 데이터 과학을 위한 파이썬 프로그래밍' 카테고리의 다른 글
데이터 과학을 위한 파이썬 프로그래밍 7장 연습문제 개인풀이 (6) | 2021.12.13 |
---|---|
데이터 과학을 위한 파이썬 프로그래밍 6장 연습문제 개인풀이 (4) | 2021.02.06 |
데이터 과학을 위한 파이썬 프로그래밍 4장 연습문제 개인풀이 (20) | 2020.10.15 |
데이터 과학을 위한 파이썬 프로그래밍 3장 연습문제 개인풀이 (4) | 2020.10.14 |
데이터 과학을 위한 파이썬 프로그래밍 2장 연습문제 개인풀이 (9) | 2020.10.13 |