본문 바로가기
Programming/Python

[Python] 수식과 연산자

by inyeong 2024. 4. 21.

1. 산술 연산자

  • + 	# 덧셈
    -	# 뺄셈
    *	# 곱셈
    /	# (실수) 나눗셈
    //	# 정수 나눗셈, 몫
    %	# 나머지
    **	# 제곱
  • 곱셈 : xy x*y
  • 정수와 부동소수점 수를 혼합 연산하면 수식의 결과는 항상 부동소수점이다.
    8+4.0=12.0
  • 파이썬에서 /(나눗셈)은 항상 부동소수점으로 계산된다.
    7/4=1.75
     
  • 몫과 나머지는 divmod()함수를 이용하여 계산할 수도 있다. 
    x=10
    y=3
    quotient,ramainder=divmod(x,y)
    print(quotient,ramainder)
    
    # 3 1
     
  • 거듭제곱 **
    • 지수 연산자는 다른 연산자보다 높은 우선순위
      10*2**7=10x128​
    • 오른쪽에서 왼쪽으로 계산
      2**(2**3)=256​

2. 할당 연산자 

  • x = 1
  • "같다"는 의미가 아니라 변수에 값을 저장하는 연산자
  • 왼쪽은 반드시 변수, 오른쪽은 어떠한 수식도 가능
  • 하나의 값을 여러 변수에 할당하는 것도 가능
    x=y=z=0
  • 동시에 여러 변수에 값을 할당하는 것도 가능
    x,y,z=10,20,30
  • 변수 값을 교환하는 것도 가능
    x,y=y,x

3. 복합 할당 연산자

  • +=
    -=
    *=
    /=
    %=
    
    x+=y	#의미: x=x+y
    
    x=1000
    x+=2	#1002
    x-=2	#1000
  • 할당연산자와 다른 연산자를 합쳐 놓은 연산자, 소스를 간결하게 만들 수 있다. 

4. 관계 연산자

  • ==
    !=
    >
    <
    >=
    <=
  • 결과가 True 또는 False
  • 부울 변수 
    • 관계 연산자의 결과값은 True 또는 False => 부울값 Boolean value
    • 부울값을 저장하는 변수를 부울 변수
    • 부울 변수는 True, False 중 하나의 값을 갖는다. 
      radius=100
      flag=(radius>32)
      print(flag)
      
      # True​
    • 변수에 True, False를 직접 저장할 수도 있다. 
      powerOn=True​
    • if-else 문에도 사용 가능 
      expensive=price>20000
      if espensive:
      	shipping_cost=0
      else:
      	shipping_cost=3000
  • 문자열 비교
    s1="ABC"
    s2="ABC"
    print(s1==s2) 
    
    #True
    s1="ABC"
    s2="BCB"
    print(s1>s2) 
    
    #True

    • 알파벳 순으로 앞에 있어서 True
    • 기본적으로 사전 순 / 모든 대문자는 소문자보다 앞에 있는 것으로 간주
    • 스페이스 문자는 모든 알파벳 문자보다 앞에 있는 것으로 간주 / 숫자는 문자보다 앞에 있는 것으로 간주. 

  • 실수와 실수 비교
     실수와 실수를 비교할 때는 복잡한 실수가 정확히 표현되지 않아 오차를 감안 
    from math import sqrt
    n=sqrt(3.0)
    print(n*n==3.0)
    
    #False​​​​
    from math import sqrt
    n=sqrt(3.0)
    print(abs(n*n-3.0)<0.00001) 
    
    # True​​​
    import math
    math.isclose(3.14,3.15)
    
    # False
    
    math.isclose(3.141590003,3.141590002)
    
    #True​
  • 관계 연산자의 우선 순위는 산술 연산자보다 작아서 number-1>100 같이 괄호 없이 쓸 수 있다. 

5. 비트 연산자

  • ~	#비트 NOT : 0이면 1로, 1이면 0으로 
    
    ^	#비트 XOR : 다르면 1, 같으면 0
    
    &	#비트 AND : 두 개가 1일 때만 1
    
    |	#비트 OR  : 하나라도 1이면 1
  • 정수를 이루고 있는 각각의 비트를 가지고 작업할 수 있는 연산자
    a=0b00001101
    b=0b00001010
    print(a&b,a|b,a^b)
    print(bin(a&b),bin(a|b),bin(a^b))
    
    # 출력
    # 8 15 7
    # ob1000 0b1111 0b111
    
    # a&b : 0b00001000 => 8
    # a|b : 0b00001111 => 15
    # a^b : 0b00000111 => 7
    a=0b00001101
    print(~a,bin(~a))
    
    # 출력
    
    # ~a : 0b11110010​
  • 비트 이동 연산자
    <<    # 왼쪽으로 이동
    >>	  # 오른쪽으로 이동
    
    a=0b01101101
    print(a<<1,a>>1)
    print(bin(a<<1),bin<a>>1))
    
    # 출력
    
    
    # a<<1 : 0b11011010 => 
    # a>>1 : 0b00110110​

6. 연산자의 우선순위 

  
0. 괄호 
1. 지수 **
2. 단항 연산자 ~ + - 
3. 곱셈 나눗셈 나머지* / // %
4. 덧셈 뺄셈+ -
5. 비트 이동>> << 
6. 비트 AND &
7. 비트 OR, XOR |  ^
8. 비교 연산자 < > <= >=
9. 동등 연산자== !=
10. 할당, 복합 할당 연산자 = += -= *= 등
11. 동등 연산자 is, is not
12. 소속 연산자in, not in
13. 논리 연산자 not, or, and

 

1+2*3 = 7
10+20/2 = 20.0
(10+20)/2 = 15.0​

7. 타입 변환과 반올림 

  • 정수와 부동소수점수를 동시에 사용하여 수식 만들면 자동으로 부동소수점형으로 변환 => 자동적인 타입 변환 
    3*1.23=3.69​
  • int( ), float( ), round( )를 이용하여 변환 
    x=3.14
    int(x)
    # 3
    
    y=3
    float(y)
    # 3.0 
    
    x=1.723456
    round(x) 
    # 2 => 반올림
    
    x=1.723456
    round(x,2) 
    # 1.72 => 소수점 2번째 자리까지 반올림​
  • 변수 값을 변경하는 것이 아니라 변환시켜 제공하는 것이므로 변수 x 값은 타입 변환 이후에도 전혀 변화없다.
  • print(f"{avg:02f}")
    # 소수점 2번째 자리까지

8. 예제 풀이

 
 

'Programming > Python' 카테고리의 다른 글

[Python] 조건문  (0) 2024.04.21