02. 연산자
산술·비교·할당 연산자를 스포츠 데이터로 익힌다
목차
스포츠 데이터로 배우는 파이썬 기초
학습 목표
- 7가지 산술 연산자 이해 및 활용
- 6가지 비교 연산자로 조건 판단
- 할당 연산자(
+=,-=,*=)로 값 누적·갱신 - 스포츠 데이터에 연산자 적용
1. 산술 연산자
7가지 핵심 연산자
| 연산자 | 의미 | 스포츠 활용 | 예시 |
|---|---|---|---|
+ | 더하기 | 득점 합계 | 18 + 23 → 41 |
- | 빼기 | 득실차 | 55 - 38 → 17 |
* | 곱하기 | 승점(승×3) | 24 * 3 → 72 |
/ | 나누기 | 평균 득점 | 55 / 23 → 2.39... |
// | 몫 | 훈련 사이클 수 | 23 // 5 → 4 |
% | 나머지 | 홀짝·라운드 판별 | 23 % 5 → 3 |
** | 거듭제곱 | 면적, 통계 | 10 ** 2 → 100 |
연산 우선순위
**→*,/,//,%→+,-- 괄호
()로 우선순위 변경 가능 - 나눗셈(
/) 결과는 항상float
실습 2-1. 팀 기록 데이터로 산술 연산
# 팀 기록 데이터
total_goals = 55
games_played = 23
league_games = 38
# 평균 득점 (/)
avg_goals = total_goals / games_played
# 남은 경기 수 (-)
games_left = league_games - games_played
# 몫과 나머지 (//, %)
training_cycles = games_played // 5 # 5경기씩 묶음 훈련 횟수
current_game = games_played % 5 # 현재 사이클에서 몇 번째?
# 거듭제곱 (**)
side = 100
area = side ** 2
print(f'평균 득점: {round(avg_goals, 2)}골')
print(f'남은 경기: {games_left}경기')
print(f'훈련 사이클: {training_cycles}회 완료, 현재 {current_game}경기째')
print(f'경기장 면적: {area}㎡')
평균 득점: 2.39골
남은 경기: 15경기
훈련 사이클: 4회 완료, 현재 3경기째
경기장 면적: 10000㎡
실습 2-2. 연산 우선순위 확인
- 곱셈·나눗셈이 덧셈·뺄셈보다 먼저 계산됨
- 괄호가 최우선
a = 10
b = 20
c = a + b * 10 - 5 / 5
print('a + b * 10 - 5 / 5 =', c)
print('타입:', type(c)) # 나눗셈 포함 → float
a + b * 10 - 5 / 5 = 209.0
타입: <class 'float'>
# 나머지·몫 연산
x = 10 % 3 # 나머지
print('10 % 3 =', x)
y = 7 // 3 # 몫
print('7 // 3 =', y)
z = 2 ** 3 # 거듭제곱
print('2 ** 3 =', z)
10 % 3 = 1
7 // 3 = 2
2 ** 3 = 8
2. 비교 연산자
6가지 핵심 연산자
| 연산자 | 의미 | 결과 |
|---|---|---|
> | 크다 (초과) | True / False |
>= | 크거나 같다 (이상) | True / False |
< | 작다 (미만) | True / False |
<= | 작거나 같다 (이하) | True / False |
== | 같다 | True / False |
!= | 다르다 | True / False |
핵심 포인트
- 비교 연산의 결과는 항상
bool타입 - 조건문(
if)에서 핵심적으로 사용
실습 2-3. 승점 비교 & 득점 목표 달성 확인
# 팀 승점 비교
team_a_points = 72
team_b_points = 68
print('A팀 우승?', team_a_points > team_b_points) # True
print('승점 동률?', team_a_points == team_b_points) # False
# 득점 목표 달성
son_goals = 23
target = 20
is_success = son_goals > target
print('20골 달성?', is_success)
print('타입:', type(is_success))
A팀 우승? True
승점 동률? False
20골 달성? True
타입: <class 'bool'>
실습 2-4. 비교 연산자 종합 실습
x = 10
y = 3
print(x > 9) # x가 9보다 큰가?
print(y <= 10) # y가 10 이하인가?
print(x + y == 13) # x + y가 13인가?
print(x % 2 == 0) # x가 짝수인가?
print(y % 2 == 0) # y가 짝수인가?
print(y % 3 != 0) # y가 3의 배수가 아닌가?
True
True
True
True
False
False
3. 할당 연산자 (Assignment Operators)
개념
- 변수의 기존 값에 연산 후 다시 같은 변수에 저장하는 축약 표현
x += 1은x = x + 1과 동일
종류
| 연산자 | 의미 | 풀어쓴 코드 | 용도 |
|---|---|---|---|
+= | 더해서 저장 | x = x + y | 득점 누적 |
-= | 빼서 저장 | x = x - y | 체력 차감 |
*= | 곱해서 저장 | x = x * y | 배수 증가 |
/= | 나눠서 저장 | x = x / y | 평균 분배 |
실습 2-5. 경기 득점 누적
# 경기 득점 누적 (초기값 0)
goals = 0
# 전반전: 1골 득점
goals += 1
print('전반 종료:', goals)
# 후반전: 2골 추가
goals += 2
print('경기 종료:', goals)
# 슈팅 수 2배 증가 (*=)
shots = 5
shots *= 2
print('슈팅 수 2배:', shots)
전반 종료: 1
경기 종료: 3
슈팅 수 2배: 10
실습 2-6. 할당 연산자 응용
# 할당 연산자 응용 문제
x = 3
y = 5
x *= x + y # x = 3 * (3 + 5) = 24
print('x *= x + y →', x)
x *= x + y → 24
연습 문제
Q1. 10 % 3 의 결과는?
- A) 0 B) 1 C) 2 D) 3
Q2. 7 // 3 의 결과는?
- A) 2.333… B) 2 C) 3 D) 1
Q3. x=3; y=5; x *= x+y 실행 후 x의 값은?
- A) 8 B) 15 C) 24 D) 30
Q4. a=10, b=20 일 때 a + b * 10 - 5 / 5 의 결과와 타입은?
- A) int 209 B) float 209.0 C) int 210 D) float 210.0
# 연습 문제 정답
print("Q1 정답: B — 10÷3의 나머지 = 1")
print("Q2 정답: B — 7÷3의 몫 = 2 (소수점 버림)")
print("Q3 정답: C — x = 3 * (3+5) = 24")
print("Q4 정답: B — 10+200-1.0 = 209.0, 나눗셈 포함→float")
Q1 정답: B — 10÷3의 나머지 = 1
Q2 정답: B — 7÷3의 몫 = 2 (소수점 버림)
Q3 정답: C — x = 3 * (3+5) = 24
Q4 정답: B — 10+200-1.0 = 209.0, 나눗셈 포함→float