셀 출력 관련 효능감 5지선다형 21문항 3부

출력 예측 · 출력 줄 수 · 출력 순서 · 출력 이유 · 자동 채점 · 정답/해설 · TXT 저장

학습 안내

업로드된 3부 코드 셀을 바탕으로, 셀 출력과 직접 관련된 5지선다형 21문항으로 다시 구성했습니다.

모든 문항은 첫 줄 출력만 묻지 않고, 전체 출력, 두 번째 출력, 출력 줄 수, 출력 순서, 출력이 그렇게 되는 이유를 골고루 다룹니다.

원문 코드 셀 49번출력 형식

문항 1. end 옵션 때문에 한 줄로 이어지는 출력

작은 성공 힌트: print의 기본 줄바꿈이 언제 바뀌는지 확인하면 됩니다.

#05

class B:
    def __init__(s, b):
        s.__b = b
        print(f"처음 금액: {s.__b}원",end="→")

    def d(s, a):
        s.__b += a
        print(f"{a}원 입금",end="→")

    def g(s):
        return s.__b

a = B(2000)
a.d(1000)
print(f"현재 잔액: {a.g()}원")

이 코드 셀을 실행했을 때 전체 출력 형태로 가장 알맞은 것은?

정답: B. 처음 금액: 2000원→1000원 입금→현재 잔액: 3000원
앞의 두 print문은 end='→'를 사용하므로 줄바꿈 대신 화살표가 붙습니다. 2000원에서 1000원을 입금해 최종 잔액은 3000원입니다.
원문 코드 셀 50번출력 예측

문항 2. 여러 리스트를 조합한 첫 출력

작은 성공 힌트: i=0일 때 a[0], b[e[0]], c[d[0]]만 따라가면 됩니다.

#06

a=[
'지도학습',
'비지도학습',
'강화학습',
'자기지도학습',
'준지도학습',
]

b=[
'Semi-Supervised Learning',
'Self-Supervised Learning',
'Reinforcement Learning',
'Unsupervised Learning',
'Supervised Learning',
]

c=[
'정답 없이 데이터 패턴을 찾는 방법',
'정답이 있는 데이터를 학습하는 방법',
'보상과 벌을 통해 최적 행동을 학습하는 방법',
'일부만 정답이 있는 데이터를 학습하는 방법',
'데이터 스스로 정답을 만들어 학습하는 방법',
]

e=[4,3,2,1,0]
d=[1,0,2,4,3]

for i in range(5):
    print(f'{a[i]}({b[e[i]]}) {c[d[i]]}')

첫 번째 반복에서 출력되는 문장으로 알맞은 것은?

정답: B. 지도학습(Supervised Learning) 정답이 있는 데이터를 학습하는 방법
i=0이면 a[0]='지도학습', e[0]=4라서 b[4]='Supervised Learning', d[0]=1이라서 c[1]='정답이 있는 데이터를 학습하는 방법'이 연결됩니다.
원문 코드 셀 51번출력 순서

문항 3. 객체 리스트가 만드는 출력 순서

작은 성공 힌트: 리스트 l에 들어 있는 객체 순서를 그대로 따라갑니다.

#07

class D:
    def s(s):return"멍멍!"

class C:
    def s(s):return"야옹~"

class S:
    def s(s):return"매에~"

def m(a):
    print(a.s())

l=[D(),C(),S()]
for a in l:m(a)

이 코드 셀의 출력 순서로 알맞은 것은?

정답: B. 멍멍! → 야옹~ → 매에~
l=[D(), C(), S()] 순서이므로 각 객체의 s() 결과가 멍멍!, 야옹~, 매에~ 순서로 출력됩니다.
원문 코드 셀 52번출력 줄 수

문항 4. 딕셔너리 순회와 출력 줄 수

작은 성공 힌트: 딕셔너리에는 BY, SA, ND, NC, CC0의 5개 항목이 있습니다.

#08

