(나도코딩의 파이썬 입문) 3장. 연산자(p.69 ~ p.89)

2023. 2. 21. 17:49독서

반응형

안녕하세요!

<코딩 자율학습 나도코딩의 파이썬 입문> 멘토를 담당하게 된 이안입니다.

 

오늘은 3장 연산자에 대해서 공부할 거예요!

 

오늘 공부할 내용은 다음과 같습니다.

 

 

🧐 공부할 내용(p.69~p.97)

  • 연산자의 종류
  • 연산자의 우선순위
  • 변수로 연산하기
  • 함수로 연산하기

 

1. 연산자의 종류


파이썬의 연산자에는 크게 3가지가 존재합니다.

 

1. 산술 연산자

2. 비교 연산자

3. 논리 연산자

 

 

1) 산술 연산자

산술 연산자는 사칙연산에 사용되는 4가지 연산자 외에 3가지 연산자가 더 있습니다.

 

저는 이 처음 등장하는 3가지 연산자에 집중해 볼게요.

 

 

연산자 의미
** 연산자 왼쪽을 오른쪽만큼 거듭제곱
% 연산자 왼쪽을 오른쪽으로 나눈 나머지
// 연산자 왼쪽을 오른쪽으로 나눈 몫

 

'**'연산자는 거듭제곱 연산자입니다.

 

number = 10

print(number ** 2)

 

위와 같은 방식으로 사용합니다.

 

위 코드의 결과는 무엇일까요? 직접 실행해 보세요! 그리고 뒤에 숫자를 바꿔서도 실행해 보세요!

 

 

'%'연산자는 모듈로 연산자(혹은 나머지 연산자)라고 부릅니다.

연산자의 왼쪽을 오른쪽으로 나눈 나머지가 됩니다.

 

이렇게 말이죠.

 

print(7 % 3) # 결과 1

print(10 % 5) # 결과 0

 

 

 

'//'연산자는 몫을 구할 때 많이 사용합니다.

 

