slow-tempo
  • 5. 연산자 (Python Operators)
    2024년 07월 08일 18시 04분 01초에 업로드 된 글입니다.
    작성자: slow-tempo

    산술 연산자

     

    수학 연산을 하는 연산자입니다.
    우선순위는 수학의 사칙연산하고 동일합니다.
    괄호로 묶는 것이 가장 우선순위이므로 헷갈리면 괄호로 묶는 것이 좋습니다.

    + (더하기)

    a=1
    b=1.1
    c=a+b
    print(c)

    - (빼기)

    a=3
    b=2.1
    c=a-b
    print(c)

    * (곱하기)

    a=2
    b=3
    c=a*b
    print(c)

    ** (제곱)

    a=2
    b=3
    c=a**b
    print(c)

    / (나누기)

    a=3
    b=2
    c=a/b
    print(c)

    // (몫)

    a=3
    b=2
    c=a//b
    print(c)

    % (나머지)

    a=5
    b=2
    c=a%b
    print(c)

    산술 연산자 우선순위 예시

    a=3
    b=5
    c=5//2*b**2+2
    print(c)
    더보기

    52

    처리 순서:
    1. b**2 = 25
    2. 5//2  = 2
    3. (순서 2 값)*(순서 1 값)= 50
    4. (순서 3 값)+2 = 52

     

    괄호로 묶었을 때:

    c=((5//2)*(5**2))+2

     

    비교 연산자

     

    비교(관계) 연산자는 기호를 기준으로 좌변과 우변을 비교합니다.

    == (같은가?)

    a=1
    b=1
    c= a==b
    print(c)
    더보기

    True

    != (다른가?)

    구버전에서는 <> 표기하였습니다.

    a=1
    b=2
    c= a!=b
    print(c)
    더보기

    True

    <,> (무엇이 더 큰가?, 작은가)?)

    a=1
    b=2
    print(a>b)
    print(a<b)
    더보기

    False
    True

    >=,<= (크거나 같다. 작거나 같다.)

    a=1
    b=2
    print(a<=1)
    print(a>=1)
    print(a<=b)
    print(a>=b)
    더보기

    True
    True
    True
    False

     

    할당 연산자

     

    변수에 값을 할당합니다.
    산술 연산자와 활용하여 식을 간단히 합니다.
    대입 연산자의 우선순위는 우변을 계산하고 마지막에 좌변을 계산합니다.

    = 대입

    a=1
    print(a)

    += (좌변과 우변을 더하고 대입)

    a=1
    a+=1
    print(a)

    -= (좌변과 우변을 빼고 대입)

    a=1
    a-=1
    print(a)

    *= (좌변과 우변을 곱하고 대입)

    a=2
    a*=2
    print(a)

    **= (좌변과 우변을 제곱하고 대입)

    a=3
    a**=3
    print(a)

    /= (좌변과 우변을 나누고 대입)

    a=4
    a/=2
    print(a)

    //= (좌변과 우변을 나누고 몫만 대입)

    a=5
    a//=2
    print(a)

    %= (좌변과 우변을 나누고 나머지만 대입)

    a=4
    a%=3
    print(a)

    대입연산자 우선순위 예시

    a=2
    a*=2+3/2
    print(a)
    더보기

    7.0

    처리 순서:
    1. 3/2 = 1.5
    2. 2+( 순서 1 값 ) = 3.5
    4. a*=(순서 2 값) = 7

     

    괄호로 묶었을 때:

    a*=(2+(3/2))

     

    논리 연산자

     

    논리연산자 기준으로 좌변과 우변을 논리연산을 합니다

    and (둘 다 참인가?)

    print(True and True)
    print(True and False)
    print(False and True)
    print(False and False)
    더보기

    True
    False
    False
    False

    or (하나라도 참인가?)

    print(True or True)
    print(True or Flase)
    print(Flase or True)
    print(Flase or Flase)
    더보기

    True
    True
    True
    False

    not (반대로)

    print(not True)
    print(not Flase)
    더보기

    False
    True

     

    BItwise(비트)  연산자

     

    연산을 2진법으로 바꿔서 계산합니다.

    & (AND 연산)

    각 비트 위치마다. 논리연산자 And연산을 합니다. 

    a=58 # (0b00111010)
    b=105 # (0b01101001)
    print(a&b)
    더보기

    40

    비트 계산:

      0011 1010

    &0110 1001

    =0010 1000

    | (OR 연산)

    각 비트 위치마다 논리연산자 OR연산을 합니다.

    |를 입력하는 방법은 Enter(엔터) 근처에 있는 \를 Shift(쉬프트)를 누르고 입력하면 됩니다.

    a=58 # (0b00111010)
    b=105 # (0b01101001)
    print(a|b)
    더보기

    123

    비트 계산:

      0011 1010

    &0110 1001

    =0111 1011

    ^ (XOR 연산)

    각 비트 위치마다 다르면 1, 같으면 0입니다.

    a=58 # (0b00111010)
    b=105 # (0b01101001)
    print(a^b)
    더보기

    83

    비트 계산:

      0011 1010

    &0110 1001

    =0101 0011

    ~(Complement 연산)

    a=58 # (0b00111010)
    print(~a)
    더보기

    -59

    비트 계산:

    ~ 0011 1010

    =1100 0101

    <<, >> (Shift 연산)

    오른쪽 수만큼 이동시키는 연산. 비트 범위를 넘어가는 비트는 무시합니다.

    a=58 # (0b00111010)
    print(a>>2)
    print(a<<2)
    더보기

    14
    232

    비트 계산:

    0011 1010 >>2 =0000 1110

    0011 1010 <<2 =1110 1000

     

     

    membership(멤버십) 연산자

     

    리스트나, 튜플, 문자열 등의 자료형에서 값의 유무를 확인합니다.

    in (안에 있는가?)

    나중에 for 문에서 유용하게 사용합니다.

    a=[1,2,3,4]
    print(2 in a)
    더보기

    True

    not in (안에 없는가?)

    a=[1,2,3,4]
    print(5 not in a)
    더보기

    True

     

    Identity(식별) 연산자

     

    두 객체의 메모리 위치를 비교합니다.

    is (메모리 공간이 같은가?)

    a = "ABC"
    b = a
    c = "ABC"
    print(a is b) 
    print(a is c)
    더보기

    True
    True

    짧은 문자열은 같은 메모리를 재활용합니다.

    is not (메모리 공간이 다른가?)

    a = [1, 2, 3]
    b = a
    c = [1, 2, 3]
    print(a is not b)
    print(a is not c)
    더보기

    False
    True

    list는 값이나 크기가 변경될 수 있어서 다른 메모리 위치에 저장하는 특성이 있습니다.

     

    참고자료: 연산자 우선순위

     

    Operator Description
    ** 지수 곱셈
    ~, +,` Ccomplement, 단항 플러스(양의 부호)와 단항 마이너스(음의 부호)
    *, /, //, % 곱셈, 나누셈, 몫, 나머지
    +. - 덧셈과 뺼셈
    >>, << 비트 시프트
    & 비트'AND'
    ^,| 비트 전용 'XOR'과 'OR'
    <=, <, >, >= 비교 연산자
    ==, !=(<>) 평등 연산자
    =, +=, -=, *=, **=, /=, //=, %= 할당 연산자
    is, is not 식별 연산자
    in, not in 멤버쉽 연산자
    and, or, not 논리 연산자
    댓글