c={
"BY":{"eng":"Attribution","kor":"저작자 표시"},
"SA":{"eng":"ShareAlike","kor":"동일조건 변경허락"},
"ND":{"eng":"NoDerivatives","kor":"변경 금지"},
"NC":{"eng":"NonCommercial","kor":"비영리"},
"CC0":{"eng":"No Rights Reserved","kor":"저작권 포기"}
}

for k,v in c.items():
    print(f'[{k}] {v["eng"]} {v["kor"]}')

이 코드 셀은 총 몇 줄을 출력하는가?

정답: D. 5줄
for k,v in c.items()가 5개 항목을 한 번씩 순회하고, 반복마다 print가 한 번 실행되므로 총 5줄이 출력됩니다.
원문 코드 셀 54번출력 예측

문항 5. 데코레이터 누적 출력

작은 성공 힌트: 데코레이터는 아래쪽부터 함수에 적용됩니다.

def add_c_suffix(func):
    def wrapper():
        return func() + " → C"
    return wrapper

def add_b_suffix(func):
    def wrapper():
        return func() + " → B"
    return wrapper

def add_e_suffix(func):
    def wrapper():
        return func() + " → E"
    return wrapper

def add_d_suffix(func):
    def wrapper():
        return func() + " → D"
    return wrapper

@add_e_suffix
@add_b_suffix
@add_c_suffix
@add_d_suffix
def base_message():
    return "A"

print(base_message())

base_message()의 최종 출력으로 알맞은 것은?

정답: B. A → D → C → B → E
가장 아래 @add_d_suffix가 먼저 적용되어 A → D가 되고, 그 다음 C, B, E가 차례로 붙어 A → D → C → B → E가 됩니다.
원문 코드 셀 56번인덱스 출력

문항 6. 원주율 소수점 자리 출력

작은 성공 힌트: 문자열 인덱스는 0부터 시작합니다.

#11

from mpmath import mp
mp.dps=200
p=str(mp.pi)
d=p.split(".")[1]

c=d[149]

print(f'소수점 아래 150번째 숫자: {c}')

c=d[149]가 의미하는 출력 대상은 무엇인가?

정답: B. 소수점 아래 150번째 숫자
소수점 아래 첫 번째 숫자는 d[0]입니다. 따라서 d[149]는 소수점 아래 150번째 숫자입니다.
원문 코드 셀 58번조건 출력

문항 7. 조건을 만족하는 첫 보안 설명 출력

작은 성공 힌트: check 함수는 딕셔너리 값에 '구조'가 들어 있는지 확인합니다.

#13

s={
'악성코드':'시스템에 해를 끼치거나 정보를 유출',
'랜섬웨어':'파일 암호화 후 금전 요구',
'SQL 인젝션':'입력값으로 SQL 구조 조작',
'XSS':'웹 페이지 악성 스크립트 삽입',
'해싱':'원본 복원이 어려운 고정 길이 값으로 변환'
}

k=list(s)
c=lambda x:'구조'in s[x]
i=0
while i<len(k):
    if not c(k[i]):
        i+=1
        pass
    else:
        print(s[k[i]])
        break

while문에서 실제로 출력되는 값으로 알맞은 것은?

정답: C. 입력값으로 SQL 구조 조작
값에 '구조'가 들어 있는 첫 항목은 SQL 인젝션의 설명인 '입력값으로 SQL 구조 조작'입니다. 출력 후 break로 멈춥니다.
원문 코드 셀 61번자료구조 출력

문항 8. zip으로 만든 튜플 값 출력

작은 성공 힌트: result의 값은 (한국어 용어, 설명) 튜플입니다.

#15

eng1 = ['Confidentiality','Integrity','Availability']
kor1 = ['기밀성(機密性)','무결성(無缺性)','가용성(可用性)']
mean = [
    '허가된 사람만 정보에 접근하도록 보호',
    '정보 임의 변경 · 훼손 금지 정확하게 유지',
    '필요한 사람이 언제든 정보 사용 보장'
]
result = dict(zip(eng1, zip(kor1, mean)))
print(result['Availability'][0])

