python

[5장] 연산자

hoazzinews 2024. 11. 27. 11:19

우리는 수학 시간에 덧셈, 뺄셈, 곱셈 등과 같은 연산자를 사용해 본 경험이 있을 것입니다. 프로그램에서도 연산자를 이용해서 연산을 할 수 있습니다. 이번 시간에는 파이썬에서 연산자를 사용하는 방법에 대해서 살펴보겠습니다.

 

1. 파이썬 연산자 종류

연산자를 기능으로 구분하면 산술, 할당, 비교, 논리 연산자가 있습니다.

 - 산술 연산자: 수학의 덧셈, 뺄셈 등과 같은 연산 기능을 합니다.

 - 할당 연산자: 오른쪽의 피연산자를 왼쪽의 피연산자에 대입하는 기능이 있습니다.

 - 비교 연산자: 피연산자의 크고/작음 등을 연산합니다.

 - 논리 연산자: 피연산자의 이치(True, False)를 따지는 연산자입니다.

 

2. 피연산자란?

피연산자란, 연산의 대상으로 연산에 필요한 데이터를 뜻합니다.

sum = num1 + num2
# 연산자: =, +
# 피연산자 sum, num1, num2

 

num1과 num2는 덧셈(+) 연산의 대상으로 피연산자 입니다. 그리고 sum도 할당 (=) 연산의 대상으로 피연산자 입니다.

 

3. 산술 연산자

