본문 바로가기
아이티/파이썬

너무 쉬운 파이썬 강좌 3) 파이썬 기초 강좌 연산자

by 베베슈슈 2023. 11. 19.

파이썬 기초강좌 대표 이미지
파이썬 기초강좌 대표 이미지

너무 쉬운 파이썬 강좌 2) 

목차

     

    본격적으로 코딩을 시작하기 위해서는 이런저런 이론들을 배워야 한다. 학교에서 수학을 배우기 위해 덧샘, 뺄셈부터 배우는 것처럼, 변수나 자료구조, if나 for 같은 제어구문들의 사용법을 배워야 하는데 예전에 다른 프로그램을 공부해 봤다면 쉽게 적응할 수 있겠지만 처음이라면 하나하나 잘 익혀둬야 한다.

     

    이번 강좌에서는 그 중에서 기초 문법 중 하나인 연산자에 대한 이야기를 해볼까 한다. 연산자라고 하면 + - × ÷ 같은 연산자를 말하는데 일반적으로 수학에서 사용하는 것과는 조금 다른 부분이 있어서 그런 부분을 좀 더 살펴보려고 한다. 

    파이썬에는 크게 7가지 종류의 연산자가 있어  두 값 사이의 연산을 쉽게 할 수 있도록 해준다.

    • 산술연산자
    • 할당연산자
    • 비교연산자
    • 논리연산자
    • 멤버십연산자
    • 식별연산자
    • 비트연산자

    이렇게 7가지의 연산자인데 초급단계에서 꼭 알아야 할 부분을 우선 설명하고 중급이상으로 가야 필요한 부분들은 이런 게 있다는 저도만 알고 넘어가는 게 좋다. 비트연산자 같은 것을 알려면 초창기 컴퓨터인 계산기 영역까지 생각할 필요가 있는데 요즘처럼 메모리도 넘쳐나는 컴퓨터를 사용하면서 굳이 암호문? 같은 코딩을 할 필요는 없으니 처음엔 쉽게 접근할 필요가 있다.

     

    산술연산자

    산술연산자는 우리가 사칙연산으로 사용하는 더하기, 곱하기, 빼기, 나누기는 이미 뜻을 알고 있기에 크게 어려울 것이 없다. 모듈로 연산(%)은 프로그램에서 자주 사용하는 것으로 아주 자주 사용되는데 연산자 중에서 가장먼저 익숙해져야 할 녀석이다.

    연산자 역할
    + 두 값을 더한다.
    - 왼쪽 값에서 오른쪽 값을 뺀다.
    * 두 값을 곱한다.
    / 왼쪽 값을 오른쪽 값으로 나눈다. 결과는 부동소수점으로 나온다.
    % 두 수로 나눈 나머지를 구한다. (모듈로 연산이다.)
    ** 거듭제곱을 계산한다.
    // 두 수로 나눈 몫을 구한다. 결과는 정수로 나온다.

     

    파이썬의 산술 연산자는 모두 7개로 아래의 예제처럼 사용할 수 있다.

    a = 10
    b = 4
    
    addition = a + b      # 덧셈
    subtraction = a - b   # 뺄셈
    multiplication = a * b  # 곱셈
    division = a / b      # 나눗셈
    remainder = a % b     # 나머지
    quotient = a // b     # 몫
    exponentiation = a ** b  # 거듭제곱
    
    print( addition, subtraction, multiplication, division, remainder, quotient, exponentiation)
    14 6 40 2.5 2 2 10000

     

    결과 값을 보면 나눗셈까지는 예상과 다르지 않을 것이다. 나머지 경우는 결과 값은 예상이 될 텐데 어떤 경우에 쓰이는지 설명은 좀 필요할 것 같다. 모듈로연산은 앞으로 프로그램을 계속한다면 자주 보게 되기 때문에 한번 더 짚고 넘어가고자 한다.

    홀수 짝수 판별(모듈로 예제)

    값을 입력 받았을 때 그 수가 홀수인지 짝수인지를 판단해야 하는 경우가 있다면 % 연산자를 사용해서 루틴을 나눌 수 있다. 값을 입력받은 후 %로 나누어서 나머지가 0이 나오면 짝수, 1이 나오면 홀수로 판별할 수 있다.

    get_num = int(input("값을 입력해 주세요."))
    
    if get_num % 2 == 0:                  #입력 받은 값을 2로 나눈 나머지가 0이면 짝수
    	print("입력하신 값은 짝수입니다.")
    else:
    	print("입력하신 값은 홀수입니다.")

     

    할당연산자

    할당연산자 예시 역할
    = a = b a에 b를 할당한다.
    += a += b a에 a+b 값을 할당한다.
    -= a -= b a에 a-b 값을 할당한다.
    *= a *= b a에 a*b 값을 할당한다.
    /= a /= b a에 a/b 값을 할당한다.
    %= a %= b a에 a를 b로 나눈 나머지를 할당한다.
    **= a **= b a에 a의 b제곱의 값을 할당한다.
    //= a //= b a에 a를 b로 나눈 몫을 할당한다.

     

    할당연산자는 좌측의 변수에 우측의 값을 할당하는 = 연산자이다. 기본적으로는 수학에서 적용되는 연산자의 기능을 베이스로 만들어진 거라서 쉽게 익숙해질 수 있다. 두 번째 줄의 +=부터는 익숙하지 않은 모양인데. += 부터 //= 까지는 할당연산자와 산술연산자를 합쳐서 만든 단축키라고 생각하면 될 것 같다.

    눈치챈 사람들도 있겠지만, '='을 제외한 'a (연산자) = b' 꼴은 'a = a (연산자) b' 꼴과 같다는 사실을 알 수 있다. 할당연산자를 사용함으로써 변수에 다른 값을 연산한 후 결과를 재할당하는 코드를 더 편리하게 줄여 쓸 수 있다. 또한 비트연산자도 할당연산자로 쓸 수 있다. (&=, |=, ^=, <<=, >>=) 

    a = 5
    b = 7
    a *= b  #a에 a*b 의 값인 35(5*7) 를 할당 
    print(a) 
    # 결과:35

    비교연산자

    두 개의 값을 비교할 때 사용된다. 총 6개가 있다. 비교연산자도 제어구문을 사용하기 전에 익숙해져야 할 중요한 연산자다. 위의 예제 중 입력받은 값의 홀수 짝수 판별 기능의 예를 들면

     

    if get_num % 2 == 0 :

     

    이 코드를 예를 들어 우리말로 바꿔보자면 비교연산자(==)를 기준으로 "왼쪽인 get_num을 2로 나누었을 때의 나머지와 우측인 0이 같다면" 이라고 번역할 수 있다. 만일 비교연산자가 != 였다면 "왼쪽인 get_num을 2로 나누었을 때의 나머지와 우측인 0이 다르다면" 이라는 뜻이 되었을 것이다. 비교연산자는 지금 바로 이해가 되지 않는다면 이런 게 있다는 것만 알고 넘어가도 된다. 나중에 제어구문에서 비교연산자를 접하게 될 텐데 그때 다시 돌아와서 확인하는 방법도 있다.

    비교연산자 역할
    == 같다
    != 다르다
    > 왼쪽 값이 더 크다
    < 오른쪽 값이 더 크다
    >= 왼쪽 값이 크거나 같다
    <= 왼쪽 값이 작거나 같다

     

    a = 5
    b = 3
    print(a>=b)
    #결과: True - 'a가 b보다 작거나 같다'가 참이기 때문에 결과 값은 True가 된다.

     

    논리 연산자

    논리 연산자들은 조건문들을 조합할 때 사용된다. 다음과 같이 3가지가 있다.

    논리연산자 역할
    and 둘 다 참이면 True을, 아니면 False를 반환한다.
    or 둘 중 하나라도 참이면 True를, 아니면 False를 반환한다.
    not 결과를 뒤집어서 거짓이면 True를, 참이면 False를 반환한다.  

     

    x = 3
    y = 5
    print(x > 4 and y > 2) 
    #결과: False - y > 2는 참이지만, x > 4는 거짓이기 때문에 False를 반환했다.
    print(x > 4 or y > 2)
    #결과: True - x > 4가 참으로, 하나라도 참이기 때문에 True를 반환했다.
    print(not x < 5)
    #결과: False - x < 5라는 조건문이 참이기 때문에 결과를 반대로 뒤집어 False를 반환했다.

     

    멤버십 연산자

    멤버십 연산자는 특정 값이 (문자열, 리스트 등에) 포함되어 있는지 확인하기 위해 사용된다. 멤버십 연산자는 두 가지 밖에 존재하지 않는다. 다른 언어에서는 멤버십연산자가 없는 경우들이 많아 포함이 되어있는지를 확인하려면 별도로 코드를 만들거나 만들어진 함수를 이용하여야 하는데 파이썬이 작업능률이 좋은 건 이런 부분 때문이라고 생각된다.

    멤버십 연산자 예시 역할
    in a in b a가 b에 포함되어 있으면 True를 반환한다.
    not in a not in b a가 b에 포함되어 있지 않으면 True를 반환한다.

     

    x = [1, 4, 5, 3]
    print(2 not in x) 
    #결과: True - x라는 리스트에 2 값이 포함되지 않기 때문에 True를 반환했다.

     

    식별연산자

    식별연산자는 두 객체의 메모리 주소를 비교하여 두 객체가 동일한지 여부를 판단할 때 쓰인다. 항등 연산자도 멤버십 연산자와 같이 단 두 가지 밖에 존재하지 않는다. 

    식별연산자는 두 객체의 값이 같은지 비교하는 것이 아니라(is 와 ==이 다르다.) 메모리 주소를 비교하는 것이기 때문에 값이 같더라도 두 객체가 동일하지 않다면, 'is' 연산자에서 'False'를 반환한다.

    식별 연산자 역할
    is 두 객체가 똑같을 때, True를 반환한다.
    is not 두 객체가 다를 때, True를 반환한다.

     

    비트 연산자

    비트연산자는 이진수들을 비교할 때 쓰이기 때문에 이진수를 기반으로 계산한다.

    비트 연산자 역할
    & (and) 두 비트가 둘 다 1인 자리에 1을 넣는다. 
    |  (or) 두 비트 중 하나라도 1이 되면 결과가 1, 아니면 0이 된다.
    ^  (xor) 두 비트가 다르면 1, 아니면 0이다.
    ~  (not) 비트를 반전시켜 0인 비트는 1, 1인 비트는 0으로 만든다. (2진수에서의 보수를 구한다.) 이 연산자는 피연산자가 하나이다.
    << 비트를 왼쪽으로 이동
    >> 비트를 오른쪽으로 이동

     

    이렇게 7가지의 연산자를 소개하였다. 연산자는 앞으로도 계속 사용 될 부분이라 지금 익숙하지 않다고 해도 프로그램을 계속하다 보면 자연스럽게 익숙해진다. 다만 멤버십연산자나 모듈로연산자처럼 한번 봐두지 않으면 알기 어려운 부분도 있는 만큼 한 번은 소개하고 넘어가는 게 좋다고 생각이 되어 연산자 소개를 먼저 해보았다. 다음번에는 자료형과 제어구문을 배운 뒤 본격적으로 프로그램 코딩을 해보면 좋을 것 같다.