8주차 · 중간고사
문제 1 · 코드를 읽고 동작 설명하기 (15점)
Section titled “문제 1 · 코드를 읽고 동작 설명하기 (15점)”문항 A (8점)
Section titled “문항 A (8점)”아래 코드를 읽고, 프로그램이 하는 일을 입력 / 처리 / 출력 3단계로 설명하세요.
distance_m = 120time_s = 4speed_mps = distance_m / time_s
print(f"distance = {distance_m} m")print(f"time = {time_s} s")print(f"speed = {speed_mps} m/s")답안에는 아래 3가지를 각각 1-2 문장씩 반드시 포함하세요.
- 어떤 값이 입력으로 주어졌는가?
- 어떤 계산이 수행되는가?
- 마지막에 무엇이 출력되는가?
문항 B (7점)
Section titled “문항 B (7점)”아래 코드를 읽고, 각 줄이 무슨 역할을 하는지 줄 번호 기준으로 1줄씩 설명하세요. (총 5줄, 줄마다 1문장)
name = "Kim"age = 19next_age = age + 1
print("name =", name)print("next age =", next_age)문제 2 · 이진수·16진수·비트 연산 추론하기 (15점)
Section titled “문제 2 · 이진수·16진수·비트 연산 추론하기 (15점)”문항 A (8점)
Section titled “문항 A (8점)”아래 코드를 실행하지 말고, 각 print의 출력값을 예측해 쓰세요. 그리고 왜 그 값이 나오는지 각 줄마다 1-2 문장으로 설명하세요.
a = 0b1010 # 이진수 1010b = 0b1100 # 이진수 1100
print(a) # (1)print(bin(a & b)) # (2)print(bin(a | b)) # (3)print(bin(a ^ b)) # (4)print(bin(~a & 0xFF)) # (5) — 8비트 마스킹 후 비트 반전답안에는 아래를 포함하세요.
a와b의 십진수 값은 각각 얼마인가?- AND, OR, XOR 연산 결과를 이진수로 쓰고, 각각 무엇을 의미하는지 1문장씩 설명하세요.
문항 B (7점)
Section titled “문항 B (7점)”아래 상황을 읽고, 비트 마스킹이 왜 유용한지 3-4 문장으로 서술하세요.
- 8비트 센서 상태값
status = 0b10110100이 있다. - 비트 2(0-indexed, 오른쪽에서 3번째)가 1이면 “오버히트” 경보를 발생시켜야 한다.
코드를 쓰지 말고, **“비트 마스크를 이용해 원하는 비트만 추출하는 방법과 그 이유”**를 문장으로 설명하세요.
문제 3 · 조건문과 경계값 판단하기 (20점)
Section titled “문제 3 · 조건문과 경계값 판단하기 (20점)”문항 A (10점)
Section titled “문항 A (10점)”아래는 코드와 학생의 설명입니다. 학생 설명 중 틀린 부분을 2개 이상 찾아 왜 틀렸는지 각각 2-3 문장으로 쓰세요.
score = 85
if score >= 90: grade = "A"elif score >= 80: grade = "B"else: grade = "C"
print(grade)학생 설명:
score = 85는 점수가 85보다 큰지 비교하는 코드이다.- 이 코드는 A, B, C 세 등급만 출력한다.
score가 85이면A가 출력된다.
문항 B (10점)
Section titled “문항 B (10점)”아래 코드는 등급을 나누는 코드입니다.
if score >= 80: grade = "B"elif score >= 90: grade = "A"else: grade = "C"다음 질문에 각각 1-2 문장씩 답하세요.
- 왜 이 코드에서
A가 나오기 어려운가? - 어떤 순서로 바꾸면 더 올바른가?
- 꼭 테스트해야 할 경계값 3개를 적으세요.
문제 4 · 반복문과 출력 예측 (20점)
Section titled “문제 4 · 반복문과 출력 예측 (20점)”문항 A (10점)
Section titled “문항 A (10점)”아래 코드를 실행하지 말고, 출력이 어떻게 나오는지 각 항목당 1-2 문장씩 설명하세요.
scores = [10, 20, 30]total = 0
for s in scores: total += s print("current total =", total)답안에는 아래를 포함하세요.
- 반복이 몇 번 일어나는가?
- 각 반복에서
total이 어떻게 바뀌는가? - 마지막 출력은 무엇인가?
문항 B (10점)
Section titled “문항 B (10점)”아래 코드는 왜 문제가 되는지 설명하고, 어떤 줄이 빠졌는지 각 항목당 1-2 문장씩 쓰세요.
x = 0
while x < 5: print(x)답안에는 아래를 포함하세요.
- 이 코드가 멈추지 않는 이유
- 어떤 종류의 실수인지 (무한 루프)
- 어떻게 고쳐야 하는지
문제 5 · 함수와 자료구조 설명하기 (15점)
Section titled “문제 5 · 함수와 자료구조 설명하기 (15점)”문항 A (8점)
Section titled “문항 A (8점)”아래 코드를 읽고, print와 return의 차이를 각 항목당 1-2 문장씩 설명하세요.
def add(a, b): result = a + b print(result) return result답안에는 아래를 포함하세요.
print(result)는 무엇을 하는가?return result는 무엇을 하는가?- 둘 중 하나만 남기면 어떤 차이가 생기는가?
문항 B (7점)
Section titled “문항 B (7점)”아래 자료구조 4가지(리스트, 딕셔너리, 튜플, 집합)에 대해 각각 1-2 문장으로 설명하세요.
- 언제 그 자료구조를 선택하면 좋은지
- 나머지 셋과 구별되는 특징 한 가지
문제 6 · 문자열 파싱 추론하기 (15점)
Section titled “문제 6 · 문자열 파싱 추론하기 (15점)”문항 A (8점)
Section titled “문항 A (8점)”아래 코드를 실행하지 말고, 각 print의 출력값을 예측하고 왜 그 값이 나오는지 각 줄마다 1-2 문장으로 설명하세요.
raw = " sensor=A1, value=42, unit=V "
clean = raw.strip()fields = clean.split(",")pairs = [f.strip() for f in fields]
print(len(fields)) # (1)print(pairs[1]) # (2)print(pairs[1].split("=")[1]) # (3)print("value" in clean) # (4)문항 B (7점)
Section titled “문항 B (7점)”아래 파싱 코드에서 두 가지 개선이 필요한 부분을 찾고, 각각 2-3 문장으로 왜 문제인지와 어떻게 고쳐야 하는지 설명하세요.
line = "id:001 | temp:24.8 | status:OK"parts = line.split("|")temp = float(parts[1].split(":")[1])print("temp:", temp)힌트: 공백 처리와 검증 순서를 중심으로 살펴보세요.
추가 연습 문제 (미채점)
Section titled “추가 연습 문제 (미채점)”연습 1 · 코드 설명문 작성
Section titled “연습 1 · 코드 설명문 작성”아래 코드를 보고, 초보 학생에게 설명하듯 4문장 이내로 설명문을 작성하세요.
values = [2, 4, 6]avg = sum(values) / len(values)print(avg)연습 2 · 틀린 설명 고치기
Section titled “연습 2 · 틀린 설명 고치기”다음 설명문을 자연스럽고 정확하게 고쳐 쓰세요.
- “이 코드는 그냥 숫자를 출력한다.”
대상 코드:
nums = [1, 2, 3, 4]count_even = 0
for n in nums: if n % 2 == 0: count_even += 1
print(count_even)연습 3 · 이진수 변환
Section titled “연습 3 · 이진수 변환”십진수 45를 이진수로 손으로 변환하는 과정을 단계별로 설명하세요. (bin(45)를 바로 쓰지 말고, 2로 나누는 과정을 기록하세요.)
연습 4 · 파싱 파이프라인 순서 나열
Section titled “연습 4 · 파싱 파이프라인 순서 나열”“정제 → 분리 → 검증 → 변환” 각 단계가 왜 그 순서여야 하는지 2-3 문장으로 설명하세요. 특히 “검증 없이 변환 먼저” 하면 어떤 문제가 생기는지 포함하세요.