1단원 과제 정답: 데이터 타입과 변수¶
문제 1. 나눗셈 연산자의 비밀¶
① 2.0
② 2
③ <class 'float'>
④ <class 'int'>
⑤ True
⑥ False
해설
| 항목 | 식 | 결과 | 이유 |
|---|---|---|---|
| ① | 10 / 5 |
2.0 |
/는 항상 float 반환 |
| ② | 10 // 5 |
2 |
//는 몫 연산, int 반환 |
| ⑤ | 2.0 == 2 |
True |
값은 같음 (암시적 타입 변환) |
| ⑥ | type(2.0) == type(2) |
False |
float ≠ int, 타입은 다름 |
⑤에서 값이 같아도 ⑥에서 타입이 다르다는 게 핵심 함정입니다.
문제 2. bool은 int인가?¶
① 2
② 1
③ 10
④ <class 'int'>
⑤ True
⑥ False
해설
| 항목 | 식 | 결과 | 이유 |
|---|---|---|---|
| ① | True + True |
2 |
True = 1, False = 0으로 계산 |
| ④ | type(True + True) |
<class 'int'> |
bool 연산 결과는 int (bool 아님!) |
| ⑤ | True == 1 |
True |
값이 같음 |
| ⑥ | type(True) == type(1) |
False |
bool ≠ int |
④에서 True + True의 결과 타입이 bool이 아닌 int라는 점이 함정입니다.
⑤와 ⑥을 비교해보면, 값은 같아도 타입은 다릅니다.
문제 3. 타입 변환의 함정¶
① 3
② 3
③ True
④ False
⑤ False
⑥ <class 'str'>
해설
| 항목 | 식 | 결과 | 이유 |
|---|---|---|---|
| ① | int(3.9) |
3 |
반올림이 아닌 버림 (소수점 이하 제거) |
| ② | int(float("3.14")) |
3 |
int("3.14")는 오류 → float 거쳐야 함 |
| ③ | bool("0") |
True |
비어있지 않은 문자열은 모두 True |
| ④ | bool(0) |
False |
숫자 0은 False |
| ⑤ | bool("") |
False |
빈 문자열만 False |
| ⑥ | type(str(True)) |
<class 'str'> |
str(True) → 문자열 "True" |
③이 가장 큰 함정입니다. 문자열 "0"은 숫자 0이 아니라 문자열이므로 True입니다.
④와 비교해보면 같은 0이어도 숫자 vs 문자열에 따라 결과가 다릅니다.
문제 4. 변수는 값의 별명¶
① 15
② 10
③ True
④ False
해설
a = 10 → a ──→ [10]
b = a → a ──→ [10] ←── b
a = a + 5 → a ──→ [15] [10] ←── b
| 항목 | 결과 | 이유 |
|---|---|---|
| ① | 15 |
a = 10 + 5 로 재대입됨 |
| ② | 10 |
b는 a의 이전 값 10을 가리킴, a가 바뀌어도 영향 없음 |
| ③ | True |
둘 다 int 타입 |
| ④ | False |
a는 15, b는 10 — 서로 다른 값이므로 주소도 다름 |
b = a는 b가 a의 값(10) 을 가리키게 할 뿐, a를 "추적"하는 것이 아닙니다.
문제 5. 쇼핑 계산기¶
price = int(input("단가 (원): "))
quantity = int(input("수량: "))
subtotal = price * quantity
tax = subtotal / 10
total = subtotal + tax
print("---")
print("소계:", subtotal)
print("부가세:", tax)
print("합계:", total)
print("합계 타입:", type(total))
print("합계 (정수):", int(total))
빈칸 정답
| 빈칸 | 정답 | 이유 |
|---|---|---|
price ______ quantity |
* |
단가 × 수량 = 소계 |
subtotal ______ 10 |
/ |
/는 항상 float 반환 → 부가세가 600.0 |
______(total) (타입) |
type |
타입 확인 함수 |
______(total) (정수) |
int |
float → int 변환 |
함정: // 10을 쓰면 부가세가 int(600)이 되어 실행 예시(600.0)와 다르게 출력됩니다.