🐍 Python/🐍 기초 문법

[기초문법 3강] 파이썬 연산자와 표현식, 기본부터 실습까지

itstory(Booho) 2025. 1. 18. 19:10
728x90

 

2025.01.17 - [🐍 Python/🐍 기초 문법] - [기초문법 2강] 파이썬 변수와 데이터 타입, 기초부터 제대로 배우기

 

[기초문법 2강] 파이썬 변수와 데이터 타입, 기초부터 제대로 배우기

파이썬(Python)은 배우기 쉽고 강력한 프로그래밍 언어로, 초보자부터 전문가까지 모두가 사랑하는 언어입니다. 이번 글에서는 파이썬의 기본 중 하나인 변수, 숫자, 연산에 대해 알아보겠습니다.

boohoday.com

📌 목차

1. 연산자란?

파이썬에서 연산자(Operator)는 값과 값(피연산자, Operand) 사이에서 연산을 수행하는 기호 또는 키워드입니다. 즉, 연산자는 데이터를 조작하거나 특정 연산을 수행하는 데 사용됩니다.

피연산자와 연산자의 관계

연산자는 하나 이상의 피연산자(Operand)와 결합하여 연산을 수행합니다.

 

예제:

x = 10  # 정수형 피연산자
y = 3   # 정수형 피연산자
result = x + y  # + 연산자가 x와 y를 더하는 역할
print(result)  # 출력: 13

 

위 코드에서 +는 연산자, x와 y는 피연산자입니다.

파이썬에서 제공하는 연산자 종류

파이썬에는 여러 가지 연산자가 있으며, 다음과 같이 분류할 수 있습니다:

 

