본문 바로가기
IT/파이썬 기초 완전 정복

파이썬 기본 연산자와 수식 다루기 (3)

by 지식 발전소 2024. 4. 20.
728x90
반응형

 

파이썬에서 연산자와 수식을 다루는 것은 프로그래밍의 기본 바탕이 됩니다. 이번 장에서는 파이썬에서 사용되는 다양한 연산자와 수식 작성 방법에 대해 자세히 알아보겠습니다. 연산자와 수식을 잘 다루면 코드를 더욱 효율적으로 작성할 수 있습니다.

 

 

산술 연산자

산술 연산자는 기본적인 수학 연산을 수행하는 데 사용됩니다. 파이썬에서 사용되는 주요 산술 연산자는 다음과 같습니다.

  • + (더하기): 두 숫자를 더합니다. 5 + 3 은 8을 출력합니다.
  • - (빼기): 첫 번째 숫자에서 두 번째 숫자를 뺍니다. 10 - 4 는 6을 출력합니다.
  • * (곱하기): 두 숫자를 곱합니다. 3 * 7 은 21을 출력합니다.
  • / (나누기): 첫 번째 숫자를 두 번째 숫자로 나눕니다. 12 / 3 은 4.0을 출력합니다.
  • // (정수 나누기): 첫 번째 숫자를 두 번째 숫자로 나눈 후 소수점 이하를 버립니다. 14 // 3 은 4를 출력합니다.
  • % (나머지 계산): 첫 번째 숫자를 두 번째 숫자로 나눈 후 남는 나머지를 출력합니다. 17 % 5 는 2를 출력합니다.
  • * (거듭제곱): 첫 번째 숫자를 두 번째 숫자의 거듭제곱으로 계산합니다. 2 ** 3 은 8을 출력합니다.

예를 들어, 간단한 산술 연산을 수행하는 코드는 다음과 같습니다.