print(result['Availability'][0])의 출력으로 알맞은 것은?

정답: C. 가용성(可用性)
Availability에 대응하는 값은 ('가용성(可用性)', '필요한 사람이 언제든 정보 사용 보장')입니다. [0]은 첫 번째 요소입니다.
원문 코드 셀 63번전체 출력

문항 9. 점수 정렬 후 연결 출력

작은 성공 힌트: key=lambda i:i[1]은 점수를 기준으로 정렬한다는 뜻입니다.

#16

data={'수학':90,'영어':85,'정보':95,'국어':89, '과학':88}
print("♥".join(map(lambda i:f"{i[0]}{i[1]}",sorted(data.items(),key=lambda i:i[1]))))

이 코드 셀의 출력으로 알맞은 것은?

정답: C. 영어85♥과학88♥국어89♥수학90♥정보95
점수 오름차순은 영어85, 과학88, 국어89, 수학90, 정보95입니다. 각 과목과 점수를 붙이고 ♥로 연결합니다.
원문 코드 셀 64번출력 줄 수

문항 10. 버블 정렬 설명의 출력 줄 수

작은 성공 힌트: 리스트 b에는 제목 1개와 설명 4개가 들어 있습니다.

#17

b=[
'버블 정렬',
'앞에서부터 인접한 두 값을 비교한다.',
'왼쪽 값이 더 크면 두 값을 교환한다.',
'한 회전이 끝나면 가장 큰 값이 오른쪽 끝에 놓임.',
'정렬된 끝부분을 제외하고 반복한다.'
]

def a(f):
    def w():
        for i,t in enumerate(f()):
            if i==0:print(t)
            else:print("→",t)
    return w

@a
def s():
    return b

s()

s()를 실행하면 총 몇 줄이 출력되는가?

정답: D. 5줄
데코레이터 내부에서 f()가 반환한 리스트 b의 5개 원소를 모두 출력합니다. 따라서 총 5줄입니다.
원문 코드 셀 65번부분 출력

문항 11. 마지막 세 글자 슬라이싱 출력

작은 성공 힌트: dd[-3:]은 마지막 3글자를 가져옵니다.

#18

print(list(map(lambda dd:dd[-3:],["Dream","Confidentiality", "Star","Sky", "Availability"])))

출력되는 리스트의 네 번째 원소로 알맞은 것은?

정답: C. Sky
입력 리스트의 네 번째 문자열은 'Sky'입니다. 길이가 3이므로 마지막 세 글자는 그대로 'Sky'입니다.
원문 코드 셀 66번파일 출력

문항 12. 파일 내용 변경 후 출력

작은 성공 힌트: hello.txt를 먼저 만들고, 홍길동을 구운몽으로 바꿉니다.

#19

def r(f,o,n):
    try:
        with open(f,'r',encoding='utf-8') as x:
            t=x.read()

        t=t.replace(o,n)

        with open(f,'w',encoding='utf-8') as x:
            x.write(t)

        print(t)

    except FileNotFoundError:
        print("파일이 없습니다.")

with open('hello.txt','w',encoding='utf-8') as f:
    f.write("안녕하세요 홍길동입니다.")

r('hello.txt','홍길동','구운몽')

r('hello.txt','홍길동','구운몽') 실행 후 출력으로 알맞은 것은?

정답: B. 안녕하세요 구운몽입니다.
파일에 '안녕하세요 홍길동입니다.'를 쓴 뒤 replace로 홍길동을 구운몽으로 바꾸고, 바뀐 전체 문자열을 출력합니다.
원문 코드 셀 67번두 번째 출력

문항 13. seek와 read 이후 두 번째 출력

작은 성공 힌트: seek(12) 뒤 read(6)을 하면 커서는 18 위치로 이동합니다.

#20