수학 시간에 경험한 덧셈, 뺄셈, 곱셈, 나눗셈과 같은 사칙 연산자를 파이썬에서는 산술 연산자라고 합니다. 파이썬에서는 사칙 연산자에 나머지 연산자(%), 몫 연산자(//), 지수 연산자(**)가 추가 됩니다.

num1 = 10
num2 = 20

result = num1 + num2                # 덧셈 연산자
print('result: ' + str(result))     # result: 30

result = num1 - num2                # 뺄셈 연산자
print('result: ' + str(result))     # result: -10

result = num1 * num2                # 곱셈 연산자
print('result: ' + str(result))     # result: 200

result = num1 / num2                # 나눗셈 연산자
print('result: ' + str(result))     # result: 0.5

result = num1 % num2                # 나머지 연산자
print('result: ' + str(result))     # result: 10

result = num1 // num2               # 몫 연산자
print('result: ' + str(result))     # result: 0

result = 3 ** 2                     # 지수 연산자
print('result: ' + str(result))     # result: 9

 

산술 연산자는 일상생활에서도 자주 경험했기 때문에 쉽게 이해할 수 있습니다.

 

※ 숫자 외에 문자열도 덧셈 연산할 수 있습니다.

str1 = 'Good'
str2 = ' '
str3 = 'morning'

result = str1 + str2 + str3         # 문자열 덧셈 연산자
print('result: ' + str(result))     # result: Good morning

문자열을 덧셈하면 결과는 문자열을 이어서 붙이게 됩니다.

 

※ 문자열과 숫자를 곱셈 연산할 수도 있습니다.

str1 = 'h'
result = str1 * 5
print('result: ' + str(result))     # result: hhhhh

문자열과 숫자를 곱셉 연산하면, 결과는 문자열 숫자만큼 이어 붙이게 됩니다.

 

4. 할당 연산자

대입 연산자라고도 하는 할당 연산자는 변수에 값을 할당(대입)하는 데 사용되는 연산자 입니다.

num1 = 10           # 오른쪽 10을 num1에 할당(대입)
num2 = 20           # 오른쪽 20을 num2에 할당(대입)
num3 = num2         # 오른쪽 num2의 값을 num3에 할당(대입)
num4 = num1 + num2  # 오른쪽 num1 + num2의 덧셈 결괏값을 num4에 할당(대입)

 

5. 복합 대입 연산자

할당 연산자에서 파생한 연산자로 산술연산자과 할당 연산자가 결합된 형태입니다.

예를 들어 num1 변수에 10을 할당하고, 다시 num1에 20을 더한다고 하겠습니다.

num1 = 10
num1 = num1 + 20
print('num1: ' + str(num1))     # num1: 30

결과로 num1에 30이 할당된 것을 확인할 수 있습니다.

 

여기서 'num = num1 + 20'을 복합 대입 연산자를 이용해서 간단하게 코딩할 수 있습니다.

num1 = 10
# num1 = num1 + 20
num1 += 20
print('num1: ' + str(num1))     # num1: 30

'+='는 덧셈과 할당 연산자를 합친 것으로 이런 것을 복합 대입 연산자라고 합니다. 결과적으로 산술 연산자와 할당 연산자가 결합된 형태를 '복합 대입 연산자'라고 합니다.

 

num = 100
print('num: ' + str(num))       # num: 100


num = 100
num += 10
print('num: ' + str(num))       # num: 110


num = 100
num -= 10
print('num: ' + str(num))       # num: 90


num = 100
num *= 10
print('num: ' + str(num))       # num: 1000


num = 100
num /= 10
print('num: ' + str(num))       # num: 10.0


num = 100
num %= 10
print('num: ' + str(num))       # num: 0


num = 100
num //= 10
print('num: ' + str(num))       # num: 10


num = 100
num **= 10
print('num: ' + str(num))       # num: 100000000000000000000

 

6. 비교 연산자

비교 연산자는 두 개의 피연산자를 비교하는 연산자입니다. 예를 들어 나이가 20살 이상이면 성인 그렇지 않으면 미성년 등과 같이 두 개의 피연산자 값을 비교할 때 사용되고, 결과 값은 True 또는 False로 불(Bool) 타입니다.

myAge = 19

result = myAge >= 20
print('result: ' + str(result))     # result: False -> 미성년

result = myAge < 20
print('result: ' + str(result))     # result: True -> 성인

 

비교 연산자는 총 6개가 있습니다.

num1 = 100
num2 = 200
print(num1 == num2)         # ==(같다): 같다면 True 그렇지 않다면 False
print(num1 != num2)         # !=(같지 않다): 틀리다면 True 그렇지 않다면 False
print(num1 > num2)          # >(크다): 크면 True 그렇지 않다면 False
print(num1 >= num2)         # >=(크거나 같다): 크거나 같으면 True 그렇지 않다면 False
print(num1 < num2)          # <(작다): 작으면 True 그렇지 않다면 False
print(num1 <= num2)         # <=(작다): 작거나 같으면 True 그렇지 않다면 False

 

※ 숫자 외에 문자열을 비교할 수 있습니다.

str1 = 'hello'
str2 = 'HELLO'
print(str1 == str2)         # False
print(str1 != str2)         # True

문자열 비교는 문자열이 같은지 틀린지에 따라서 결괏값이 결정됩니다.

 

7. 논리 연산자

논리 연산자는 피연산자의 이치를 이용하는 연산자로 and, or, not이 있습니다.

  - and 연산자: '그리고'의 뜻으로, 피연산자가 모두 True인 경우에만 결괏값으로 True를 반환합니다.

num1 = 100
num2 = 200
print(num1 < num2 and num1 != num2)     # num1 < num2 -> True, num1 != num2 -> True
print(num1 > num2 and num1 != num2)     # num1 > num2 -> False, num1 != num2 -> True
print(num1 < num2 and num1 == num2)     # num1 < num2 -> True, num1 == num2 -> False
print(num1 > num2 and num1 == num2)     # num1 > num2 -> False, num1 = num2 -> False

and 연산자를 기준으로 'print(num1 < num2 and num1 != num2)'만 양쪽의 결괏값이 True이고, 나머지는 모두 False입니다. 따라서 'print(num1 < num2 and num1 != num2)'만 True를 출력합니다.

 

  - or 연산자: '또는'의 뜻으로, 피연산자 중 하나라도 True가 있다면 결괏값은 True입니다.

num1 = 100
num2 = 200
print(num1 < num2 or num1 != num2)     # num1 < num2 -> True, num1 != num2 -> True
print(num1 > num2 or num1 != num2)     # num1 > num2 -> False, num1 != num2 -> True
print(num1 < num2 or num1 == num2)     # num1 < num2 -> True, num1 == num2 -> False
print(num1 > num2 or num1 == num2)     # num1 > num2 -> False, num1 = num2 -> False

or 연산자를 기준으로 'print(num1 > num2 or num1 == num2)'만 양쪽의 결괏값이 False이고, 나머지는 모두 적어도 하나는 True입니다. 따라서 ' print(num1 > num2 or num1 == num2)'만 False를 출력하고 나머지는 모두 True를 출력합니다.

 

  - not 연산자: 'not'은 '부정'의 뜻으로, 피연산자의 현재 상태를 부정하는 연산자입니다.

flag = True
print('flag: ' + str(flag))             # True
print('not flag: ' + str(not flag))     # False

최초 flag에 True를 할당했습니다. 그리고 'not flag'를 이용해서 현재 상태를 부정했으므로 결괏값은 False입니다.

 

 

이번 시간에는 연산자에 대해서 살펴봤습니다. 연산자를 한 번에 모두 외울 필요는 없습니다. 우선은 이렇게 있다는 정도로만 익혀두고 코딩을 계속하다면 보면 자연스럽게 익숙해질 수 있습니다.

 

이전 글: [4장] 데이터와 변수

다음 글: [6장] 조건문

'python' 카테고리의 다른 글

[7장] 반복문  (1) 2024.11.29
[6장] 조건문  (0) 2024.11.28
VSCode 폰트 크기 및 테마 변경  (0) 2024.11.26
[4장] 데이터와 변수  (0) 2024.11.26
[3장] VSCode 설치 및 기본 설정  (0) 2024.11.24