a = 10
b = 3
print(a + b)  # 13
print(a - b)  # 7
print(a * b)  # 30
print(a / b)  # 3.3333333333333335
print(a // b) # 3
print(a % b)  # 1
print(a ** b) # 1000

할당 연산자

할당 연산자는 변수에 값을 할당하는 데 사용됩니다. 파이썬에서 가장 일반적인 할당 연산자는 =입니다. 예를 들어, x = 5는 변수 x에 값 5를 할당합니다.

 

파이썬에서는 복합 할당 연산자도 제공합니다. 이러한 연산자는 연산과 할당을 동시에 수행할 수 있습니다. 예를 들어, x += 3은 x = x + 3과 동일한 의미입니다. 다른 복합 할당 연산자에는 -=, *=, /=, //=, %=, **= 등이 있습니다.

x = 10
x += 5  # 같은 표현: x = x + 5
print(x)  # 15

y = 20
y -= 7  # 같은 표현: y = y - 7
print(y)  # 13

비교 연산자

비교 연산자는 값들을 비교하고 boolean 값(True 또는 False)을 반환합니다. 파이썬에서 사용되는 주요 비교 연산자는 다음과 같습니다.

  • == (같음): 두 값이 같으면 True, 그렇지 않으면 False를 반환합니다. 5 == 5는 True를 출력합니다.
  • != (같지 않음): 두 값이 다르면 True, 그렇지 않으면 False를 반환합니다. 7 != 4는 True를 출력합니다.
  • > (초과): 첫 번째 값이 두 번째 값보다 크면 True, 그렇지 않으면 False를 반환합니다. 10 > 5는 True를 출력합니다.
  • < (미만): 첫 번째 값이 두 번째 값보다 작으면 True, 그렇지 않으면 False를 반환합니다. 3 < 9는 True를 출력합니다.
  • >= (이상): 첫 번째 값이 두 번째 값보다 크거나 같으면 True, 그렇지 않으면 False를 반환합니다. 8 >= 8은 True를 출력합니다.
  • <= (이하): 첫 번째 값이 두 번째 값보다 작거나 같으면 True, 그렇지 않으면 False를 반환합니다. 6 <= 10은 True를 출력합니다.

비교 연산자는 주로 조건문이나 반복문에서 사용됩니다.

x = 10
y = 15

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

논리 연산자

논리 연산자는 여러 조건을 결합하여 복잡한 boolean 식을 만들 때 사용됩니다. 파이썬에서 사용되는 주요 논리 연산자는 다음과 같습니다.

  • and: 두 조건이 모두 True일 때 True를 반환합니다. 그렇지 않으면 False를 반환합니다. (5 > 3) and (10 < 15)는 True를 출력합니다.
  • or: 두 조건 중 하나라도 True이면 True를 반환합니다. 그렇지 않으면 False를 반환합니다. (2 < 1) or (4 > 2)는 True를 출력합니다.
  • not: 조건의 boolean 값을 반전시킵니다. not True는 False를, not False는 True를 반환합니다.

논리 연산자는 프로그램의 흐름을 제어하는 데 중요한 역할을 합니다.

x = 10
y = 20
z = 30

print((x < y) and (y < z))  # True
print((x > y) or (y > z))   # False
print(not(x == y))          # True

비트 연산자

비트 연산자는 이진 비트 패턴을 직접 조작할 때 사용됩니다. 비트 연산은 저수준의 프로그래밍에서 주로 사용되지만, 때로는 고급 알고리즘에서도 활용될 수 있습니다. 파이썬에서 사용되는 주요 비트 연산자는 다음과 같습니다.

  • & (비트 AND): 각 비트 위치에서 두 숫자의 비트가 모두 1이면 1을, 그렇지 않으면 0을 출력합니다.
  • | (비트 OR): 각 비트 위치에서 두 숫자의 비트 중 하나라도 1이면 1을, 그렇지 않으면 0을 출력합니다.
  • ^ (비트 XOR): 각 비트 위치에서 두 숫자의 비트가 다르면 1을, 같으면 0을 출력합니다.
  • ~ (비트 NOT): 각 비트의 값을 반전시킵니다. 1은 0이 되고, 0은 1이 됩니다.
  • << (왼쪽 시프트): 비트 패턴을 왼쪽으로 시프트합니다. 비어 있는 자리는 0으로 채웁니다.
  • >> (오른쪽 시프트): 비트 패턴을 오른쪽으로 시프트합니다. 비어 있는 자리는 0으로 채웁니다.

비트 연산자는 주로 저수준의 프로그래밍이나 암호화, 압축 등의 특수한 용도로 사용됩니다.

a = 0b10111011
b = 0b11001101

print(bin(a & b))  # 0b10001001
print(bin(a | b))  # 0b11111111
print(bin(a ^ b))  # 0b1110110
print(bin(~a))     # -0b11000100
print(bin(a << 2)) # 0b1110110000
print(bin(b >> 1)) # 0b1100110

연산자 우선순위

연산자는 우선순위에 따라 계산됩니다. 파이썬의 연산자 우선순위는 다음과 같습니다(높은 우선순위부터):

  1. ** (거듭제곱)
  2. +x, -x, ~x (단항 연산자)
  3. *, /, //, % (곱셈, 나눗셈, 정수 나눗셈, 나머지)
  4. +, - (덧셈, 뺄셈)
  5. >>, << (비트 시프트 연산자)
  6. & (비트 AND)
  7. ^ (비트 XOR)
  8. | (비트 OR)
  9. ==, !=, >, >=, <, <=, is, is not, in, not in (비교 연산자)
  10. not (논리 NOT)
  11. and (논리 AND)
  12. or (논리 OR)

연산자 우선순위를 모르면 예기치 않은 결과가 발생할 수 있습니다. 따라서 괄호를 적절히 사용하여 의도한 대로 연산이 수행되도록 해야 합니다.

x = 10
y = 20
z = 30

result = x + y * z   # result = 610
result = (x + y) * z # result = 900

위 예제에서 볼 수 있듯이, y * z가 먼저 계산되어 result가 610이 됩니다. 하지만 괄호를 사용하면 의도한 대로 x + y가 먼저 계산되어 result가 900이 됩니다.

수식 작성하기

파이썬에서 수식은 연산자와 피연산자(값)를 조합하여 작성할 수 있습니다. 수식은 단순한 산술 연산부터 복잡한 논리 연산까지 다양한 형태로 나타낼 수 있습니다.

result = 2 * (3 + 4)     # 산술 연산
result = (x > 10) and (y < 20)  # 논리 연산
result = (a & 0xFF) | (b >> 8)  # 비트 연산

파이썬에서는 수식을 변수에 할당하거나 직접 출력할 수 있습니다. 또한 수식을 다른 수식의 일부로 사용할 수도 있습니다.

x = 10
y = 20
z = 30

result = x + y * z   # 610
print(result)

is_valid = (x > 0) and (y < 100) and (z != 0)  # True
print(is_valid)

final_value = (result + z) // 4  # 185
print(final_value)

수식을 작성할 때는 연산자 우선순위와 괄호 사용에 주의해야 합니다. 또한 변수와 상수를 적절히 조합하여 코드의 가독성과 유지보수성을 높일 수 있습니다.

증감 연산자

많은 프로그래밍 언어에서는 값을 1 증가시키거나 1 감소시키는 증감 연산자(++, --)를 제공합니다. 하지만 파이썬에서는 증감 연산자를 직접 제공하지 않습니다.

대신 파이썬에서는 다음과 같이 할당 연산자와 산술 연산자를 조합하여 증감 연산을 수행합니다.

x = 10
x += 1  # x = x + 1 (11)
x -= 1  # x = x - 1 (10)

또한 다음과 같이 복합 할당 연산자를 사용할 수도 있습니다.

x = 10
x = x + 1  # 11
x = x - 1  # 10

증감 연산은 반복문이나 특정 조건에서 값을 증가 또는 감소해야 할 때 주로 사용됩니다. 예를 들어, 다음과 같이 for 반복문에서 반복 횟수를 제어할 때 증감 연산이 유용합니다.

count = 0
for i in range(10):
    count += 1  # count = count + 1
    print(count)

증감 연산자가 없더라도 파이썬에서는 할당 연산자와 산술 연산자의 조합으로 값을 증가시키거나 감소시킬 수 있습니다. 이런 방식은 코드를 더 명확하게 만들어 가독성과 유지보수성을 높입니다.

삼항 연산자

삼항 연산자는 조건에 따라 값을 할당하는 간결한 방법입니다. 많은 프로그래밍 언어에서 조건 ? 값1 : 값2 형태의 삼항 연산자를 제공합니다. 하지만 파이썬에는 이런 형태의 삼항 연산자가 없습니다.

대신 파이썬에서는 다음과 같이 조건문을 사용하여 동일한 기능을 구현할 수 있습니다.

x = 10
y = 20
result = x if x > y else y
print(result)  # 20

위 코드는 x가 y보다 크면 result에 x를 할당하고, 그렇지 않으면 y를 할당합니다. 이렇게 하면 조건에 따라 값을 할당할 수 있습니다.

또한 파이썬에서는 다음과 같이 조건 식을 사용할 수도 있습니다.

x = 10
y = 20
result = "x is greater" if x > y else "y is greater or equal"
print(result)  # y is greater or equal

조건 식은 간결하고 가독성이 좋아 많이 사용되지만, 너무 복잡해지면 오히려 가독성이 떨어질 수 있습니다. 따라서 적절한 수준에서 사용하는 것이 좋습니다.

연산자 오버로딩

연산자 오버로딩은 사용자 정의 클래스에서 기존 연산자를 재정의하여 사용할 수 있는 기능입니다. 이를 통해 연산자를 클래스의 인스턴스에 맞게 동작하도록 할 수 있습니다.

예를 들어, + 연산자를 두 인스턴스의 값을 더하도록 오버로딩할 수 있습니다.

class Vector2D:
    def __init__(self, x, y):
        self.x = x
        self.y = y

    def __add__(self, other):
        return Vector2D(self.x + other.x, self.y + other.y)

v1 = Vector2D(1, 2)
v2 = Vector2D(3, 4)
v3 = v1 + v2
print(v3.x, v3.y)  # 4 6

위 예제에서 Vector2D 클래스의 __add__ 메서드를 정의하여 + 연산자를 오버로딩했습니다. 이제 두 Vector2D 인스턴스를 더하면 각 성분의 값이 더해진 새로운 인스턴스가 반환됩니다.

파이썬에서는 +, -, *, /, <, > 등의 다양한 연산자를 오버로딩할 수 있습니다. 이를 통해 사용자 정의 클래스에 맞는 연산 동작을 구현할 수 있습니다.

연산자 오버로딩은 특히 수학 라이브러리나 게임 엔진 등에서 많이 사용됩니다. 하지만 오버로딩을 남용하면 코드의 가독성과 유지보수성이 떨어질 수 있으므로 적절한 수준에서 사용해야 합니다.

연산자 활용 예제

이제 파이썬에서 연산자를 활용하는 몇 가지 예제를 살펴보겠습니다.

예제 1: 계산기 프로그램

def calculate(operator, x, y):
    if operator == "+":
        return x + y
    elif operator == "-":
        return x - y
    elif operator == "*":
        return x * y
    elif operator == "/":
        if y != 0:
            return x / y
        else:
            return "Cannot divide by zero"
    else:
        return "Invalid operator"

print(calculate("+", 10, 5))  # 15
print(calculate("-", 20, 7))  # 13
print(calculate("*", 4, 6))   # 24
print(calculate("/", 30, 3))  # 10.0
print(calculate("/", 25, 0))  # Cannot divide by zero
print(calculate("%", 17, 5))  # Invalid operator

이 예제에서는 간단한 계산기 프로그램을 구현했습니다. calculate 함수는 연산자와 두 개의 숫자를 입력받아 해당 연산의 결과를 반환합니다. 연산자에 따라 적절한 산술 연산이 수행되며, 0으로 나누는 경우와 잘못된 연산자가 입력된 경우를 처리합니다.

예제 2: 학점 계산기

score = 88

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"Your grade is {grade}")  # Your grade is B

