참고자료: 2021-04-mid

Author

최규빈

Published

April 1, 2021

클로즈 북, 40분, 문제미리공개X

2021년 파이썬 입문 중간고사

1 다음을 읽고 참인것을 모두 골라라. (10점)

(ㄱ) 딕셔너리는 key와 value가 하나의 쌍으로 되어 {}로 둘러싸여 있다. 
(ㄴ) `abs(-20)`의 실행결과는 `20`이다. 
(ㄷ) `[1]+[2]`의 실행결과는 `[3]` 이다. 
(ㄹ) `(1,)`의 자료형은 tuple이다. 
(ㅁ) 자료형이 `str`이면 각 원소를 쉽게 바꿀 수 있다. 

2 아래의 실행결과 중 올바른 것은? (35점)

(a)

a=1.0
b=2
type(a+b)
(ㄱ) int (ㄴ) float (ㄷ) bool  (ㄹ) complex 
(ㅁ) str (ㅂ) list  (ㅅ) tuple (ㅇ) dict 

(b)

a=1
b=2
type(a==b)
(ㄱ) int (ㄴ) float (ㄷ) bool  (ㄹ) complex 
(ㅁ) str (ㅂ) list  (ㅅ) tuple (ㅇ) dict 

(c)

a=1
b=2
type(int(a==b))
(ㄱ) int (ㄴ) float (ㄷ) bool  (ㄹ) complex 
(ㅁ) str (ㅂ) list  (ㅅ) tuple (ㅇ) dict 

(d)

type([1,2,3])
(ㄱ) int (ㄴ) float (ㄷ) bool  (ㄹ) complex 
(ㅁ) str (ㅂ) list  (ㅅ) tuple (ㅇ) dict 

(e)

a=1
type(a)
(ㄱ) int (ㄴ) float (ㄷ) bool  (ㄹ) complex 
(ㅁ) str (ㅂ) list  (ㅅ) tuple (ㅇ) dict 

(f)

a=(1)
type(a)
(ㄱ) int (ㄴ) float (ㄷ) bool  (ㄹ) complex 
(ㅁ) str (ㅂ) list  (ㅅ) tuple (ㅇ) dict 

(g)

a=(1,)
type(a)
(ㄱ) int (ㄴ) float (ㄷ) bool  (ㄹ) complex 
(ㅁ) str (ㅂ) list  (ㅅ) tuple (ㅇ) dict 

3 아래의 코드를 잘 읽고 물음에 답하라. (25점)

a=[1,[2],2,[1]]

def a_add(a,i,j): 
    if type(a[i])==type(a[j]): 
        rtn=a[i]+a[j]
    else:
        rtn=a[i],a[j]
    return rtn

(a) 아래의 출력결과 중 바른 것은?

a[0]==a[2]
(ㄱ) True (ㄴ) False

(b) 아래의 출력결과 중 바른 것은?

type(a[0])==type(a[2])
(ㄱ) True (ㄴ) False

(c) 아래의 출력결과를 쓰라.

a_add(a,0,2)

(d) 아래의 출력결과를 쓰라.

a_add(a,1,3)

(e) 아래의 출력결과중 적절한 것은?

type(a_add(a,0,1))
(ㄱ) int (ㄴ) float (ㄷ) bool  (ㄹ) complex 
(ㅁ) str (ㅂ) list  (ㅅ) tuple (ㅇ) dict 

4 원주율을 출력하는 방법 중 올바른 것을 모두 고르시오 (10점)

(ㄱ) 
import math
math.pi

(ㄴ) 
import math
pi 

(ㄷ)
from math import pi
pi

(ㄹ)
from math import *
pi

5 아래의 에러메시지가 나오는 (잘못된) 코드는? (10점)

(a)

TypeError: object of type 'float' has no len()
(ㄱ) len(3.14) 
(ㄴ) len([3.14]) 
(ㄷ) len((3.14,)) 
(ㄹ) len('3.14') 

