연산자는 수학적 계산과 데이터 처리를 수행하기 위해 사용하는 기호 또는 기호 조합입니다.
예를 들어 덧셈할 때 사용하는 + 기호가 대표적인 연산자입니다.
연산자를 사용하면 숫자 연산을 물론 변수 조작, 논리 비교 등 다양한 작업을 수행할 수 있습니다.
연산에서 사용되는 항목의 개수에 따라 단항, 이항, 삼항 연산자로 구분할 수 있으며, 사용 목적에 따라 산술, 대입, 관계, 논리 연산자로 구분할 수도 있습니다.

연산자 종류 📊
연산자 종류 | 설명 | 예시 |
---|---|---|
산술 연산자 | 수학적 계산을 수행 | + , - , * , / , // , % , ** |
대입 연산자 | 변수에 값을 할당 | = , += , -= , *= , /= , //= , %= , **= |
비교 연산자 | 두 값을 비교하여 참/거짓 판별 | > , < , >= , <= , == , != |
논리 연산자 | 논리적 연산을 수행 | and , or , not |
부호 연산자 | 숫자의 부호를 변경 | + , - |
조건 연산자 | 조건에 따라 결과 선택 | 조건식 if 참값 else 거짓값 |
1. Python 연산자 🐍
산술 연산자 🔢
산술 연산자는 프로그래밍에서 기본적인 수학적 계산을 수행하는 역할을 합니다. 주요 산술 연산자에는 사칙 연산자와 몫과 나머지 연산자, 그리고 거듭제곱 연산자가 있습니다.
num1 = 100
num2 = 3
# 덧셈
print(num1 + num2) # 103
# 뺄셈
print(num1 - num2) # 97
# 곱셈
print(num1 * num2) # 300
# 나눗셈 (실수 결과)
print(num1 / num2) # 33.333333333333336
# 몫 (정수 나눗셈)
print(num1 // num2) # 33
# 나머지
print(num1 % num2) # 1
# 거듭제곱
print(num1 ** num2) # 1000000
💡 팁: / 연산자는 항상 실수 결과를 반환하고, // 연산자는 정수 몫을 반환합니다! 🔍
문제 1 - 산술 연산자 계산하기 (기초) 🎯
아래 코드의 주석을 참고하여, 산술 연산을 사용해 계산해보세요.
# 기본 변수
a = 20
b = 6
print("=== 산술 연산자 연습 ===")
# TODO: 아래 주석을 참고하여 코드를 완성해보세요
# 1. a와 b의 합계 계산하기
# sum_result =
# 2. a와 b의 차이 계산하기
# diff_result =
# 3. a를 b로 나눈 몫 계산하기
# quotient =
# 4. a를 b로 나눈 나머지 계산하기
# remainder =
# 5. a의 b제곱 계산하기
# power =
print("계산 결과:")
# print("합계:", sum_result)
# print("차이:", diff_result)
# print("몫:", quotient)
# print("나머지:", remainder)
# print("제곱:", power)
정답 보기
# 기본 변수
a = 20
b = 6
print("=== 산술 연산자 연습 ===")
# 1. a와 b의 합계 계산하기
sum_result = a + b
# 2. a와 b의 차이 계산하기
diff_result = a - b
# 3. a를 b로 나눈 몫 계산하기
quotient = a // b
# 4. a를 b로 나눈 나머지 계산하기
remainder = a % b
# 5. a의 b제곱 계산하기
power = a ** b
print("계산 결과:")
print("합계:", sum_result) # 26
print("차이:", diff_result) # 14
print("몫:", quotient) # 3
print("나머지:", remainder) # 2
print("제곱:", power) # 64000000
대입 연산자 📦
대입 연산자는 변수에 값을 할당하는 데 사용하는 연산자입니다. 마치 상자에 물건을 담는 것처럼, 변수라는 상자에 값이라는 물건을 담아 저장할 수 있습니다.
num1 = 100 # 기본 대입 연산자
복합 대입 연산자 🔄
복합 대입 연산자는 우리가 편하게 사용할 수 있도록 연산자를 줄여 놓은 것입니다. 기존에 다음과 같이 x = x + 3
이라는 식을 사용하여 x 값을 증가시켰습니다.
복합 대입 연산자를 사용하면 다음과 같이 단순하게 표현할 수 있습니다.
x = 1
x += 3 # x = x + 3과 동일
print(x) # 4
연산자 | 연산 내용 | 예시 |
---|---|---|
+= | 왼쪽 피연산자에 오른쪽 피연산자를 더한 결과값을 대입 | x += 3 → x = x + 3 |
-= | 왼쪽 피연산자에서 오른쪽 피연산자를 뺀 결과값을 대입 | x -= 3 → x = x - 3 |
*= | 왼쪽 피연산자에 오른쪽 피연산자를 곱한 결과값을 대입 | x *= 3 → x = x * 3 |
/= | 왼쪽 피연산자를 오른쪽 피연산자로 나눈 결과값을 대입 | x /= 3 → x = x / 3 |
//= | 왼쪽 피연산자를 오른쪽 피연산자로 나눈 몫을 대입 | x //= 3 → x = x // 3 |
%= | 왼쪽 피연산자를 오른쪽 피연산자로 나눈 나머지를 대입 | x %= 3 → x = x % 3 |
**= | 왼쪽 피연산자를 오른쪽 피연산자만큼 거듭제곱한 결과값을 대입 | x **= 3 → x = x ** 3 |
문제 2 - 복합 대입 연산자 사용하기 (기초) 🎯
아래 코드의 주석을 참고하여, 복합 대입 연산자를 사용해 변수 값을 변경해보세요.
# 초기값
score = 100
level = 1
print("=== 복합 대입 연산자 연습 ===")
print("초기값 - 점수:", score, "레벨:", level)
# TODO: 아래 주석을 참고하여 코드를 완성해보세요
# 1. score에 50을 더하기 (복합 대입 연산자 사용)
# score
# 2. score에서 20 빼기 (복합 대입 연산자 사용)
# score
# 3. score를 2로 나누기 (복합 대입 연산자 사용)
# score
# 4. level에 1 더하기 (복합 대입 연산자 사용)
# level
# 5. level을 3제곱하기 (복합 대입 연산자 사용)
# level
print("최종값 - 점수:", score, "레벨:", level)
정답 보기
# 초기값
score = 100
level = 1
print("=== 복합 대입 연산자 연습 ===")
print("초기값 - 점수:", score, "레벨:", level)
# 1. score에 50을 더하기 (복합 대입 연산자 사용)
score += 50
# 2. score에서 20 빼기 (복합 대입 연산자 사용)
score -= 20
# 3. score를 2로 나누기 (복합 대입 연산자 사용)
score /= 2
# 4. level에 1 더하기 (복합 대입 연산자 사용)
level += 1
# 5. level을 3제곱하기 (복합 대입 연산자 사용)
level **= 3
print("최종값 - 점수:", score, "레벨:", level)
# 최종값 - 점수: 65.0 레벨: 8
비교 연산자 ⚖️
비교 연산자는 두 개의 값을 비교하여 그 결과가 참(True)인지 거짓(False)인지 판별하는 연산자로, 관계 연산자라고도 부릅니다.
연산자 | 의미 | 예시 | 결과 |
---|---|---|---|
> | 왼쪽 값이 오른쪽 값보다 크다 | 5 > 3 |
True |
«/span> | 왼쪽 값이 오른쪽 값보다 작다 | 5 < 3 |
False |
>= | 왼쪽 값이 오른쪽 값보다 크거나 같다 | 5 >= 5 |
True |
<= | 왼쪽 값이 오른쪽 값보다 작거나 같다 | 5 <= 3 |
False |
== | 왼쪽 값과 오른쪽 값이 같다 | 5 == 5 |
True |
!= | 왼쪽 값과 오른쪽 값이 다르다 | 5 != 3 |
True |
# 숫자 비교
print(10 > 5) # True
print(10 < 5) # False
print(10 == 10) # True
print(10 != 5) # True
# 문자열 비교 (사전순으로 비교)
print("apple" < "banana") # True
print("apple" == "apple") # True
# 논리값 비교
print(True == True) # True
print(True == "True") # False (자료형이 다름)
# 변수와 값 비교
age = 20
print(age >= 18) # True
print(age == 20) # True
💡 팁: 문자열 비교는 사전순(알파벳 순)으로 이루어집니다. 대소문자도 구분하므로 주의하세요! 🔤
문제 3 - 비교 연산자 사용하기 (기초) 🎯
아래 코드의 주석을 참고하여, 비교 연산자를 사용해 결과를 예측해보세요.
# 기본 변수
x = 15
y = 10
z = 15
print("=== 비교 연산자 연습 ===")
print("x =", x, "y =", y, "z =", z)
# TODO: 아래 주석을 참고하여 결과를 예측해보세요
# 1. x가 y보다 큰가?
# result1 = x > y
# print("x > y:", result1)
# 2. x가 z와 같은가?
# result2 = x == z
# print("x == z:", result2)
# 3. y가 x보다 작거나 같은가?
# result3 = y <= x
# print("y <= x:", result3)
# 4. x가 y와 다른가?
# result4 = x != y
# print("x != y:", result4)
# 5. x가 10보다 크고 20보다 작은가?
# result5 = x > 10 and x < 20
# print("10 < x < 20:", result5)
정답 보기
# 기본 변수
x = 15
y = 10
z = 15
print("=== 비교 연산자 연습 ===")
print("x =", x, "y =", y, "z =", z)
# 1. x가 y보다 큰가?
result1 = x > y
print("x > y:", result1) # True
# 2. x가 z와 같은가?
result2 = x == z
print("x == z:", result2) # True
# 3. y가 x보다 작거나 같은가?
result3 = y <= x
print("y <= x:", result3) # True
# 4. x가 y와 다른가?
result4 = x != y
print("x != y:", result4) # True
# 5. x가 10보다 크고 20보다 작은가?
result5 = x > 10 and x < 20
print("10 < x < 20:", result5) # True
논리 연산자 🧠
논리 연산자는 논리적인 연산을 수행하여 참인지 거짓인지를 판단하는 연산자입니다. 두 개 이상의 논리값을 조합하여 새로운 논리값을 만들 수 있습니다.
연산자 | 의미 | 설명 |
---|---|---|
and | 논리곱(AND) | 연산자를 기준으로 왼쪽과 오른쪽 값이 모두 True일 때만 True를 반환하고 나머지는 모두 False를 반환합니다. |
or | 논리합(OR) | 연산자를 기준으로 왼쪽과 오른쪽 값 중 하나라도 True이면 True를 반환하고, 둘 다 False일 때만 False를 반환합니다. |
not | 논리부정(NOT) | 연산자 뒤에 오는 논리값을 반대로 바꿉니다. True는 False로, False는 True로 변환합니다. |
논리 연산자 진리표 📊
A | B | A and B | A or B | not A |
---|---|---|---|---|
True | True | True | True | False |
True | False | False | True | False |
False | True | False | True | True |
False | False | False | False | True |
# 논리 연산자 예제
age = 20
has_license = True
is_weekend = False
# and 연산자 - 모든 조건이 참이어야 참
can_drive = age >= 18 and has_license
print("운전 가능:", can_drive) # True
# or 연산자 - 하나라도 참이면 참
can_rest = is_weekend or age < 18
print("휴식 가능:", can_rest) # False
# not 연산자 - 논리값을 반대로
is_weekday = not is_weekend
print("평일인가:", is_weekday) # True
# 복합 논리 연산
complex_condition = (age >= 18 and has_license) or is_weekend
print("복합 조건:", complex_condition) # True
💡 팁: and 대신 &를, or 대신 |를 사용할 수도 있지만, 일반적으로는 and, or, not을 사용하는 것이 더 읽기 쉽습니다! 🔍
문제 4 - 논리 연산자 사용하기 (중급) 🎯
아래 코드의 주석을 참고하여, 논리 연산자를 사용해 조건을 판단해보세요.
# 기본 정보
age = 25
has_job = True
has_car = False
is_weekend = True
print("=== 논리 연산자 연습 ===")
print("나이:", age, "직업 있음:", has_job, "차 있음:", has_car, "주말:", is_weekend)
# TODO: 아래 주석을 참고하여 코드를 완성해보세요
# 1. 성인이고 직업이 있는가?
# adult_with_job =
# 2. 차가 있거나 주말인가?
# can_travel =
# 3. 직업이 없고 주말이 아닌가?
# no_job_weekday =
# 4. 성인이 아니거나 차가 없는가?
# not_adult_or_no_car =
# 5. (성인이고 직업이 있음) 또는 (주말이고 차가 있음)인가?
# complex_condition =
print("조건 판단 결과:")
# print("성인이고 직업 있음:", adult_with_job)
# print("차 있거나 주말:", can_travel)
# print("직업 없고 평일:", no_job_weekday)
# print("미성년자이거나 차 없음:", not_adult_or_no_car)
# print("복합 조건:", complex_condition)
정답 보기
# 기본 정보
age = 25
has_job = True
has_car = False
is_weekend = True
print("=== 논리 연산자 연습 ===")
print("나이:", age, "직업 있음:", has_job, "차 있음:", has_car, "주말:", is_weekend)
# 1. 성인이고 직업이 있는가?
adult_with_job = age >= 18 and has_job
# 2. 차가 있거나 주말인가?
can_travel = has_car or is_weekend
# 3. 직업이 없고 주말이 아닌가?
no_job_weekday = not has_job and not is_weekend
# 4. 성인이 아니거나 차가 없는가?
not_adult_or_no_car = age < 18 or not has_car
# 5. (성인이고 직업이 있음) 또는 (주말이고 차가 있음)인가?
complex_condition = (age >= 18 and has_job) or (is_weekend and has_car)
print("조건 판단 결과:")
print("성인이고 직업 있음:", adult_with_job) # True
print("차 있거나 주말:", can_travel) # True
print("직업 없고 평일:", no_job_weekday) # False
print("미성년자이거나 차 없음:", not_adult_or_no_car) # True
print("복합 조건:", complex_condition) # True
부호 연산자 ➕➖
논리 연산자의 not이 뒤에 따라오는 논리값을 반대로 바꿀 수 있는 것처럼, 부호 연산자는 숫자의 부호를 바꿉니다.
x = 10
print(x) # 10
# 음수로 변경
x = -x
print(x) # -10
# 다시 양수로 변경
x = +x
print(x) # -10 (양수 부호는 값에 영향 없음)
# 논리값에도 부호 연산자 적용 가능
is_True = True
print(-is_True) # -1 (True는 1로 변환되어 -1이 됨)
print(+is_True) # 1 (True는 1로 변환됨)
💡 팁: + 부호 연산자는 값에 영향을 주지 않지만, - 부호 연산자는 값을 반대로 바꿉니다! 🔄
문제 5 - 부호 연산자 사용하기 (기초) 🎯
아래 코드의 주석을 참고하여, 부호 연산자를 사용해 값을 변경해보세요.
# 기본 변수
num1 = 15
num2 = -8
is_positive = True
print("=== 부호 연산자 연습 ===")
print("초기값 - num1:", num1, "num2:", num2, "is_positive:", is_positive)
# TODO: 아래 주석을 참고하여 코드를 완성해보세요
# 1. num1의 부호를 바꿔보세요
# num1 =
# 2. num2의 부호를 바꿔보세요
# num2 =
# 3. is_positive의 부호를 바꿔보세요
# is_positive =
print("변경 후 - num1:", num1, "num2:", num2, "is_positive:", is_positive)
정답 보기
# 기본 변수
num1 = 15
num2 = -8
is_positive = True
print("=== 부호 연산자 연습 ===")
print("초기값 - num1:", num1, "num2:", num2, "is_positive:", is_positive)
# 1. num1의 부호를 바꿔보세요
num1 = -num1
# 2. num2의 부호를 바꿔보세요
num2 = -num2
# 3. is_positive의 부호를 바꿔보세요
is_positive = -is_positive
print("변경 후 - num1:", num1, "num2:", num2, "is_positive:", is_positive)
# 변경 후 - num1: -15 num2: 8 is_positive: -1
조건 연산자 ❓
조건 연산자는 조건에 따라 결과를 선택할 수 있는 연산자입니다. 간결한 표현으로 프로그램의 흐름을 제어할 수 있어 유용합니다.
기본 구조: 피연산자1 if 조건식 else 피연산자2
# 기본 예제
age = 20
status = "성인" if age >= 18 else "미성년자"
print(status) # 성인
# 숫자 비교
score = 85
grade = "A" if score >= 90 else "B" if score >= 80 else "C"
print(grade) # B
# 문자열 비교
name = "Alice"
greeting = "안녕하세요!" if name == "Alice" else "안녕!"
print(greeting) # 안녕하세요!
# 논리 연산과 함께 사용
is_weekend = True
message = "주말이에요!" if is_weekend else "평일이에요!"
print(message) # 주말이에요!
💡 팁: 조건 연산자는 삼항 연산자라고도 불리며, 간단한 조건문을 한 줄로 표현할 때 유용합니다! 🎯
문제 6 - 조건 연산자 사용하기 (중급) 🎯
아래 코드의 주석을 참고하여, 조건 연산자를 사용해 결과를 선택해보세요.
# 기본 변수
temperature = 25
is_sunny = True
time = 14
print("=== 조건 연산자 연습 ===")
print("온도:", temperature, "맑음:", is_sunny, "시간:", time)
# TODO: 아래 주석을 참고하여 코드를 완성해보세요
# 1. 온도가 20도 이상이면 "따뜻함", 아니면 "추움"으로 설정
# weather_feeling =
# 2. 맑고 온도가 25도 이상이면 "해변가기 좋음", 아니면 "실내 활동"으로 설정
# activity =
# 3. 시간이 12시 이후면 "오후", 아니면 "오전"으로 설정
# time_period =
# 4. 온도가 30도 이상이거나 맑지 않으면 "에어컨 필요", 아니면 "선풍기면 충분"으로 설정
# cooling =
print("결과:")
# print("날씨 느낌:", weather_feeling)
# print("추천 활동:", activity)
# print("시간대:", time_period)
# print("냉방 필요성:", cooling)
정답 보기
# 기본 변수
temperature = 25
is_sunny = True
time = 14
print("=== 조건 연산자 연습 ===")
print("온도:", temperature, "맑음:", is_sunny, "시간:", time)
# 1. 온도가 20도 이상이면 "따뜻함", 아니면 "추움"으로 설정
weather_feeling = "따뜻함" if temperature >= 20 else "추움"
# 2. 맑고 온도가 25도 이상이면 "해변가기 좋음", 아니면 "실내 활동"으로 설정
activity = "해변가기 좋음" if is_sunny and temperature >= 25 else "실내 활동"
# 3. 시간이 12시 이후면 "오후", 아니면 "오전"으로 설정
time_period = "오후" if time >= 12 else "오전"
# 4. 온도가 30도 이상이거나 맑지 않으면 "에어컨 필요", 아니면 "선풍기면 충분"으로 설정
cooling = "에어컨 필요" if temperature >= 30 or not is_sunny else "선풍기면 충분"
print("결과:")
print("날씨 느낌:", weather_feeling) # 따뜻함
print("추천 활동:", activity) # 해변가기 좋음
print("시간대:", time_period) # 오후
print("냉방 필요성:", cooling) # 선풍기면 충분
2. 연산자의 우선순위 🎯
연산자를 두 개 이상 함께 사용할 때는 연산의 순서가 정해져 있습니다. 이 순서를 연산자의 우선순위라고 합니다. 우선순위에 따라 연산이 수행되고 그 결과가 달라지기 때문에, 개발자에게 연산의 순서는 매우 중요한 개념입니다.
연산자 우선순위 표 📊
우선순위 | 연산자 | 설명 | 결합 방향 |
---|---|---|---|
1 (최고) | () | 괄호 (그룹화) | → |
2 | ** | 거듭제곱 | ← |
3 | +x, -x | 양수, 음수 (단항) | → |
4 | *, /, //, % | 곱셈, 나눗셈, 몫, 나머지 | → |
5 | +, - | 덧셈, 뺄셈 | → |
6 | <, <=, >, >= | 비교 연산자 | → |
7 | ==, != | 같음, 다름 | → |
8 | not | 논리 부정 | → |
9 | and | 논리곱 | → |
10 | or | 논리합 | → |
11 (최저) | =, +=, -=, *=, /=, //=, %=, **= | 대입 연산자 | ← |
최우선 연산자 괄호 🎯
복잡한 연산을 수행할 때는 우선순위를 한눈에 파악하기 어려울 수 있습니다. 따라서 먼저 처리해야 할 연산을 소괄호로 묶어서 우선순위를 가시적으로 표시하는 것이 좋습니다. 괄호 안에 있는 연산은 최우선 순위로, 다른 연산자보다 먼저 처리됩니다.
# 괄호 없이
result1 = 2 + 3 * 4
print(result1) # 14 (3 * 4 = 12, 2 + 12 = 14)
# 괄호 사용
result2 = (2 + 3) * 4
print(result2) # 20 ((2 + 3) = 5, 5 * 4 = 20)
# 복잡한 연산
result3 = (10 + 5) * 2 - 3 ** 2
print(result3) # 21 ((10 + 5) = 15, 3 ** 2 = 9, 15 * 2 = 30, 30 - 9 = 21)
연산자의 결합 방향 🔄
파이썬에서 여러 개의 연산자가 함께 사용될 때는 연산 순서뿐만 아니라 결합 방향도 중요합니다. 연산자를 기준으로 결합 방향이 왼쪽에서 오른쪽으로 결합되는지, 오른쪽에서 왼쪽으로 결합되는지에 따라 결과값이 달라지기 때문입니다.
# 결합 방향 예제
num1 = 200
num2 = 300
# 곱셈이 덧셈보다 우선순위가 높음
result1 = num1 * 2 + num2 # 200 * 2 + 300 = 400 + 300 = 700
print("result1:", result1) # 700
# 괄호로 우선순위 변경
result2 = num1 * (2 + num2) # 200 * (2 + 300) = 200 * 302 = 60400
print("result2:", result2) # 60400
# 덧셈과 곱셈의 우선순위
result3 = num1 + 3 * num2 # 200 + 3 * 300 = 200 + 900 = 1100
print("result3:", result3) # 1100
# 괄호로 우선순위 변경
result4 = (num1 + 3) * num2 # (200 + 3) * 300 = 203 * 300 = 60900
print("result4:", result4) # 60900
문제 7 - 연산자 우선순위 계산하기 (고급) 🎯
아래 코드의 연산 결과를 예측해보세요.
# 기본 변수
age = 23
is_student = True
adult_price = 3000
child_price = 2000
print("=== 연산자 우선순위 연습 ===")
print("나이:", age, "학생:", is_student)
print("성인 가격:", adult_price, "어린이 가격:", child_price)
# 할인 조건 계산
discount = (age >= 20) and is_student
print("할인 적용:", discount)
# 최종 가격 계산
final_price = adult_price if age >= 20 else child_price
if discount:
final_price = final_price * 0.8 # 20% 할인
print("최종 가격:", final_price)
연산 순서 퀴즈 🧠
다음 연산의 결과를 선택하세요:
문제 1: 3 + 4 * 2
의 결과는?
- A) 14
- B) 11
- C) 10
- D) 9
정답 보기
**정답: B) 11** 계산 과정: `3 + 4 * 2` = `3 + 8` = `11` (곱셈이 덧셈보다 우선순위가 높음)문제 2: (10 - 2) * 3 + 4
의 결과는?
- A) 28
- B) 30
- C) 32
- D) 34
정답 보기
**정답: A) 28** 계산 과정: `(10 - 2) * 3 + 4` = `8 * 3 + 4` = `24 + 4` = `28` (괄호 안의 뺄셈이 먼저, 그 다음 곱셈, 마지막에 덧셈)문제 3: 2 ** 3 * 4 + 1
의 결과는?
- A) 33
- B) 35
- C) 37
- D) 39
정답 보기
**정답: A) 33** 계산 과정: `2 ** 3 * 4 + 1` = `8 * 4 + 1` = `32 + 1` = `33` (거듭제곱이 곱셈보다 우선순위가 높음)💡 팁: 연산자 우선순위가 복잡할 때는 괄호를 적극 활용하여 의도를 명확하게 표현하는 것이 좋습니다! 코드의 가독성도 높아지고 실수도 줄일 수 있어요! 🎯