이 예제에서는 학생의 점수를 입력받아 해당 점수에 맞는 학점을 계산합니다. 조건문과 비교 연산자를 활용하여 점수 범위에 따라 적절한 학점이 할당됩니다.

 

예제 3: 비트 연산 활용

# 비트 플래그 설정 및 확인
flags = 0b00000000  # 초기 플래그 값
flags |= 0b00000001 # 첫 번째 비트 설정
flags |= 0b00000100 # 세 번째 비트 설정

print(bin(flags))  # 0b101 (비트 플래그 값 출력)

# 비트 플래그 확인
first_flag_set = (flags & 0b1) != 0
third_flag_set = (flags & 0b100) != 0

print(first_flag_set)  # True
print(third_flag_set)  # True

이 예제에서는 비트 연산자를 활용하여 비트 플래그를 설정하고 확인합니다. 비트 플래그는 여러 상태를 단일 정수 값으로 표현하는 방법으로, 메모리 효율적입니다. 비트 OR 연산자(|=)를 사용하여 특정 비트를 설정하고, 비트 AND 연산자(&)를 사용하여 비트 값을 확인합니다.

이처럼 파이썬의 연산자는 다양한 방식으로 활용될 수 있습니다. 연산자를 잘 활용하면 코드를 더욱 간결하고 효율적으로 작성할 수 있습니다.