(b) (a)의 에러가 나오는 이유에 대하여 설명하라.

6 아래와 같이 a를 선언하였다고 하자. (ㄱ)-(ㄹ) 중 옳은 설명을 모두 골라라. (10점)

a='guebin'
(ㄱ) a의 자료형은 str이다. 즉 type(a)의 출력결과는 str이다. 
(ㄴ) len(a)의 실행결과는 1이다. 
(ㄷ) a[0]='G'와 같은 방법으로 첫글자를 대문자로 바꿀 수 있다. 
(ㄹ) a*2의 실행결과는 'guebinguebin'이다. 

7 [예제코드]의 결과를 관찰하고 물음에 답하라. (10점)

## 예제코드 ## 
a=['G','u','e','b','i','n']
del a[0]
a
## 실행결과 
['u', 'e', 'b', 'i', 'n']

(a) 아래코드의 출력결과를 쓰라.

a=['G','u','e','b','i','n']
del a[0]
del a[0]

(b) 아래코드의 출력결과 중 올바른 것은?

b=['1','2','3']
del b[-1]
b
(ㄱ) ['1', '2']
(ㄴ) ['2', '3']
(ㄷ) ['1', '3']
(ㄹ) 에러메시지로 출력할 수 없음. 

8 다음을 읽고 물음에 답하라. (15점)

(a) 아래는 .append에 대한 사용예시이다.

### .append 예시 
a=[1,2]
a.append(3)
print(a)
### 실행결과 
[1, 2, 3]

위의 코드를 참고하여 아래의 실행결과를 쓰라.

x=[]
for i in [0,1,2,3,4,5]:
    x.append(2**i)
x

(b) 리스트 컴프리헨션을 사용하여 (a)와 동일한 출력결과를 얻는 코드를 작성하라.

(c) 리스트 컴프리헨션을 사용하여 아래의 출력결과를 얻는 코드를 작성하라.

['X1','X2','X3','Y1','Y2','Y3']

9 a,b에 저장된 두 값을 교환하고 싶다고 하자. 아래의 ???에 알맞은 내용을 적으시오. (10점)

a=10
b=20
???
a,b
## 실행결과
(20, 10)

10 아래의 코드에 대한 출력결과를 쓰라. (10점)

idlist=[('guebin', '202112345','M','Korea'), 
        ('iu', '202154321','F','Korea'), 
        ('hodong', '201812321','M','Korea')]
for name, _, _, _ in idlist: 
    print(name)        

11 리스트를 활용하여 아래와 같은 배열을 만들었다고 하자. (15점)

a=[[11,12,13], 
   [21,22,23], 
   [31,32,33]]

(a) 아래코드의 시행결과를 쓰라.

a[0][1]+a[1][2]

(b) 아래코드의 시행결과를 쓰라.

a[0]+a[1]

(c) 아래코드의 시행결과를 쓰라.

import numpy as np
a=np.array(a)
a[0]+a[1]

12 아래와 같은 연립방정식을 만족하는 해 \((w,x,y,z)\)를 푸는 코드를 작성하라. (20점)

\(\begin{cases} x+y+z=3 \\ w+y+z=3 \\ w+x+z=3 \\ w+x+y=3 \end{cases}\)

13 아래와 같은 행렬을 numpy를 이용하여 선언했다고 하자. (15점)

import numpy as np
A=np.array([[11,12,13,14,15],
            [21,22,23,24,25],
            [31,32,33,34,35]])

(a) 다음 코드의 실행결과로 적절한 것은?

A[1]
(ㄱ) array([11, 12, 13, 14, 15])
(ㄴ) array([21, 22, 23, 24, 25])
(ㄷ) array([11, 21, 31])
(ㄹ) array([12, 22, 32])

(b) 다음 코드의 실행결과로 적절한 것은?

