ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [CHAPTER 3] 연산자
    Deep Learning/인공지능 입문 코딩 2021. 5. 15. 15:12
    728x90

    할당 연산자

    '=' 대입 연산자라고 부르기도 한다.

    = 연산자의 오른쪽 값을 왼쪽에 할당한다.

    >>> x = 100 + 200 # x에 100 + 200의 결과를 할당
    >>> x
    300

    다중 할당문

    여러개의 변수에 동일한 값을 할당

    >>> x = y = 100
    >>> x
    100
    >>> y
    100

    동시 할당문

    여러개의 변수에 여러 값을 할당

    >>> x, y = 100, 200
    >>> x
    100
    >>> y
    200

    산술 연산자

    산술 연산을 하는 연산자

    연산자 기호
    덧셈 +
    뺄셈 -
    곱셈 *
    지수 **
    나눗셈(정수) /
    나눗셈(실수) //
    나머지 %

    다음은 산술 연산자의 사용 예시이다.

    >>> 1+2 # 덧셈
    3
    >>> 3-3 # 뺄셈
    0
    >>> 3*5 # 곱셈
    15
    >>> 3**2 # 제곱
    9
    >>> 5//2 # 정수 나눗셈
    2
    >>> 5/2 # 실수 나눗셈
    2.5
    >>> 5%2 # 나머지
    1

    나머지 연산자 : %

    '//' 연산자와 '%' 연산자를 이용하여 몫과 나머지를 구할 수 있다.

    예를 들어 7 나누기 4의 값을 몫과 나머지로 표현하는 코드는 아래와 같다.

    p = int(input("분자를 입력하세요: "))
    q = int(input("분모를 입력하세요: "))
    
    print("몫 = ", p//q)
    print("나머지 = ", p%q)
    분자를 입력하세요: 7
    분모를 입력하세요: 4
    몫 =  1
    나머지 =  3

     

    '%' 연산자를 이용하여 짝수와 홀수를 구분하는 프로그램을 작성할 수 있다.

    num의 값이 짝수일 때, 2로 나누면 나머지가 0이고

    홀수일 때, 2로 나누면 나머지가 1인점을 이용하여 프로그램을 작성하였다.

    num = int(input("수를 입력하세요: "))
    print("짝수이면 0, 홀수이면 1을 출력")
    print("결과 :", num % 2)
    수를 입력하세요: 3
    짝수이면 0, 홀수이면 1을 출력
    결과 : 1
    수를 입력하세요: 4
    짝수이면 0, 홀수이면 1을 출력
    결과 : 0

    거듭제곱 연산자 : **

    파이썬에서 거듭제곱은 ** 연산자를 이용하여 아주 쉽게 구할 수 있다.

     

    파이썬이 얼마나 편한지 실감하기 위해 C언어로 2의 7승을 구하는 프로그램을 작성해보았다.

    #include <stdio.h>
    
    int main(){
        int a = 2;
        int b = 7;
        int result = 1;
    	
        for(int i = 0; i < b; i++){
        	result *= a;
        }
        
        printf("%d",result);
    }
    
    128

     

    파이썬으로는 한줄이면 된다. 너무 편하다..

    >>> 2 ** 7
    128

    피타고라스의 정리를 파이썬으로 구현할 수도 있다.

    bottom = float(input('직각 삼각형의 밑변 길이: '))
    height = float(input('직각 삼각형의 높이: '))
    hypotenuse = (bottom ** 2 + height ** 2) ** 0.5
    print('빗변은', hypotenuse, '입니다.')
    직각 삼각형의 밑변 길이: 3
    직각 삼각형의 높이: 4
    빗변은 5.0 입니다.

    복합 할당 연산자

    산술 연산자와 할당 연산자를 결합하여 간략하게 표현하는 방법이 있다.

    복합 할당 연산자를 잘 쓰면 코드를 간략하게 작성할 수 있다.

    a @= b ↔ a = a @ b

    연산자 사용 방법 의미
    += i += 10 i = i + 10
    -= i -= 10 i = i - 10
    *= i *= 10 i = i * 10
    /= i /= 10 i = i / 10
    //= i //= 10 i = i // 10
    %= i %= 10 i = i % 10
    **= i **= 10 i = i ** 10

    다음은 복합 할당 연산자의 사용 예시이다.

    >>> num = 5
    >>> num += 3 # 5 + 3의 결과를 num에 할당
    >>> num
    8
    >>> num -= 3 # 8 - 3의 결과을 num에 할당
    >>> num
    5
    >>> num *= 2 # 5 * 2의 결과를 num에 할당
    >>> num
    10
    >>> num /= 2 # 10 / 2의 결과를 num에 할당
    >>> num
    5.0

    비교 연산자

    두 값을 비교하는 연산자

    True, False를 반환한다.

    이 표에서는 a=100, b=200 이라 가정한다.

    연산자 설명 예시
    == 값이 동일하다 (a == b) → false
    != 값이 동일하지 않다 (a != b) → true
    > 왼쪽 값이 오른쪽 값보다 크다 (a > b) → false
    < 왼쪽 값이 오른쪽 값보다 작다 (a < b) → true
    >= 왼쪽 값이 오른쪽 값보다 크거나 동일하다 (a >= b) → false
    <= 왼쪽 값이 오른쪽 값보다 작거나 동일하다 (a <= b) → true
    >>> a == b
    False
    >>> a != b
    True
    >>> a > b
    False
    >>> a < b
    True
    >>> a >= b
    False
    >>> a <= b
    True

    논리 연산자

    파이썬은 and, or, not 연산자를 지원하는데 이러한 연산자를 논리 연산지라고 한다.

    True, False를 반환한다.

    연산자 의미
    x and y x와 y 둘다 True일 때, True반환
    x or y x와 y중 하나라도 True이면 True반환
    not x x가 True이면 False, False이면 True반환
    >>> x = True
    >>> y = False
    >>> x and y
    False
    >>> x or y
    True
    >>> not x
    False
    >>> not y
    True

    비트 연산자

    컴퓨터는 정보를 0과 1로 구성된 2진수를 사용하며 한 자리의 이진수를 비트(bit)라고 한다.

    정수 데이터형에 대하여 비트 단위 조작이 가능한데 이 조작을 위한 연산자가 비트 연산자이다.

    연산자 의미 설명
    & AND 연산 둘다 참일때만 만족
    | OR 연산 둘 중 하나만 참이여도 만족
    ^ XOR 연산
    둘 중 하나만 참일 때 만족
    ~ 보수 연산 0은 1로 1은 0으로 만듦
    << 왼쪽 시프트 연산자 변수의 값을 왼쪽으로 지정된 비트 수 만큼 이동
    >> 오른쪽 시프트 연산자 변수의 값을 오른쪽으로 지정된 비트 수 만큼 이동

     

    비트 연산자의 사용 예시이다.

    bin()은 이진수로 바꿔주는 함수이다.

    >>> bin(9)
    '0b1001'
    >>> bin(10)
    '0b1010'
    >>> bin(9  & 10)
    '0b1000'
    >>> bin(9 | 10)
    '0b1011'
    >>> bin(~9)
    '-0b1010'
    >>> bin(9 ^ 10)
    '0b11'

     

    시프트 연산은 비트를 이동시키는 연산이다.

    시프트 연산

    << 연산자와 >> 연산자는 시프트 연산을 한다.

    비트가 왼쪽으로 이동하면 정수가 2배의 값을 가지고

    비트가 오른쪽으로 이동하면 정수가 1/2배의 값을 가지게 된다.

    >>> 4 << 1
    8
    >>> 4 << 2
    16
    >>> 4 >>1
    2

     

    비트 연산자에도 복합 할당 연산자를 적용할 수 있다.

    >>> num = 2
    >>> num <<= 1
    >>> num
    4
    >>> num <<= 1
    >>> num
    8

    연산자 우선순위

    연산자에는 우선순위가 존재한다

    우선순위 연산자 설명
    1 ** 지수 (전원으로 인상)
    2 ~, +, - Ccomplement, 단항 플러스와 마이너스 (마지막 두의 메서드 이름은 + @이며, - @)
    3 *, /, %, // 곱하기, 나누기, 나머지, 몫
    4 +, - 덧셈과 뺄셈
    5 >>, << 좌우 비트 시프트
    6 & 비트 'AND'
    7 ^, | 비트 전용 'OR'와 정기적 인 'OR'
    8 <=, <, >, >= 비교 연산자
    9 ==, != 평등 연산자
    10 =, %=, /=, //=, -=, +=, *=, **= 할당 연산자
    11 is, is not 식별 연산자
    12 in, not in 맴버 연산자
    13 not, or and 논리 연산자

     

    연산자 우선순위를 모두 암기하는 것은 상당히 어렵기 때문에 먼저 계산되어야 되는 부분을 괄호로 감싸는 것도 좋은 방법이다.

    ((a + b) * (c - d)) / (e + f)

    radom, math 모듈

    난수 관련 함수를 제공하는 random 모듈

    수학 함수를 제공하는 math 모듈에 대하여 살펴보자

    random

    >>> import random
    >>> random.random() # 0이상 1미만의 임의의 실수를 반환
    0.007959517344981903
    >>> random.random()
    0.8672171874714447
    >>> random.randint(1, 7) # 1이상 7이하의 임의의 정수를 반환
    6
    >>> random.randrange(7) # 0이상 7 미만의 임의의 정수를 반환
    1
    >>> random.randrange(1, 7) # 1이상 7미만의 임의의 정수를 반환
    2
    >>> lst = [10,20,30,40,50]
    >>> random.shuffle(lst) # lst 리스트의 순서를 무작위로 섞음
    >>> lst
    [20, 30, 50, 10, 40]
    >>> random.choice(lst) # lst 리스트의 원소 중 무작위로 하나를 고름
    30

    math

    >>> import math
    >>> math.pow(3, 3) # 3의 3승
    27.0
    >>> math.fabs(-99) # 절대값
    99.0
    >>> math.log(2.71828) # 로그
    0.999999327347282
    >>> math.log(100, 10) # 로그 10을 밑으로 하는 100값
    2.0
    >>> math.pi # 원주율
    3.141592653589793
    >>> math.sin(math.pi / 2.0) # sin함수
    1.0

    지금까지 배운 것들로

    자동 판매기 프로그램

    돈과 물건값을 입력받고 잔돈을 계산하여 출력한다.

    거스름 돈으로 500원, 100원짜리 동전을 몇개 내어 보내는지 계산하여 출력한다.

    money = int(input('투입한 돈: '))
    price = int(input('물건 값: '))
    
    change = money - price
    print('거스름돈: ', change)
    coin500s = change // 500	# 500으로 나눈 몫 = 500원 동전의 개수
    change = change % 500		# 500으로 나눈 나머지를 계산
    coin100s = change // 100	# 100으로 나눈 몫 = 100원 동전의 개수
    
    print("500원 동전 개수: ", coin500s)
    print("100원 동전 개수: ", coin100s)​
    투입한 돈: 5000
    물건 값: 2600
    거스름돈:  2400
    500원 동전 개수:  4
    100원 동전 개수:  4

    이동거리 계산 프로그램

    평균 시속과 이동 시간을 입력받고 이동거리를 계산해준다.

    speed = float(input("평균 시속(km/h)을 입력하세요 : "))
    hour =  float(input("이동 시간(h)을 입력하세요 : "))
    
    minute = (hour -int(hour)) * 60
    second = (minute - int(minute))*60
    
    print("평균 시속: " , speed, "km/h")
    print("이동 시간: ", int(hour),"시간", int(minute),"분",int(second), "초")
    print("이동 거리: ", speed * hour, "km")
    
    평균 시속(km/h)을 입력하세요 :  46.5
    이동 시간(h)을 입력하세요 :  12.342
    평균 시속:  46.5 km/h
    이동 시간:  12 시간 20 분 31 초
    이동 거리:  573.903 km

    빗변의 길이와 직각삼각형의 면적을 계산해주는 프로그램 

    직각 삼각형의 빗변을 이루는 점의 좌표를 입력받고 빗변의 길이와 직각삼각형의 면적을 계산해준다.

    x1 = int(input("x1의 좌표를 입력하시오: "))
    y1 = int(input("y1의 좌표를 입력하시오: "))
    x2 = int(input("x2의 좌표를 입력하시오: "))
    y2 = int(input("y2의 좌표를 입력하시오: "))
    
    print("빗변의 길이: ", ((x2 - x1) ** 2 + (y2 - y1) ** 2) ** 0.5)
    print("직각삼각형의 면적은: ", ((x2 - x1) * (y2 - y1) * 0.5))
    x1의 좌표를 입력하시오:  0
    y1의 좌표를 입력하시오:  0
    x2의 좌표를 입력하시오:  3
    y2의 좌표를 입력하시오:  4
    빗변의 길이:  5.0
    직각삼각형의 면적은:  6.0

     

    728x90

    'Deep Learning > 인공지능 입문 코딩' 카테고리의 다른 글

    [CHAPTER 6] 함수  (0) 2021.05.22
    [CHAPTER 5] 반복문  (0) 2021.05.21
    [CHAPTER 4] 조건문  (0) 2021.05.16
    [CHAPTER 2] 변수  (0) 2021.05.14
    [CHAPTER 1] 데이터 과학과 파이썬  (0) 2021.05.04

    댓글

Designed by Tistory.