연산자 종류  설명  예제
산술 연산자 기본적인 수학 연산을 수행 +, -, *, /, //, %, **
비교 연산자 두 값을 비교하여 참/거짓을 반환 ==, !=, >, <, >=, <=
논리 연산자 논리적인 판단을 수행 and, or, not
할당 연산자 변수에 값을 할당하거나 변경 =, +=, -=, *=, /=, //=, %=, **=
비트 연산자 비트 단위의 연산을 수행 `&,

 

각 연산자에 대한 자세한 설명과 예제는 다음 섹션에서 다룰 예정입니다.


2. 산술 연산자 (Arithmetic Operators)

파이썬에서 산술 연산자는 기본적인 수학 연산을 수행하는 연산자입니다. 이 연산자는 두 개의 피연산자를 받아 사칙연산을 포함한 다양한 연산을 수행합니다.

산술 연산자의 종류와 기능

연 산 자 설 명  예 제
+ 덧셈 2 + 3 = 5
- 뺄셈 5 - 2 = 3
* 곱셈 3 * 4 = 12
/ 나눗셈 10 / 2 = 5.0
// 10 // 3 = 3
% 나머지 10 % 3 = 1
** 거듭제곱 2 ** 3 = 8

산술 연산자 예제

연산자 우선순위 (괄호 사용)

산술 연산자의 우선순위는 기본적으로 수학 연산의 우선순위를 따릅니다:

  1. 거듭제곱 (**)
  2. 곱셈, 나눗셈, 몫 (*, /, //, %)
  3. 덧셈, 뺄셈 (+, -)

우선순위를 명확하게 하려면 괄호 ()를 사용하는 것이 좋습니다.

result = 10 + 5 * 2  # 10 + (5 * 2) = 20
result_with_paren = (10 + 5) * 2  # (10 + 5) * 2 = 30
print(result, result_with_paren)

3. 비교 연산자 (Comparison Operators)

비교 연산자는 두 개의 값을 비교하여 참(True) 또는 거짓(False)을 반환하는 연산자입니다. 조건문에서 자주 사용되며, 프로그램의 흐름을 제어하는 데 중요한 역할을 합니다.

비교 연산자의 종류와 기능

연산자 설명 예제 결과
== 두 값이 같은지 확인 5 == 5 True
!= 두 값이 다른지 확인 5 != 3 True
> 왼쪽 값이 오른쪽 값보다 큰지 확인 5 > 3 True
< 왼쪽 값이 오른쪽 값보다 작은지 확인 5 < 3 False
>= 왼쪽 값이 오른쪽 값보다 크거나 같은지 확인 5 >= 5 True
<= 왼쪽 값이 오른쪽 값보다 작거나 같은지 확인 3 <= 5 True

 

비교 연산자 예제

x = 15
y = 10

print(x == y)  # False
print(x != y)  # True
print(x > y)   # True
print(x < y)   # False
print(x >= 15) # True
print(y <= 5)  # False

 

1. == (같다)

 

2. != (같지 않다)

 

3. > (크다)

 

4. < (작다)

 

5. >= (크거나 같다)

 

6. <= (작거나 같다)

복합 조건에서 사용

비교 연산자는 논리 연산자(and, or)와 함께 사용할 수 있습니다.

x가 5보다 크고 y가 15보다 큰 경우
 z가 10보다 작거나 y가 20과 같은 경우

문자열 비교도 가능

파이썬에서는 문자열도 비교 연산자를 사용할 수 있습니다. 문자열은 사전순(알파벳순) 비교가 이루어집니다.

print("apple" == "apple")  # True
print("apple" < "banana")   # True ('a'는 'b'보다 앞에 있음)
print("hello" > "hi")      # False ('h'는 같지만 'e' < 'i')

비교 연산자를 조건문에서 활용하기

비교 연산자는 if 문과 함께 사용하여 프로그램의 흐름을 결정하는 데 활용됩니다.

age = 20
if age >= 18:
    print("성인입니다.")
else:
    print("미성년자입니다.")

 

728x90

4. 논리 연산자 (Logical Operators)

논리 연산자는 참(True)과 거짓(False) 값을 결합하여 논리적인 판단을 수행하는 연산자입니다. 주로 조건문에서 사용되며, 여러 개의 비교 연산자를 조합할 때 유용하게 활용됩니다.

논리 연산자의 종류와 기

연산자 설명 예제
and 두 조건이 모두 True일 때만 True (5 > 3) and (10 > 5) # 결과: True
or 둘 중 하나라도 True이면 True (5 > 3) or (10 < 5) # 결과: True
not 논리 값을 반대로 변경 (True → False) not (5 > 3) # 결과: False

논리 연산자 예제

x = 10
y = 5

print(x > 5 and y < 10)  # True (두 조건 모두 참)
print(x > 15 or y < 10)  # True (둘 중 하나가 참)
print(not (x > 5))       # False (참을 거짓으로 변경)

논리 연산자와 비교 연산자 함께 사용하기

논리 연산자는 비교 연산자와 결합하여 더 복잡한 조건을 만들 때 유용합니다.

age = 25
is_student = False

if age >= 18 and not is_student:
    print("성인입니다. 학생이 아닙니다.")
else:
    print("미성년자이거나 학생입니다.")

논리 연산자의 우선순위

논리 연산자는 not → and → or 순서로 실행됩니다. 하지만 괄호 ()를 사용하여 연산 순서를 명확하게 표현하는 것이 좋습니다.

result = True or False and False  # True (and가 먼저 실행됨)
result_with_paren = (True or False) and False  # False

print(result)  # True
print(result_with_paren)  # False

 

4-1. and 연산자

  • 두 조건이 모두 True일 때만 결과가 True입니다.
  • 하나라도 False이면 결과는 False입니다.
조건1 조건2 결과
True True True
True False False
False True False
False False False

예시:

a=3
b=5

a > 1 and b < 6 # 3 > 1 and 5 < 6
False

a == 3 and b == 5 # 3 == 3 and  5 == 5 
False

a > 1 and b > 6 # 3 > 1 and 5 > 6 
True

 

4-2. or 연산자

  • 두 조건 중 하나라도 True이면 결과가 True입니다.
  • 둘 다 False일 때만 결과가 False입니다.
조건1 조건2 결과
True True True
True False True
False True True
False False False

예시:

 

4-3. not 연산자

  • 조건의 논리 값을 반대로 뒤집습니다.
  • True → False, False → True

조건결과 (not 조건)

조건결과 not 조건 결과
True False
False True

예시:

 

보기 쉬운 표

연산자 설명 예제 결과
and 두 조건이 모두 참일 때 True True and False False
or 하나라도 참이면 True False or True True
not 조건의 논리값을 반대로 바꿈 not True False

5. 할당 연산자 (Assignment Operators)

할당 연산자는 변수에 값을 저장하거나 업데이트하는 데 사용되는 연산자입니다. 단순한 값 할당뿐만 아니라, 기존 값에 연산을 적용하여 업데이트하는 복합 할당 연산자도 포함됩니다.

할당 연산자의 종류와 기능

 

연산자  설명  예제
= 변수에 값을 할당 x = 10 (x에 10 할당)
+= 기존 값에 더한 후 할당 x += 5 # x = x + 5
-= 기존 값에서 뺀 후 할당 x -= 3 # x = x - 3
*= 기존 값에 곱한 후 할당 x *= 2 # x = x * 2
/= 기존 값에 나눈 후 할당 x /= 4 # x = x / 4
//= 기존 값에 정수 나눗셈 후 할당 x //= 2 # x = x // 2
%= 기존 값에 나머지 연산 후 할당 x %= 3 # x = x % 3
**= 기존 값에 거듭제곱 연산 후 할당 x **= 2 # x = x ** 2

할당 연산자 예제

x = 10  # 기본 할당
x += 5  # x = x + 5  (15)
x -= 3  # x = x - 3  (12)
x *= 2  # x = x * 2  (24)
x /= 4  # x = x / 4  (6.0)
x //= 2 # x = x // 2 (3)
x %= 3  # x = x % 3  (0)
x **= 2 # x = x ** 2 (0)

print(x)  # 최종 결과

할당 연산자 활용: 누적 연산

할당 연산자는 반복문과 함께 자주 사용됩니다.

total = 0
for i in range(1, 6):
    total += i  # 1부터 5까지 더하기

print(total)  # 15

할당 연산자와 데이터 타입 변환

num = 10
num /= 2  # 결과는 5.0 (정수가 아닌 실수로 변환됨)
print(num, type(num))  # 출력: 5.0 <class 'float'>

 


6. 비트 연산자 (Bitwise Operators)

비트 연산자는 이진수(bit) 단위로 연산을 수행하는 연산자입니다. 주로 저수준 프로그래밍, 암호화, 데이터 압축, 네트워크 프로그래밍 등에서 사용됩니다.

비트 연산자의 종류와 기능

연산자 설명 예제
& AND 연산 (둘 다 1이면 1) 5 & 3 # 결과: 1
` ` OR 연산 (둘 중 하나라도 1이면 1)
^ XOR 연산 (다르면 1) 5 ^ 3 # 결과: 6
~ NOT 연산 (비트 반전) ~5 # 결과: -6
<< 왼쪽 시프트 (비트를 왼쪽으로 이동) 5 << 1 # 결과: 10
>> 오른쪽 시프트 (비트를 오른쪽으로 이동) 5 >> 1 # 결과: 2

비트 연산자 예제

x = 5  # 0000 0101 (2진수 표현)
y = 3  # 0000 0011

print(x & y)  # 0000 0001 -> 1
print(x | y)  # 0000 0111 -> 7
print(x ^ y)  # 0000 0110 -> 6
print(~x)     # 1111 1010 -> -6 (보수 표현)

비트 시프트 연산

비트 시프트 연산은 비트를 왼쪽(<<) 또는 오른쪽(>>)으로 이동시켜 숫자를 빠르게 연산하는 방법입니다.

x = 5  # 0000 0101
print(x << 1)  # 0000 1010 -> 10 (2배 증가)
print(x >> 1)  # 0000 0010 -> 2 (1/2 감소)

 


7. 연산자의 우선순위 (Operator Precedence)

연산자의 우선순위(Precedence)는 여러 개의 연산자가 포함된 수식에서 어떤 연산이 먼저 수행될지를 결정합니다.

파이썬에서는 수학적 연산의 일반적인 규칙을 따르며, 우선순위를 명확하게 하기 위해 괄호 ()를 사용하는 것이 중요합니다.

연산자의 우선순위 표

아래는 연산자의 우선순위가 높은 순서대로 정리한 표입니다.

우선순위 연산자 설명
1 () 괄호 (가장 높은 우선순위)
2 ** 거듭제곱
3 +x, -x, ~x 단항 연산자 (양수, 음수, 비트 반전)
4 *, /, //, % 곱셈, 나눗셈, 몫, 나머지
5 +, - 덧셈, 뺄셈
6 <<, >> 비트 시프트 연산
7 & 비트 AND
8 ^ 비트 XOR
9 ` `
10 ==, !=, >, <, >=, <= 비교 연산자
11 not 논리 NOT
12 and 논리 AND
13 or 논리 OR
14 = 및 +=, -=, *=, /= ... 할당 연산자 (가장 낮은 우선순위)

연산자의 우선순위 예제

result1 = 10 + 5 * 2  # 10 + (5 * 2) = 20
result2 = (10 + 5) * 2  # (10 + 5) * 2 = 30

print(result1)  # 20
print(result2)  # 30

연산자 결합 방향 (Associativity)

우선순위가 같은 연산자가 여러 개 있을 때, 연산이 수행되는 방향을 결합 방향(Associativity)라고 합니다.

  • 왼쪽에서 오른쪽 방향(Left to Right): 대부분의 연산자가 따름
  • 오른쪽에서 왼쪽 방향(Right to Left): **(거듭제곱), 할당 연산자 (= 등)
print(2 ** 3 ** 2)  # 2 ** (3 ** 2) = 2 ** 9 = 512

 


8. 표현식(Expression)과 연산자의 조합

연산자를 조합하여 만든 식을 표현식(Expression)이라고 합니다. 표현식은 값을 생성하거나 연산을 수행하는 코드 조각이며, 모든 프로그래밍에서 중요한 개념입니다.

표현식의 기본 개념

파이썬에서는 연산자와 피연산자를 조합하여 표현식을 구성할 수 있습니다.

x = 10 + 5  # 10과 5를 더한 값(15)을 변수 x에 저장

위 코드에서 10 + 5는 표현식(Expression)이며, 결과값 15가 반환됩니다.

다양한 표현식 예제

표현식은 다양한 연산자를 조합하여 사용할 수 있습니다.

(1) 수학 연산을 포함한 표현식

result = (10 + 5) * 3 / 2
print(result)  # 22.5

(2) 비교 연산을 포함한 표현식

is_greater = (10 + 5) > (3 * 4)
print(is_greater)  # True

(3) 논리 연산을 포함한 표현식

valid = (5 > 3) and (10 != 2)
print(valid)  # True

표현식과 변수 활용

표현식은 단순한 수학 연산뿐만 아니라, 변수와 함께 사용하여 더 복잡한 연산을 수행할 수 있습니다.

x = 10
y = 5
z = x * y + (x - y) / 2
print(z)  # 52.5

함수를 활용한 표현식

표현식은 함수 호출과 함께 사용할 수도 있습니다.

def square(num):
    return num ** 2

result = square(4) + square(3)
print(result)  # 25 (16 + 9)

 


9. 실전 예제: 복합 연산 활용하기

연산자는 단순한 계산을 넘어서 다양한 프로그래밍 기법에 활용될 수 있습니다. 이번 섹션에서는 조건문과 연산자를 조합하여 실제 개발에서 활용할 수 있는 예제를 살펴봅니다.

(1) 조건문과 연산자 활용하기

조건문과 연산자를 조합하여 특정 조건을 만족하는 코드를 작성할 수 있습니다.

age = int(input("나이를 입력하세요: "))
if age >= 18 and age < 65:
    print("성인 요금이 적용됩니다.")
else:
    print("할인 요금이 적용됩니다.")

설명:

  • and 연산자를 사용하여 나이가 18 이상 그리고 65 미만인지 확인
  • 조건을 만족하면 "성인 요금"을 출력, 그렇지 않으면 "할인 요금"을 출력

(2) 점수에 따른 학점 계산기

score = int(input("점수를 입력하세요: "))
if score >= 90:
    grade = "A"
elif score >= 80:
    grade = "B"
elif score >= 70:
    grade = "C"
elif score >= 60:
    grade = "D"
else:
    grade = "F"

print(f"당신의 학점은 {grade}입니다.")

설명:

  • 비교 연산자와 elif를 사용하여 점수에 따라 학점을 판별
  • f-string을 사용하여 결과를 출력

(3) 간단한 계산기 프로그램

사용자로부터 연산자를 입력받아 계산을 수행하는 프로그램입니다.

def calculator(a, b, operator):
    if operator == "+":
        return a + b
    elif operator == "-":
        return a - b
    elif operator == "*":
        return a * b
    elif operator == "/":
        return a / b if b != 0 else "0으로 나눌 수 없습니다."
    else:
        return "올바른 연산자를 입력하세요."

num1 = float(input("첫 번째 숫자를 입력하세요: "))
operator = input("연산자를 입력하세요 (+, -, *, /): ")
num2 = float(input("두 번째 숫자를 입력하세요: "))

print("결과:", calculator(num1, num2, operator))

 

설명:

  • 입력된 연산자에 따라 산술 연산을 수행
  • if-elif를 사용하여 연산 종류를 판별
  • 0으로 나누기 예외 처리 포함

💡 추가 학습 추천

🔹 연산자를 활용한 조건문, 반복문 연습하기

🔹 람다 함수와 연산자 활용 심화 학습

🔹 컬렉션 자료형(List, Dict, Set)과 연산자 응용

728x90
반응형