포스트

[Python 100일 챌린지] Day 5 - 숫자 다루기 (int, float)

[Python 100일 챌린지] Day 5 - 숫자 다루기 (int, float)

프로그래밍은 결국 계산이에요! 재고 관리, 매출 집계, 할인율 계산, 데이터 분석… 현업에서 매일 하는 일이 숫자 다루는 거예요. 😊 정수, 실수 구분하고, 사칙연산 하고, round() 같은 거 쓰고… 오늘 배우는 내용 제대로 익혀두면 나중에 엄청 편합니다!

(15분 완독 ⭐⭐)

🎯 오늘의 학습 목표

📚 사전 지식


🎯 학습 목표 1: 정수(int)와 실수(float) 이해하기

Python에는 두 가지 숫자 타입이 있습니다.

정수 (int = integer)

소수점이 없는 숫자

1
2
3
age = 25          # 정수
year = 2024       # 정수
temperature = -5  # 음수도 정수

실수 (float = floating point)

소수점이 있는 숫자

1
2
3
height = 175.5    # 실수
pi = 3.14         # 실수
price = 1000.0    # 소수점이 있으면 실수

💡 정수와 실수 구분하기

  • 정수: 1, 25, -5, 1000
  • 실수: 1.0, 3.14, -5.5, 175.5

🎯 학습 목표 2: 사칙연산 (+, -, *, /) 사용하기

덧셈 (+)

1
2
3
4
5
a = 10
b = 3

result = a + b
print(result)  # 13

뺄셈 (-)

1
2
3
4
5
a = 10
b = 3

result = a - b
print(result)  # 7

곱셈 (*)

1
2
3
4
5
a = 10
b = 3

result = a * b
print(result)  # 30

나눗셈 (/)

1
2
3
4
5
a = 10
b = 3

result = a / b
print(result)  # 3.3333333333333335

💡 나눗셈 결과는 항상 실수(float)입니다!

거듭제곱 (**)

1
2
3
4
5
result = 2 ** 3  # 2의 3제곱
print(result)    # 8

result = 5 ** 2  # 5의 2제곱
print(result)    # 25

🎯 학습 목표 3: 나머지와 몫 구하기

