문제 분류 수업 진도 대회 채점현황 순위 질문게시판
게임
스도쿠 타이핑 리듬 타자게임 타이핑 테트리스 타이핑 인베이더 타이핑 지뢰찾기 8192 공룡게임 타이핑 플래피버드 랭킹
로그인
← 수업 목록
▶ 슬라이드 시작

연산자와 수식 계산

수업 목표

  • 파이썬의 7가지 산술 연산자의 기능과 동작 방식을 설명할 수 있다.
  • 수식의 연산 우선순위를 이해하고, 필요에 따라 괄호를 올바르게 사용할 수 있다.
  • 비교 연산자를 활용하여 참(True)과 거짓(False)의 논리 결과를 도출할 수 있다.
  • 복합 대입 연산자와 유용한 수학 내장 함수를 코드에 적용할 수 있다.

왜 연산자를 배워야 할까요?

컴퓨터(Computer)의 어원은 '계산하다(Compute)'입니다. 즉 컴퓨터는 근본적으로 엄청나게 빠른 계산기이며, 우리가 만드는 모든 프로그램은 크고 작은 계산 위에서 작동합니다.

  • 게임: 몬스터에게 피해를 받으면 hp - damage, 경험치를 나누면 exp // 파티원수
  • 쇼핑몰: 할인율 적용 price * (1 - discount), 총 금액 price * qty
  • 달력/시계: 요일 계산 day % 7, 시간 변환 seconds // 3600

연산자를 정확히 이해하지 못하면 틀린 결과를 아무런 오류 없이 출력하는 가장 나쁜 버그가 생깁니다. 연산 우선순위 한 줄 실수가 게임 점수 계산이나 금융 데이터를 완전히 틀리게 만들 수 있습니다.


생각해보기: 계산기에서 발전한 컴퓨터

컴퓨터(Computer)라는 단어의 어원은 '계산하다(Compute)'입니다. 즉, 컴퓨터는 근본적으로 엄청나게 빠른 속도로 계산을 처리하는 계산기입니다. 우리가 매일 하는 화려한 3D 게임도 내부를 들여다보면 몬스터가 공격을 받아 체력이 깎이는 연산(체력 - 데미지), 획득한 골드를 파티원끼리 공평하게 나누는 연산(골드 / 인원수), 퀘스트 조건 레벨을 달성했는지 비교하는 논리 연산들이 쉴 새 없이 일어나고 있습니다.

수식에 사용되는 연산 기호들을 연산자(Operator)라 부르고, 연산의 대상이 되는 데이터를 피연산자(Operand)라고 합니다. 컴퓨터가 복잡한 문제를 해결하기 위해 사용하는 다양한 연산자의 종류와 올바른 사용법을 배워봅시다.


1. 산술 연산자 7가지 — 숫자 계산하기

파이썬에는 수학에서 배우는 사칙연산 외에도 프로그래밍할 때 유용하게 쓰이는 몫, 나머지, 거듭제곱 연산자가 존재합니다.