with open('seek_test.txt','w',encoding='utf-8') as f:
    f.write("0123456789abcdefghijklmn")

with open('seek_test.txt','r+',encoding='utf-8') as f:
    f.seek(12)
    d=f.read(6)
    print(d)
    print(f.tell())

이 코드 셀의 두 번째 출력으로 알맞은 것은?

정답: B. 18
첫 번째 출력은 읽은 문자열 cdefgh입니다. 12번 위치에서 6글자를 읽었으므로 tell()은 18을 반환하고 두 번째 줄에 18이 출력됩니다.
원문 코드 셀 68번출력 예측

문항 14. 가운데 전화번호 마스킹 출력

작은 성공 힌트: a[1]이 가운데 번호입니다.

#21

p="010-8765-4321"

a=p.split("-")
a[1]="****"
m="-".join(a)

print("마스킹 후:",m)

이 코드 셀의 출력으로 알맞은 것은?

정답: B. 마스킹 후: 010-****-4321
split('-') 결과는 ['010','8765','4321']이고, a[1]만 '****'로 바꿉니다. print는 쉼표 때문에 한 칸 띄어 출력합니다.
원문 코드 셀 69번출력 계산

문항 15. 가변 인수로 길이 합 출력

작은 성공 힌트: 각 문자열의 길이를 모두 더합니다.

#22

def f(*a):
    t=0
    for i in a:t+=i
    return t

s={
'1. 진로 설계',
'2. 자기 분석',
'3. 직업 데이터 구조화',
'4. 관련성 탐색',
'5. 시각화'}
d={i:len(i)for i in s}

print(f(*d.values()))

print(f(*d.values()))의 출력으로 알맞은 것은?

정답: C. 44
각 항목 문자열의 길이 합이 44입니다. *d.values()는 길이값들을 f의 가변 인수로 풀어 전달합니다.
원문 코드 셀 70번출력 이유

문항 16. 빈 문자열 포함 길이 정렬 후 출력

작은 성공 힌트: 빈 문자열 길이 0 다음에는 길이 1인 문자열이 옵니다.

#23

def f(**k):
    return k

t=f(
    문제정의="무엇을 예측할지 정한다",
    데이터준비="데이터 구조와 품질 확인",
    전처리="결측치 스케일 문제 해결",
    모델학습="패턴 학습",
    평가="테스트 성능 측정",
    튜닝="성능 개선 실험"
)

s={'1','proof','abcd','23','987', ''}
d={i:len(i)for i in s}
l=sorted(d.items(),key=lambda x:x[1])
k=list(t.keys())

print(t[k[l[1][1]]])

이 코드 셀에서 최종적으로 '데이터 구조와 품질 확인'이 출력되는 이유로 알맞은 것은?

정답: B. l[1][1]이 1이 되어 k[1]인 데이터준비 항목을 선택하기 때문
길이 오름차순 정렬에서 l[1][1]은 1입니다. k=list(t.keys())에서 k[1]은 데이터준비이므로 해당 값 '데이터 구조와 품질 확인'이 출력됩니다.
원문 코드 셀 71번정렬 출력

문항 17. 문자열 key 정렬 후 출력

작은 성공 힌트: 이번 정렬 기준은 길이가 아니라 x[0], 즉 문자열 자체입니다.

#24

t={
1:('단계','의미'),
2:('데이터 준비','문제지와 정답지 분리'),
3:('데이터 분리','학습용과 테스트용 분리'),
4:('모델 생성','학습할 모델 객체 생성'),
5:('학습','데이터 패턴 학습'),
6:('예측','새 데이터 결과 예측'),
7:('평가','예측과 정답 비교')
}
s={'1','proof','abcd','23','987', ''}
d={i:len(i)for i in s}
l=sorted(d.items(),key=lambda x:x[0])
print(t[int(l[5][1])][1])

이 코드 셀에서 출력되는 값으로 알맞은 것은?

