정답: B. 마지막 번호 1234가 가려진다. parts[2]는 세 번째 조각인 1234를 뜻하므로 출력은 010-5678-****입니다.
코드 셀 2출력 계산
문항 2. 문자열 길이 합산
각 문자열의 길이를 구한 뒤 가변 인수 함수로 모두 더합니다.
#02
def sum_all(*a):
total = 0
for num in a:
total += num
return total
star = {
'1배움',
'12지식',
'123이해',
'1234지혜',
'12345통찰'}
s = {name: len(name) for name in star}
print(sum_all(*s.values()))
이 셀에서 출력되는 25가 만들어지는 과정으로 알맞은 것은?
정답: C. 문자열 길이 3, 4, 5, 6, 7을 더한다. 각 문자열의 길이는 3,4,5,6,7이고 합은 25입니다.
코드 셀 3커서 출력
문항 3. tell() 출력 이유
파일 커서는 읽은 만큼 뒤로 이동합니다.
#03
with open('test.txt', 'w', encoding='utf-8') as f:
f.write("0123456789abcdef")
with open('test.txt', 'r+', encoding='utf-8') as f:
f.seek(5)
data = f.read(11)
print(f.tell())
이 셀에서 f.tell()이 출력하는 값과 이유로 가장 알맞은 것은?
정답: C. 16, 5번 위치에서 11글자를 읽었기 때문이다. 커서 위치 5에서 11글자를 읽으면 현재 위치는 16입니다.
정답: C. 과학이 두 번째로 높은 점수이기 때문이다. 점수는 정보 95가 가장 높고 과학 93이 두 번째로 높습니다.
코드 셀 7간접 출력
문항 7. 정렬된 길이값으로 값 선택
정렬된 문자열 길이를 인덱스로 사용해 tiger의 값을 출력합니다.
#07
def print_info(**k):
return k
tiger = print_info(
도전="무엇을 예측할지 정한다",
경험="데이터 구조와 품질 확인",
자신감="결측치 스케일 문제 해결",
발전="패턴 학습",
성취="테스트 성능 측정",
미래="성능 개선 실험"
)
star = {'12345','Star','678','Be','9'}
st = {name: len(name) for name in star}
ss = sorted(st.items(), key=lambda item: item[1])
keys_list = list(tiger.keys())
print(tiger[keys_list[ss[2][1]]])
이 셀에서 최종 출력값을 고르기 위해 핵심적으로 사용하는 값은?
정답: B. 정렬된 문자열의 길이값 ss[2][1]은 정렬된 문자열 길이값이며, 이 값이 keys_list의 인덱스로 쓰입니다.
코드 셀 8튜플 출력
문항 8. 튜플 첫 요소 출력
번호로 튜플을 찾은 뒤 [0]으로 단계명을 출력합니다.
#08
tiger = {
1: ('단계', 'a'),
2: ('데이터 준비', 'b'),
3: ('데이터 분리', 'c'),
4: ('모델 생성', 'd'),
5: ('학습', 'e'),
6: ('예측', 'f'),
7: ('평가', 'g')
}
star = {'1','We','234','H56789ope','Smile'}
st = {name: len(name) for name in star}
ss = sorted(st.items(), key=lambda item: item[1])
print(tiger[int(ss[3][1])][0])
마지막 [0]이 출력에 미치는 영향으로 알맞은 것은?
정답: B. 튜플의 첫 번째 값인 단계명을 출력한다. tiger[5]는 (학습, e)이므로 [0]은 학습을 선택합니다.
코드 셀 9출력 구조
문항 9. 길이값을 key로 사용
문자열 길이를 딕셔너리 key로 사용해 단어를 출력합니다.
#09
tiger = {
1: ('꿈', '판단방식'),
2: ('목표', '현재 입력에만 반응'),
3: ('노력', '현재 입력, 내부 상태 고려'),
4: ('실력', '목표 달성 여부 고려'),
5: ('성공', '효율·위험·만족도 비교')
}
star = {'ab','c','defg','hij','opqrs'}
st = {name: len(name) for name in star}
ss = sorted(st.items(), key=lambda item: item[1])
print(tiger[int(ss[2][1])][0])
이 셀의 출력값이 노력인 이유로 알맞은 것은?
정답: A. 세 번째 길이값이 3이고 tiger[3][0]이 노력이기 때문이다. 길이 기준 정렬 후 선택된 길이값 3을 key로 사용하면 tiger[3][0]인 노력이 출력됩니다.
코드 셀 10다중 출력
문항 10. 값 비교와 객체 비교 출력
이 셀은 여러 줄을 출력하며, 값 비교와 객체 비교 결과가 다릅니다.
#10
print([], list())
print([]==list())
print([] is list())
print({}, dict())
print({} == dict())
print({} is dict())
print(set(), set(()))
print(set() == set(()))
print(set() is set(()))
이 셀의 출력에 대한 설명으로 알맞은 것은?
정답: B. [] == list()는 True이고 [] is list()는 False이다. ==는 값 비교라 True, is는 객체 동일성 비교라 False입니다.
코드 셀 11합산 출력
문항 11. 길이 합과 추가 길이
문자열 길이들의 합에 정렬된 특정 항목의 길이를 더합니다.
#11
star = {'x','1','y','12','xy','123'}
st = {name: len(name) for name in star}
ss = sorted(st.items(), key=lambda item: item[1])
tiger = sum(item[1] for item in ss) + ss[4][1]
print(tiger)
이 셀에서 출력값을 만들 때 sum(item[1] for item in ss)가 의미하는 것은?
정답: B. 문자열 길이들의 합을 구한다. ss의 각 원소는 (문자열, 길이)이므로 item[1]의 합은 전체 문자열 길이의 합입니다.
정답: B. 제목 → 구분선 → 과일별 막대 → 최고 판매 print_chart()의 print 순서가 제목, 구분선, 과일별 막대, 최고 판매입니다.
코드 셀 15표 출력
문항 15. 총점 표 출력 순서
총점 계산과 정렬 후 표 머리글부터 출력합니다.
#15
class StudentScore:
def __init__(self):
self.students = [
{"이름":"호준","수학":91,"정보":84},
{"이름":"랑연","수학":85,"정보":96},
{"이름":"이후","수학":80,"정보":78},
{"이름":"수은","수학":90,"정보":93},
{"이름":"박윤","수학":88,"정보":86}
]
def total_score(self):
for s in self.students:
s["총점"] = s["수학"] + s["정보"]
def sort_score(self):
self.students = sorted(self.students, key=lambda x:x["총점"], reverse=True)
def print_result(self):
print("이름 수학 정보 총점")
print("-" * 25)
for s in self.students:
print(f"{s['이름']:4}{s['수학']:6}{s['정보']:6}{s['총점']:6}")
def run(self):
self.total_score()
self.sort_score()
self.print_result()
app = StudentScore()
app.run()
이 셀에서 학생별 점수가 출력되기 전에 반드시 먼저 출력되는 것은?
정답: B. 표 머리글과 구분선 print_result()에서 머리글과 구분선을 먼저 출력한 뒤 학생별 행을 출력합니다.
코드 셀 16입력 출력
문항 16. 합성수 판별 출력
입력값 12는 합성수이며 소인수분해 결과도 이어서 출력됩니다.
입력값: 12
#16
class NumberChecker:
def __init__(self, n):
self.n = n
def is_prime(self):
if self.n < 2:
return False
for i in range(2, int(self.n ** 0.5) + 1):
if self.n % i == 0:
return False
return True
def factorize(self):
n = self.n
factors = []
d = 2
while d * d <= n:
while n % d == 0:
factors.append(d)
n //= d
d += 1
if n > 1:
factors.append(n)
return factors
def print_result(self):
if self.is_prime():
print(f"{self.n}은(는) 소수입니다.")
else:
print(f"{self.n}은(는) 합성수입니다.")
factors = self.factorize()
print(f"소인수분해: {' × '.join(map(str, factors))}")
n = int(input("정수 n 입력: "))
obj = NumberChecker(n)
obj.print_result()
입력값이 12일 때 이 셀의 출력 내용으로 알맞은 설명은?
정답: B. 12는 합성수라고 출력하고, 소인수분해 줄도 출력한다. 12는 2로 나누어떨어지므로 합성수이며, factorize() 결과 2 × 2 × 3도 출력됩니다.
코드 셀 17입력 출력
문항 17. n번째 소수 출력
입력한 n에 대해 n번째 소수를 찾아 출력합니다.
입력값: 12
#17
class P:
def __init__(s,n):
s.n=n; s.m=15 if n<6 else n*20
def g(s):
a=[1]*(s.m+1); a[0]=a[1]=0
for i in range(2,int(s.m**.5)+1):
if a[i]:
for j in range(i*i,s.m+1,i): a[j]=0
c=0
for i in range(2,s.m+1):
if a[i]:
c+=1
if c==s.n: return i
n=int(input())
print(f'{n} 번째 소수는 {P(n).g()}')
입력값이 12일 때 출력과 관련된 설명으로 알맞은 것은?
정답: C. 12번째 소수는 37이다. 소수 순서는 2,3,5,7,11,13,17,19,23,29,31,37이므로 12번째는 37입니다.
코드 셀 18반복 출력
문항 18. 역순 매칭 출력
두 번째 문자열 묶음을 역순으로 뒤집어 첫 번째 묶음과 연결합니다.
#18
t = """
가/ Aa:
나/ Bb:
다/ Cc:
라/ Dd:
마/ Ee:
바/ Ff:
"""
u = """
abc,
def,
ghi,
jkl,
mno,
pqr
"""
for a, b in zip(t.splitlines()[1:], u.split(',')[::-1]):
k, e = a[:-1].split('/')
print(f'{k} → {b.strip()} ← {e}')
이 셀의 첫 출력에서 가와 pqr이 연결되는 이유는?
정답: B. u를 [::-1]로 뒤집어 pqr이 먼저 오기 때문이다. u.split(",")[::-1]이 u의 항목 순서를 뒤집기 때문에 pqr이 먼저 연결됩니다.
코드 셀 19여러 줄 출력
문항 19. 묶인 설명 출력
콜론이 없는 줄은 이전 줄의 설명에 이어 붙습니다.
#19
algo5 = """
가다자: 호랑이
늑대.
나라: 여우
사자.
다마사: 코끼리
낙타.
나바아: 올빼미
까치.
아자: 수박
바나나.
"""
algo = '가나다라마바사아자'
lines = [i.strip() for i in algo5.strip().split('\n')]
m, t = [], ''
for i in lines:
if ':' in i:
if t:
m.append(t)
t = i
else:
t += ' ' + i
if t: m.append(t)
d = {}
for i in m:
k, v = i.split(':', 1)
d[k.strip()] = v.strip()
keys = (algo[0]+algo[2]+algo[8], algo[1]+algo[3], algo[2]+algo[4]+algo[6], algo[1]+algo[5]+algo[7], algo[7]+algo[8])
for k in keys:
print(f'{k}: {d[k]}')
이 셀의 출력에서 “호랑이 늑대.”처럼 두 단어가 한 항목으로 묶이는 이유는?
정답: A. 늑대. 줄에 콜론이 없어서 이전 설명에 이어 붙기 때문이다. 콜론이 없는 줄은 else에서 t += " " + i로 이전 항목에 이어 붙습니다.
코드 셀 20재조합 출력
문항 20. 분리한 문자열의 출력 형식
a/b: cde를 나누어 a→ cde←b 형태로 저장하고 출력합니다.
#20
t = """
a/b: cde
f/g: hij
k/l: mno
p/q: rst
u/v: wxy
"""
abc = ['a', 'f', 'k', 'p', 'u']
d = {}
for line in t.strip().splitlines():
star, tiger = line.split(':')
aa, bb = star.split('/')
d[aa] = f'{aa}→{tiger}←{bb}'
for t in abc:
print(d[t])
첫 줄 a/b: cde가 출력용 문자열로 바뀌는 과정으로 알맞은 것은?
정답: B. a가 key가 되고 a→ cde←b가 value가 된다. star는 a/b, tiger는 앞 공백이 있는 " cde"입니다. aa=a, bb=b가 되어 a→ cde←b가 저장됩니다.