print(7 // 3) # 2
print(10 // 5) # 2

print(8 // 5) # 1

 

 

2) 비교 연산자

비교 연산자는 많이 사용하는 부등호를 사용합니다.

 

부등호에서 아래에  > 아래에 있는 '-'가 '='(등호)인 것은 모두 아실 것이라 생각합니다.

 

 

print(10 > 3)
print(4 >= 7)
print(10 < 3)
print(5 <= 5)

 

 

🥕멘토 TIP

위 코드를 입력하면 결과로 어떤 값이 나오나요?

 

True, False, False, True가 나왔죠?

 

네, 부등호 연산자의 결괏값은 불리언 즉, 불(bool) 자료형입니다.

 

 

그렇기 때문에 True, False를 반환해야 하는 상황인 모든 곳에 부등호를 사용할 수 있습니다.

 

 

 

파이썬의 부등호 연산은 다른 언어와는 조금 특별합니다.

바로 아래와 같은 표현이 가능하기 때문이죠.

 

a = 10
print(0<= a <= 15) # True
print(11 < a < 13) # False

 

이런 표현은 나중에 배우는 제어문(if문)이나 반복문(for, while)에서 아주 편리하게 사용될 예정입니다.

 

 

3) 논리 연산자

논리 연산자는 조금 생소하실 수 있어요.

 

컴퓨터의 중앙처리장치 즉, CPU는 엄청나게 빠른 속도로 논리 연산을 하는 칩입니다.

 

그러니까 그러니까 논리 연산이 결국 컴퓨터의 연산이라고 할 수 있겠죠.

 

논리 연산자는 책에서 소개한 and, or, not 연산자와 함께 xor, nand 등 다양한 연산자가 존재합니다.

하지만 기본적으로 모두 and, or, not 연산자에서 파생된 연산자이기 때문에

이 3가지 연산자에 익숙해지는 것을 목표로 공부하시면 나머지 연산자들도 쉽게 익히실 수 있습니다!

 

 

 

저는 책과 다르게 2진수의 연산으로 표현해보고 싶어요.

 

피연산자 피연산자 and 연산자 or 연산자
0 0 0 0
0 1 0 1
1 0 0 1
1 1 1 1

 

 

and 연산자는 두 피연산자가 모두 참일 때, 즉 True일 때만 True를 반환합니다.

 

첫 번째 줄을 보시면 두 피연산자가 모두 0(프로그래밍 언어에서 0은 False를 의미합니다.)입니다. 

그렇기 때문에 두 피연산자를 연산한 결과는 0, 즉 False가 됩니다.

 

반대로 OR 연산자는 두 피연산자 중 하나만 참이더라도 참을 반환합니다.

그래서 두 번째 줄을 보시면 왼쪽 피연산자는 False이지만 오른쪽 피연산자는 True이기 때문에 or 연산자의 결괏값은 True입니다.

 

 

어때요 간단하죠?

 

 

not 연산자는 True이면 False, False이면 True를 반환하는 간단한 연산자입니다.

 

 

 

2. 연산자의 우선순위


연산자의 우선순위는 사칙연산의 경우는 우리가 초등학교 시간에 배우는 사칙연산의 순서와 똑같습니다.

다만 우리는 더 많은 연산자가 있기 때문에 이것을 고려해야 하는 것이죠.

 

하지만 모든 연산자의 우선순위를 모두 기억할 필요는 없습니다. 

 

곱셈, 나눗셈, 정수 나눗셈, 나머지가 덧셈, 뺄셈 보다 우선순위가 높다 정도만 기억하시고 넘어가셔도 무방할 거 같아요.

 

전체 우선순위를 보고 싶다면 아래 링크에서 확인해 주세요!

 

 

6. Expressions

This chapter explains the meaning of the elements of expressions in Python. Syntax Notes: In this and the following chapters, extended BNF notation will be used to describe syntax, not lexical anal...

docs.python.org

 

 

 

3. 변수로 연산하기


드디어 변수로 연산을 하는 시간이 왔습니다.

 

먼저 책의 예제 코드를 한번 실행해 볼까요?

 

number = 2 + 3 * 4

print(number)

number = 2 + 3 * 4 + 2

print(number)

 

 

어때요 결괏값이 잘 나오나요?

 

 

우리는 여기서 복합 대입 연산자라는 것을 배웁니다.

 

위의 코드, 어딘가 모르게 어수선하지 않나요?

 

왜냐하면 2 + 3 * 4가 위에도 있고, 아래에도 있으니까 말이죠.

 

그럼 이 코드를 어떻게 바꿀 수 있을까요?

 

 

먼저 다음과 같이 바꿀 수 있어요.

 

number = 2 + 3 * 4

print(number)

number = number + 2

print(number)

 

확실히 간단해졌죠?

 

 

그런데 3번째 줄에서 number가 2번이나 쓰인 것을 확인할 수 있어요.

이것도 줄이고 싶지 않으신가요?

 

이것을 줄이면 다음과 같이 줄일 수 있습니다.

 

number = 2 + 3 * 4

print(number)

number += 2

print(number)

 

어떤가요? 훨씬 깔끔하죠?

 

 

책 p.80에 있는 복합 대입 연산자를 사용하면 이렇게 코드의 양을 줄일 수 있어요!

 

 

4. 함수로 연산하기


3장의 마지막인 함수로 연산하기입니다!

 

1) 숫자 처리 함수

책에 나온 예제를 직접 작성해 봐요!

 

print(abs(-1))
print(pow(4,2))
print(max(5,12))
print(min(5,12))
print(round(3.14))
print(round(4.678, 2))

 

🥕멘토 TIP

pow연산자는 어디서 많이 본 연산방법 아닌까요?

 

앞에서 본 ** 연산과 동일하답니다.

 

그럼 왜 pow가 존재하는 걸까요?

 

