게임 속 수학 규칙과 조건 판단의 기준 설계하기
모든 프로그램은 계산 위에서 작동합니다 — 연산자는 그 계산의 언어입니다.
hp - damage, 경험치 분배 exp // 파티원수price * (1 - discount)day % 7, 시간 변환 seconds // 3600연산 우선순위 실수 하나가 오류 없이 틀린 결과를 내는 버그를 만듭니다.
연산자를 정확히 익혀야 믿을 수 있는 프로그램을 작성할 수 있습니다.
우리가 하는 모든 프로그램과 게임은 실시간 연산의 결과물입니다.
컴퓨터는 '계산기(Compute)'에서 출발한 도구로서, 연산 기호를 충실하게 실행합니다.
| 연산자 | 기능 | 예제 | 결과 |
|---|---|---|---|
+, -, * | 덧셈, 뺄셈, 곱셈 | 5 * 3 | 15 |
/ | 나눗셈 (항상 실수형 반환) | 7 / 2 | 3.5 |
// | 몫 (소수점 자리를 지운 정수) | 7 // 2 | 3 |
% | 나머지 | 7 % 2 | 1 |
** | 거듭제곱 | 2 ** 10 | 1024 |
사칙연산 우선순위를 고려하지 않으면 논리적 오류가 생깁니다.
# 국어 90, 영어 80, 수학 100의 평균 구하기
kor, eng, math = 90, 80, 100
# 잘못된 예 (수학 점수만 나누어짐)
avg = kor + eng + math / 3 # 203.33
# 올바른 예 (괄호를 쳐서 덧셈 순위 격상)
avg = (kor + eng + math) / 3 # 90.0 프로그래밍의 =는 "같다"가 아니라 "오른쪽을 계산해서 덮어씌워라"입니다.
score = 80
# 수학: 모순 / 코드: "80+10을 계산 → 덮어씌움"
score = score + 10
print(score) # 90 변수 이름을 두 번 쓰는 대신 연산자와 =를 합쳐서 짧게 표현합니다.
완전히 같은 동작, 표기만 짧은 것입니다.
score = 80
score += 10 # score = score + 10 과 동일
print(score) # 90
exp = 1000
exp += 150 # exp = exp + 150
print(exp) # 1150
cnt = 0
cnt += 1 # ++ 기호 없음, 이렇게 씁니다
print(cnt) # 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 |
두 피연산자의 크기를 비교하여 True(참) 또는 False(거짓)를 도출합니다.
print(5 == 5) # True (서로 같은가?)
print(5 != 3) # True (서로 다른가?)
print(5 > 10) # False (왼쪽이 더 큰가?)
print(5 <= 5) # True (왼쪽이 작거나 같은가?)
# 파이썬만의 편리한 연속 비교식
level = 15
print(10 <= level <= 20) # True # 1. abs() : 절댓값
print(abs(10 - 15)) # 5
# 2. max() / min() : 최대 / 최소 추출
print(max(3, 9, 2)) # 9
print(min(3, 9, 2)) # 2
# 3. round() : 반올림
print(round(3.567, 1)) # 3.6 대입 기호(=)와 비교 기호(==)의 착각
hp = 10
# 잘못된 작성 (대입을 시도하여 문법 에러 발생)
# if hp = 0:
# 올바른 작성 (비교하여 조건 검토)
if hp == 0:
print("사망") | 연산 범주 | 한 줄 핵심 개념 |
|---|---|
몫(//)과 나머지(%) | 나누고 남은 고유한 정수 값을 다룰 때 사용 |
| 수식 괄호 | 수식의 계산 순서를 보장하는 가장 확실한 도구 |
| 복합 대입 | 변수를 간결히 업데이트할 수 있는 코딩 표준 기법 |
| 비교 연산자 | 참/거짓(bool) 결과를 반환하여 조건식의 기초가 됨 |