새소식

언어/파이썬(Python)

2. 파이썬 산술 연산자 알아보기!! (+,-,*,/,%,//,divmod 등)

  • -

다른 언어들과 마찬가지로 파이썬도 산술 연산이 기본으로 있습니다!!

+, -, /, *, /, //, 등 많은 산술 연산이 있습니다. 다 한번 알아봅시다!!

아 그리고 보시기만 하면 안되고 하나하나 씩 따라해보시길 바랍니다!!

 

1. 더하기(+)

# 1.1 정수 덧셈
>>> 2 + 3
5

# 1.1 큰 수 덧셈
>>> 1000000000 + 8999999999
9999999999

# 1.2 정수 더하기 실수
>>> x = 1 + 2.1
>>> print(x) # 3.1
>>> type(x) # <class 'float'>

# 1.3 실수 덧셈
>>> 3.5+2.1
5.6

크게 세가지로 볼 수 있을 것 같습니다.

정수끼리의 덧셈, 정수와 실수의 덧셈, 실수끼리의 덧셈이 있을 수 있습니다.

 

1.1 정수의 덧셈

정수끼리의 덧셈은 간단합니다. 일반 수식 처럼 더하면 됩니다. 위의 코드를 보면 2+3=5가 되는 것을 볼 수 있습니다.

더한 값을 변수에 저장하고 싶다면 'x = 2+3' 하면 더한 결과 5가 x라는 변수에 저장됩니다.

큰 수의 덧셈도 바로 가능합니다. C나 java에서는 저런 큰 수를 바로 더할 수 없지만 파이썬에서는 가능합니다.

 

1.2 정수 더하기 실수

정수와 실수를 위의 예제 처럼 더할 수도 있습니다.

결과도 예상하는 대로 잘 나옵니다. 하지만 하나 다른점이 있습니다.

정수끼리 더하면 결과는 정수형(int)이 되지만 정수와 실수를 더하면 실수형(float)가 됩니다.

type이라는 메소드를 이용해서타입을 확인해볼 수 있습니다.

표현 범위가 더 넓은 실수형을 따라가기 때문입니다.

 

1.3 실수 덧셈

실수끼리의 덧셈도 똑같은 방식으로 더하면 됩니다. 이 경우에 결과도 똑같이 실수형(float)가 됩니다.

 

2. 빼기(-)

# 2.1 정수 뺄셈
>>> 3-2
5
>>> 1-30
-28

# 2.2 정수와 실수의 뺄셈
>>> x=13-2.1
>>> print(x)	# 10.9
>>> type(x)	# <class 'float'>

# 2.3 실수 뺄셈
>>> 2.1 - 1.9
0.20000000000000018

뺄셈도 더하기와 완전 똑같습니다. 일반 수학처럼 똑같이 써주시면 됩니다.

단 이번에도 정수와 실수를 빼게 되면 결과는 실수(float)가 됩니다.

실수의 뺄셈도 마찬가지 방법이며 이 경우도 결과는 실수가 됩니다.

하지만 약간 다릅니다. 2.1-1.9의 결과로 0.2를 예상하겠지만 좀 이상한 값이 나옵니다.

이는 컴퓨터에서 실수를 표현할때 오차가 있기 때문입니다.

 

3. 나누기(/)

# 정수 / 정수 (나누어 떨어지지 않음)
>>> 7/2
3.5

# 정수 / 정수 (나누어 떨어짐)
>>> x=6/3
>>> print(x) # 2.0
>>> type(x) # <class 'float'>

# 실수 / 정수
>>> 3.0/2
1.5

# 실수 / 실수
>>> 3.0/0.5
6.0

나누기도 다른 연산과 마찬가지 방법으로 숫자/숫자로 쓰시면 됩니다.

하지만 한 가지 주의할점이 있습니다!! 다른 언어들 그리고 파이썬2와 다른 점입니다

 

3.1 정수 / 정수 (나누어 떨어지지 않음)

위에서 보듯이 나누어 떨어지지 않으면 소수점 까지 잘 나오는 것을 볼 수 있습니다.

보통 다른 언어들에서는 몫만을 취하지만 파이썬3에서는 예상했던 값 그대로 나옵니다.

7/2 = 3.5가 당연하죠. 이는 역시 float type 입니다.

 

3.2 정수 / 정수 (나누어 떨어짐)

6/3을 하면 답이 뭘까요???? 답은 2가 아닌 2.0입니다!!

파이썬2 까지는 정수 / 정수는 정수가 나왔지만 파이썬3에서는 나누기 결과가 실수로 나옵니다.

그래서 6/3을 한 결과의 type을 찍어보면 float형으로 나오는 것을 볼 수 있습니다.

 

3.3 실수 / 정수, 실수 / 실수

실수와 정수의 나누기 연산도 마찬가지로 결과가 실수를 따라갑니다.

실수와 실수의 나누기 연산에서 특이한 점은 딱히 없습니다.

 

4. 곱하기(*)

# 정수 * 정수
>>> 1 * 3
3

# 정수 * 실수
>>> 2 * 3.2
6.4

# 실수 * 실수
>>> 1.2 * 1.2
1.44

일반적인 곱하기 연산과 같이 쓰면 답을 구할 수 있습니다.

여기서도 정수와 실수의 연산시 결과는 실수를 따라간다는 점만 알고 있으면 됩니다.

 

5. 몫 구하기(//)

7/2를 하면 위에서 3.5가 나옴을 볼 수 있었습니다.

하지만 여기서 나누기만 몫인 3만 구하고 싶다면 어떻게 할까요??

그럴때 필요한 연산이 '//' 입니다.

이는 나눗셈 후 소수점 이하를 버려주는 연산입니다

>>> 7//3
2

>>> x=9//3
>>> print(x)
3
>>> type(x)
<class 'int'>

위와 같이 연산할 수 있습니다. 원래 나눗셈을 하면 나누어 떨어져도 실수형으로 되었는데

이를 통해 정수형으로 바꿀 수 있으며 또한 몫만 취할 수 있습니다!!

 

6. 나머지 구하기(% 연산자)

이번엔 몫이 아니라 나머지를 구하고 싶습니다.

그럴때 모듈러 연산자(%)를 이용하면 됩니다.

>>> 7%2
1

>>> if 7 % 2 == 0:
...    print("짝수")
... else:
...    print("홀수")
...
홀수

7/2= 3..1로 표현할 수 있습니다. 몫은 3 나머지는 1입니다.

%연산자를 이용해 나누기 결과의 나머지를 구할 수 있습니다

대표적으로 홀수 짝수 구분에 많이 쓰입니다.

2로 나눈 나머지가 0인지 아닌지 알면 짝수인지 홀수인지 알 수 있습니다

 

7. 거듭제곱 구하기(**연산자)

거듭제곱을 구하고 싶다면 **연산자를 이용할 수 있습니다

이는 곱하기 연산자 두개를 의미합니다

# 2의 10승 = 2^10
>>> 2**10
1024

자바나 c언어에서는 pow함수를 많이 이용하는데요

파이썬에서는 간단하게 **연산자를 이용해 거듭제곱을 구할 수 있습니다.

위와 같이 사용할 수 있습니다

 

8. 몫과 나머지 한번에 구하기 (divmod)

몫과 나머지를 구하기 위해서는 a//b, a%b와 같이 따로 구하여야 합니다

하지만 한번에 구할 수도 있습니다.

# tuple로 담김
>>> x = divmod(10,3)
>>> type(x)
<class 'tuple'>
>>> print(x)
(3,1)
>>> x[0]
3
>>> x[1]
1

# unpacking
>>> a,b = divmod(10,3)
>>> print(a)
3
>>> print(b)
1

몫과 나머지가 tuple 형태로 담겨서 나옵니다.

그래서 배열처럼 인덱스로 참조해서 사용할 수도 있습니다.

x[0]은 몫, x[1]은 나머지를 나타내게 됩니다.

 

아니면 unpacking을 이용하여 변수에 각각 담을 수도 있습니다

위의 예시처럼 하면 자동으로 변수에 나뉘어서 담기게 됩니다.

 

*** 성능

두 수의 몫과 나머지를 구할때 두 수가 작은 수라면 오히려 //와 %를 이용하여 구하는게 빠르다고 합니다

큰 숫자를 다룰 경우에는 divmod를 이용하는게 더 빠르다고 합니다.

 

이렇게 주요 파이썬 연산자들을 알아보았습니다

작성하면서 저도 많은것을 배워가네요

꼭 모두 직접 작성하며 따라해보시기 바랍니다!!! 그래야 기억에 잘남아요

 

 

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.