정답: A. 데이터 패턴 학습
문자열 key 기준 정렬 후 l[5][1]은 길이 5가 되고, t[5][1]은 '데이터 패턴 학습'입니다.
원문 코드 셀 72번출력 제어

문항 18. break가 만드는 출력 범위

작은 성공 힌트: key가 2일 때만 출력하고 곧바로 반복을 멈춥니다.

#25

tiger = {
    1: ('종류', '판단방식'),
    2: ('단순 반사', '현재 입력에만 반응'),
    3: ('모델 기반', '현재 입력, 내부 상태 고려'),
    4: ('목표 기반', '목표 달성 여부 고려'),
    5: ('효용 기반', '효율·위험·만족도 비교')
}

for key, (kind, method) in tiger.items():

    if key == 2:
        print(kind)
        break

이 코드 셀에서 출력되는 내용으로 알맞은 것은?

정답: B. 단순 반사
반복 중 key==2가 되는 순간 kind인 '단순 반사'를 출력하고 break로 반복을 종료합니다.
원문 코드 셀 75번출력 순서

문항 19. 도형 객체 리스트의 두 줄 출력

작은 성공 힌트: 리스트 l의 첫 객체는 C(5), 두 번째 객체는 Q(4)입니다.

#28

from abc import ABC,abstractmethod

class S(ABC):
    @abstractmethod
    def a(s):
        pass

class C(S):
    def __init__(s,r):
        s.r=r

    def a(s):
        return 3.14*(s.r**2)

class Q(S):
    def __init__(s,x):
        s.x=x

    def a(s):
        return s.x*s.x

l=[C(5),Q(4)]
for s in l:
    print(f"도형의 넓이: {s.a()}")

이 코드 셀의 출력 순서로 알맞은 것은?

정답: A. 도형의 넓이: 78.5 → 도형의 넓이: 16
C(5)는 3.14*(5**2)=78.5를 반환하고, Q(4)는 4*4=16을 반환합니다. 리스트 순서대로 두 줄 출력됩니다.
원문 코드 셀 76번두 번째 출력

문항 20. 파일 커서 위치 출력

작은 성공 힌트: 10번 위치에서 4글자를 읽으면 커서는 14 위치가 됩니다.

#29

with open('seek_test.txt','w',encoding='utf-8') as f:
    f.write("0123456789abcdef")

with open('seek_test.txt','r+',encoding='utf-8') as f:
    f.seek(10)
    d=f.read(4)
    print(f"10번 위치에서 읽은 데이터: {d}")

    print(f"현재 커서 위치: {f.tell()}")

    f.seek(0)
    f.write("Hello")

이 코드 셀의 두 번째 출력으로 알맞은 것은?

정답: C. 현재 커서 위치: 14
f.seek(10) 후 f.read(4)를 실행하면 커서가 14로 이동합니다. 두 번째 print는 현재 커서 위치: 14를 출력합니다.
원문 코드 셀 77번예외 출력

문항 21. 파일이 없을 때의 예외 출력

작은 성공 힌트: 이 코드 셀 안에서는 hello.txt를 새로 만들지 않고 바로 읽으려고 합니다.

#30

def r(f,o,n):
    try:
        with open(f,'r',encoding='utf-8') as x:
            t=x.read()

        t=t.replace(o,n)

        with open(f,'w',encoding='utf-8') as x:
            x.write(t)

        print(f"'{o}'가 '{n}'로 변경되었습니다.")

    except FileNotFoundError:
        print("파일이 없습니다.")

r('hello.txt','홍길동','인수샘')

hello.txt가 없는 상태에서 이 코드 셀을 독립적으로 실행할 때 출력으로 알맞은 것은?

정답: A. 파일이 없습니다.
읽기 모드 'r'로 hello.txt를 열려고 하지만 파일이 없으면 FileNotFoundError가 발생하고 except 블록의 '파일이 없습니다.'가 출력됩니다.
아직 채점하지 않았습니다.