참고 자료

  1. "Python 연산자 문서" - Python 공식 문서, https://docs.python.org/3/library/operator.html
  2. "Python 연산자 우선순위" - Python 공식 문서, https://docs.python.org/3/reference/expressions.html#operator-precedence
  3. "파이썬 연산자 오버로딩" - 점프 투 파이썬, https://wikidocs.net/32061
  4. "Python Operators" - W3Schools, https://www.w3schools.com/python/python_operators.asp
  5. "파이썬 연산자" - 위키백과, https://ko.wikipedia.org/wiki/파이썬_연산자

 

 

한 고대 문서 이야기

여기 한 고대 문서가 있습니다. 이 문서는 B.C. 1,500년 부터 A.D 100년까지 약 1,600 여 년 동안 기록되었습니다. 이 문서의 저자는 약 40 명입니다. 이 문서의 고대 사본은 25,000 개가 넘으나, 사본간 오

gospel79.tistory.com

 

유튜브 프리미엄 월 1만원 할인받고 월 4000원에 이용하는 방법

올해 5월부터 월 8000원 정도이던 유튜브 프리미엄 요금이 15000원 정도로 인상됩니다. 각종 OTT 서비스, ChatGPT 같은 서비스들이 늘어나다보니 이런 거 몇 개만 이용하더라도 월 이용요금이 5만원을

stock79.tistory.com

 

"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."

728x90
반응형

댓글