몫 (//)

소수점 버리고 정수 부분만

1
2
3
4
5
result = 10 // 3
print(result)  # 3 (몫만)

result = 20 // 6
print(result)  # 3

나머지 (%)

나누고 남은 나머지

1
2
3
4
5
result = 10 % 3
print(result)  # 1 (나머지)

result = 20 % 6
print(result)  # 2

실생활 예시

1
2
3
4
5
6
7
8
9
# 사탕 10개를 3명이 나눠 먹으면?
candy = 10
people = 3

each = candy // people   # 각자 몇 개? (몫)
remain = candy % people  # 남은 사탕? (나머지)

print(f"각자 {each}개씩, {remain}개 남음")
# 각자 3개씩, 1개 남음

💡 몫과 나머지 활용

  • 몫(//): 전체를 똑같이 나눴을 때 각자 받는 개수
  • 나머지(%): 똑같이 나누고 남은 개수

🎯 학습 목표 4: 숫자 타입 확인하기

type() 함수로 타입 확인

1
2
3
4
5
age = 25
height = 175.5

print(type(age))      # <class 'int'>
print(type(height))   # <class 'float'>

타입 변환하기

1
2
3
4
5
6
7
8
9
# 실수를 정수로
pi = 3.14
pi_int = int(pi)
print(pi_int)  # 3 (소수점 버림)

# 정수를 실수로
age = 25
age_float = float(age)
print(age_float)  # 25.0

💡 타입 변환 주의

  • int()는 소수점을 버립니다 (반올림 아님!)
  • float()는 소수점 .0을 추가합니다

🎯 학습 목표 5: 복합 대입 연산자 사용하기

변수에 연산 결과를 다시 저장할 때 간단하게 쓰는 방법입니다.

1
2
3
4
5
6
score = 10
score = score + 5  # 이렇게 쓰는 대신

score = 10
score += 5         # 이렇게 간단히!
print(score)       # 15

모든 연산자에 적용 가능:

1
2
3
4
5
6
number = 10

number += 5   # number = number + 5  → 15
number -= 3   # number = number - 3  → 12
number *= 2   # number = number * 2  → 24
number /= 4   # number = number / 4  → 6.0

🎯 학습 목표 6: 숫자 형식 맞추기

round() 함수로 소수점 제한

1
2
3
4
5
6
7
pi = 3.141592653589793

# 소수점 2자리까지
print(round(pi, 2))  # 3.14

# 소수점 4자리까지
print(round(pi, 4))  # 3.1416

f-string으로 형식 지정

1
2
3
4
price = 1234.5678

print(f"가격: {price:.2f}")  # 가격: 1234.57원
print(f"가격: {price:.0f}")  # 가격: 1235원

💡 형식 지정 문법

  • .2f: 소수점 2자리까지 (float)
  • .0f: 소수점 없이 (반올림됨)

💻 실습 예제

예제 1: 간단한 계산기

1
2
3
4
5
6
7
8
9
a = 100
b = 30

print("덧셈:", a + b)
print("뺄셈:", a - b)
print("곱셈:", a * b)
print("나눗셈:", a / b)
print("몫:", a // b)
print("나머지:", a % b)

출력:

1
2
3
4
5
6
덧셈: 130
뺄셈: 70
곱셈: 3000
나눗셈: 3.3333333333333335
몫: 3
나머지: 10

예제 2: BMI 계산기

1
2
3
4
5
6
7
8
9
10
# 키와 몸무게 입력
height = 1.75  # 미터 단위
weight = 70    # 킬로그램

# BMI 계산 (체질량지수 = 몸무게 / 키²)
bmi = weight / (height ** 2)

print("키:", height, "m")
print("몸무게:", weight, "kg")
print("BMI:", bmi)

출력:

1
2
3
키: 1.75 m
몸무게: 70 kg
BMI: 22.857142857142858

예제 3: 시간 계산

1
2
3
4
5
6
7
# 125분은 몇 시간 몇 분?
total_minutes = 125

hours = total_minutes // 60  # 몫 = 시간
minutes = total_minutes % 60 # 나머지 = 분

print(f"{total_minutes}분 = {hours}시간 {minutes}")

출력:

1
125분 = 2시간 5분

💡 실전 팁 & 주의사항

💡 Tip 1: 나눗셈 결과는 항상 실수

1
2
3
result = 10 / 2
print(type(result))  # <class 'float'>
print(result)        # 5.0 (5가 아니라 5.0!)

💡 Tip 2: 0으로 나누기 금지

1
result = 10 / 0  # ZeroDivisionError!

💡 Tip 3: 정수 변환 시 소수점 버림

1
2
pi = 3.14
print(int(pi))  # 3 (3.14가 아니라 3!)

💡 Tip 4: 실수 연산의 부정확성

1
2
3
4
5
6
7
result = 0.1 + 0.2
print(result)  # 0.30000000000000004 (?)

# 이유: 컴퓨터는 실수를 정확히 표현 못함
# 해결: round() 사용
result = round(0.1 + 0.2, 2)
print(result)  # 0.3

💡 Tip 5: 문자열과 숫자 연산 불가

문제: TypeError: can only concatenate str (not "int") to str

1
2
3
4
5
6
7
8
# ❌ 에러 발생
age = "25"
result = age + 1  # TypeError!

# ✅ 정상 작동
age = "25"
result = int(age) + 1  # 문자열을 숫자로 변환
print(result)  # 26

💡 Tip 6: 소수점이 너무 길게 나올 때

1
2
3
4
5
6
7
8
9
# 문제
result = 10 / 3
print(result)  # 3.3333333333333335

# 해결 방법 1: round() 사용
print(round(result, 2))  # 3.33

# 해결 방법 2: f-string 사용
print(f"{result:.2f}")   # 3.33

🧪 연습 문제

문제 1: 온도 변환기

섭씨 30도를 화씨로 변환하세요. 공식: 화씨 = 섭씨 × 9/5 + 32

💡 힌트

변수에 섭씨 온도를 저장하고, 공식을 그대로 적용하세요!

✅ 정답
1
2
3
4
5
celsius = 30
fahrenheit = celsius * 9/5 + 32

print(f"섭씨 {celsius}도 = 화씨 {fahrenheit}")
# 섭씨 30도 = 화씨 86.0도

문제 2: 짝수 홀수 판별

숫자가 짝수인지 홀수인지 확인하세요. (나머지 연산 사용)

💡 힌트

짝수는 2로 나눈 나머지가 0입니다!

✅ 정답
1
2
3
4
5
6
7
8
9
10
number = 7
remainder = number % 2

print("숫자:", number)
print("2로 나눈 나머지:", remainder)

if remainder == 0:
    print("짝수입니다")
else:
    print("홀수입니다")

문제 3: 거스름돈 계산

1000원으로 650원짜리 물건을 샀을 때 거스름돈은?

💡 힌트

거스름돈 = 낸 돈 - 물건 가격

✅ 정답
1
2
3
4
5
6
7
8
money = 1000
price = 650
change = money - price

print(f"낸 돈: {money}")
print(f"물건 가격: {price}")
print(f"거스름돈: {change}")
# 거스름돈: 350원

📝 오늘 배운 내용 정리

  1. 정수(int): 소수점 없는 숫자
  2. 실수(float): 소수점 있는 숫자
  3. 사칙연산: +, -, *, /
  4. 특별 연산: **, //, %
  5. round(): 소수점 반올림

🔗 관련 자료


📚 이전 학습

Day 4: 변수와 print()

어제는 변수를 만들고 print()로 출력하는 방법을 배웠습니다!

📚 다음 학습

Day 6: 문자열 다루기 (str) ⭐⭐

내일은 문자열을 다루는 방법을 배웁니다!


“늦었다고 생각할 때가 가장 빠른 시기입니다!” 🚀

Day 5/100 Phase 1: Python 시작하기 #100DaysOfPython
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.