연산자 의미 예제 결과
+ 덧셈 7 + 3 10
- 뺄셈 7 - 3 4
* 곱셈 7 * 3 21
/ 나눗셈 (결과는 항상 실수) 7 / 2 3.5
// 몫 (소수점을 버린 정수 나눗셈) 7 // 2 3
% 나머지 7 % 2 1
** 거듭제곱 (제곱) 2 ** 10 1024
# 나눗셈 결과의 종류 확인
print(7 / 2)   # 3.5 (실수형 반환)
print(7 // 2)  # 3 (정수형 몫만 반환)
print(7 % 2)   # 1 (나누고 남은 정수형 나머지 반환)

2. 수식의 우선순위 — 괄호의 중요성

여러 연산자가 섞여 있을 때 컴퓨터가 어떤 것을 먼저 연산할지 결정하는 규칙입니다.

  1. 1순위: 괄호 ( ) 내부 수식
  2. 2순위: 거듭제곱 **
  3. 3순위: 곱셈, 나눗셈 계열 (*, /, //, %)
  4. 4순위: 덧셈, 뺄셈 (+, -)

우선순위를 잘못 계산하여 논리적인 버그가 발생하는 전형적인 사례입니다.

kor = 90
eng = 80
math = 100

# 잘못된 작성 예시
# 나눗셈(/)이 덧셈보다 먼저 계산되어 수학 점수만 3으로 나누어집니다.
bad_avg = kor + eng + math / 3
print(bad_avg)  # 203.33 (잘못된 평균)

# 올바른 작성 예시
# 괄호로 묶인 덧셈이 먼저 처리되도록 설계해야 합니다.
correct_avg = (kor + eng + math) / 3
print(correct_avg)  # 90.0 (정상 평균)

3. 복합 대입 연산자 — 계산과 저장을 동시에

변수에 저장된 값을 계산한 후 그 결과를 다시 같은 변수에 저장할 때, 대입 연산자(=) 앞에 연산 기호를 붙여 한 줄로 줄여 쓸 수 있습니다.

수학의 등식과 헷갈리지 마세요!

수학 시간에 x = x + 1을 보면 "어떤 수가 자기 자신보다 1이 크다고? 말이 안 되잖아!" 라고 느껴집니다.
하지만 프로그래밍에서 =는 "같다"가 아니라 "오른쪽을 계산해서 왼쪽 상자에 덮어씌워라"는 명령입니다.

score = 80

# 수학에선 모순이지만, 코드에선 "80+10을 계산 → score 상자에 덮어씌움"
score = score + 10
print(score)   # 90  ← 상자 안 값이 90으로 바뀜

복합 대입 연산자로 더 짧게 쓰기

score = score + 10처럼 변수 이름을 두 번 쓰는 게 번거로울 때, 아래처럼 줄여 쓸 수 있습니다.
완전히 같은 동작이며, 단순히 코드를 짧게 만드는 약속 표기입니다.

score = 80
score += 10     # score = score + 10  과 완전히 동일
print(score)    # 90

# 경험치 누적 시뮬레이션
exp = 1000
exp += 150      # exp = exp + 150
print(exp)      # 1150

# 값을 1씩 올리기 (파이썬에는 ++ 기호가 없으므로 이렇게 씁니다.)
combo = 0
combo += 1
print(combo)    # 1

전체 복합 대입 연산자 목록

연산자 풀어쓰면 의미 결과 (x=10일 때)
x += 3 x = x + 3 덧셈 후 저장 13
x -= 3 x = x - 3 뺄셈 후 저장 7
x *= 3 x = x * 3 곱셈 후 저장 30
x //= 3 x = x // 3 정수 나눗셈 후 저장 3
x %= 3 x = x % 3 나머지 후 저장 1

4. 비교 연산자 — 참과 거짓 가리기

두 피연산자의 크기나 값을 비교하여 참(True) 또는 거짓(False)을 나타내는 불리언(bool) 값을 결과물로 돌려줍니다.

연산자 의미 예제 결과
== 양쪽 값이 서로 같은가? 5 == 5 True
!= 양쪽 값이 서로 다른가? 5 != 3 True
> 왼쪽이 더 큰가? (초과) 5 > 3 True
< 왼쪽이 더 작은가? (미만) 5 < 3 False
>= 왼쪽이 크거나 같은가? (이상) 5 >= 5 True
<= 왼쪽이 작거나 같은가? (이하) 3 <= 5 True
# 비교 연산의 결과는 변수에 바로 담길 수 있습니다.
player_level = 15
limit_level = 20

can_enter = (player_level >= limit_level)
print(can_enter)  # False

# 파이썬에서는 수학처럼 연쇄 비교가 가능합니다.
# 레벨이 10 이상 30 이하인지 가려내기
print(10 <= player_level <= 30)  # True

5. 유용한 수학 내장 함수

파이썬은 모듈을 import 하지 않고 바로 활용할 수 있는 내장 수학 도구들을 제공합니다.

# 1. abs() : 절댓값 (두 값의 물리적인 차이 계산 시)
print(abs(5 - 9))       # 4

# 2. max(), min() : 전달된 값 중 최댓값과 최솟값 반환
print(max(3, 10, 5))    # 10
print(min(3, 10, 5))    # 3

# 3. round() : 소수점 반올림 (두 번째 인자는 남겨둘 소수점 자리 수)
print(round(3.14159, 2))  # 3.14
print(round(3.5))         # 4

자주 하는 연산 실수

대입 연산자(=)와 비교 연산자(==)의 구별 실패
단일 등호 =는 값을 변수에 쑤셔 넣는 '대입 명령'이고, 이중 등호 ==는 서로 같은지 점검하는 '비교 명령'입니다. 조건문 안에서 오사용 시 문법 에러를 초래합니다.

hp = 50

# if hp = 0:    # 문법 에러 (대입 기호를 조건식에 사용함)
if hp == 0:     # 올바른 예시
    print("게임 오버")

핵심 정리

구분 중요 핵심 개념
몫과 나머지 //는 정수형 몫만 반환하며, %는 정수형 나머지만 구하여 돌려줌.
연산자 우선순위 곱셈/나눗셈이 덧셈/뺄셈보다 항상 먼저 실행되며, 괄호 ( )가 최우선 순위임.
복합 대입 a += 1은 a = a + 1의 함축이며, 파이썬은 ++를 지원하지 않음.
비교 결과 비교 연산의 결괏값은 참과 거짓을 표현하는 bool 데이터 타입(True/False)이 됨.

이번 주 대회 바로가기

1반  |  2반  |  3반  |  4반  |  5반  |  6반  |  7반  |  8반  |  9반

※ 대회 링크는 선생님이 별도 공지합니다.

NOTICE  —  BFStudy OJ 정보샘
애들아, 문제 많이 풀고 게임 잠깐 하는거지?
— 정보샘