A[1,:]
(ㄱ) array([11, 12, 13, 14, 15])
(ㄴ) array([21, 22, 23, 24, 25])
(ㄷ) array([11, 21, 31])
(ㄹ) array([12, 22, 32])

(c) 다음 코드의 실행결과로 적절한 것은?

A[np.ix_([0,1],[0,1])]
(ㄱ)
array([[11, 12],
       [21, 22]]) 
(ㄴ) 
array([[11, 21],
       [12, 22]]) 
(ㄷ) 
array([11, 12, 21, 22]) 

(ㄹ) 
array([12, 22, 11, 12])

14 적당한 과정을 통하여 아래와 같은 데이터를 얻었다고 가정하자. (20점)

import pandas as pd
#...적당한과정...
df
#hide_input
from IPython.display import HTML
HTML('<table border="1" class="dataframe">\n  <thead>\n    <tr style="text-align: right;">\n      <th></th>\n      <th>age</th>\n      <th>toeic</th>\n      <th>gpa</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th>새로이</th>\n      <td>30.0</td>\n      <td>600</td>\n      <td>4.0</td>\n    </tr>\n    <tr>\n      <th>이서</th>\n      <td>20.0</td>\n      <td>950</td>\n      <td>4.2</td>\n    </tr>\n    <tr>\n      <th>일권</th>\n      <td>28.0</td>\n      <td>450</td>\n      <td>2.3</td>\n    </tr>\n    <tr>\n      <th>현이</th>\n      <td>28.0</td>\n      <td>650</td>\n      <td>3.8</td>\n    </tr>\n  </tbody>\n</table>')
age toeic gpa
새로이 30.0 600 4.0
이서 20.0 950 4.2
일권 28.0 450 2.3
현이 28.0 650 3.8

(a) 첫 두열(age,toeic)에 접근하는 코드를 써라.

(b) 토익점수가 800이상인 사람을 불러오는 코드를 써라.

(c) 세번째 열(gpa)에 접근하는 코드 중 적절한 것을 모두 골라라.

(ㄱ) 
df.loc['gpa']
(ㄴ) 
df.iloc[:,2]
(ㄷ) 
df.iloc[:,-1]
(ㄹ) 
df.iloc[2]

(d) 나이가 23보다 많고 토익점수가 635이하 학점이 3.0 이상인 사람을 불러오는 코드를 작성하라.

15 아래를 보고 적절한 설명을 한 사람을 모두 고르라. (10점)

import vec
vec?
Type:        module
String form: <module 'vec' from '/home/cgb2/vec/__init__.py'>
File:        ~/vec/__init__.py
Docstring:   이 패키지는 현재 길이가 2,3인 벡터의 연산만 지원하지만 추후 업데이트하여 더욱 발전할 예정

(로이) import vec이 실행되는 것을 보니 (1) 사용자가 vec이라는 패키지를 설치했거나 (2) 사용자가 현재 작업중인 폴더에 vec.py파일을 만들었거나 (3) 사용자가 현재 작업중인 폴더 아래 vec이라는 폴더가 존재하는 경우등 중 하나라고 볼 수 있겠군.

(이서) 네, 그런데 vec?의 실행 결과중 File:을 확인해 보니 사용자가 작업중인 폴더아래 vec이라는 폴더가 있는것으로 판단됩니다.

(일권) 이서가 말한대로 File:을 확인해보니 사용자가 vec폴더에 __init__.py도 만들어 놓았음을 알수 있군. __init__.pyimport vec을 수행하면 암시적으로 실행된다고 했었지?

(현이) 그렇지, 그런데 사실 파일 이름이 꼭 __init__.py이어야 하는것은 아니야.

(수아) vec?의 실행결과 Docstring:이 있는것으로 보아 __init__.py상단에 아래와 같은 내용이 있음을 유추할 수 있어.

'''
이 패키지는 현재 길이가 2,3인 벡터의 연산만 지원하지만 추후 업데이트하여 더욱 발전할 예정
'''