pow는 단순히 거듭제곱 연산뿐만 아니라 나머지를 구할 때도 사용됩니다.

즉, 3번째 파라미터(매개변수)가 있는 것이죠.

 

print(pow(10,2,3)) # 10의 2승을 3으로 나눈 나머지

 

이렇게 사용할 수 있답니다!

 

 

min, max함수는 나중에 배울 자료구조에서 유용하게 사용될 함수인만큼 꼭 기억하고 넘어가도록 해요!

 

 

2) math 모듈

책에서 모듈이라는 표현을 썼는데요, 모듈은 파이썬에서 코드를 모아 놓은 파이썬 파일을 의미합니다.

코드를 모아놓기만 하면 모듈이 될 수 있냐고요? 그렇습니다. 하지만 아무 기능도 제공하지 않는다면 무의미한 모듈이 되겠지만요.

그렇기 때문에 직접 모듈을 만들 수 있습니다.

 

 

모듈을 사용하는 방법은 간단합니다.

 

책에 명시된 2가지 방법을 모두 사용할 수 있습니다.

 

from math import * // math에 있는 모든 기능을 가져다 쓰겠다는 의미

import math // math에 있는 모든 기능을 가져다 쓰는 것은 동일

 

위 방식과 아래 방식의 차이점이라면 아래 방식은 math에 존재하는 함수를 사용하는 경우 "math. "을 명시해야 한다는 것이죠.

책의 예제처럼 말이죠.

 

 

🥕멘토 TIP

위의 모듈을 불러오는 방식을 보고 '뭐야 그럼 코드 적은 위 방법이 좋은 거잖아!'라고 생각하시면 오해가 있을 수 있어요.

 

위 방식에서 사용되는 *(와일드카드 문자)는 아시다시피 모든 함수를 불러옵니다.

그럴 경우 코드에서 사용되는 함수 중 어떤 함수가 math에서 불러온 것인지 명확하지 않을 가능성이 있습니다.

또한 의도치 않은 함수가 실행되어서 사용될 위험도 있죠.

 

그렇기 때문에 와일드카드 사용을 지양하는 것이 좋습니다. (입문 단계에선 괜찮아요)

 

 

3) random 모듈

랜덤 모듈은 0 이상 1 미만의 수를 무작위로 출력합니다.

 

from random import random

print(random())

 

그럼 10 이상 20 미만의 수는 어떻게 출력할 수 있을까요?

 

이때 사용하는 것이 86페이지에 있는 randrange 혹은 randint입니다.

 

from random import randrange, randint

print(randrange(10, 20))
print(randint(10, 20))

 

이렇게 하면 첫 번째 코드는 10 이상 20 미만의 정수를 출력하고, 두 번째 코드는 10 이상 20 이하의 정수를 출력합니다.

 

 


이번 장에서는 파이썬의 연산자에 대해서 알아봤어요.

 

연산자는 수를 연산하거나 범위를 설정할 때 등 다양하게 사용된답니다.

 

마지막으로 꼭 1분 퀴즈와 복습을 통해서 다시 한번 오늘 배운 것을 익혀주세요!

 

 

제가 공부한 내용을 보고 궁금한 점이 있으면 댓글 남겨주세요!

확인 후 답변해 드리겠습니다.

그럼 다음 4장에서 만나요!

 

✅ 정리

* 연산자의 종류

    * 산술 연산자

    * 비교 연산자

    * 논리 연산자

* 연산자의 우선순이

* 변수로 연산하기

* 함수로 연산하기

 

 

⭐️ 읽어보면 좋은 문서

 

BitwiseOperators - Python Wiki

FAQ: What do the operators <<, >>, &, |, ~, and ^ do? These are Python's bitwise operators. Preamble: Twos-Complement Numbers All of these operators share something in common -- they are "bitwise" operators. That is, they operate on numbers (normally), but

wiki.python.org

 

반응형