다른 언어들과 마찬가지로 파이썬도 산술 연산이 기본으로 있습니다!!
+, -, /, *, /, //, 등 많은 산술 연산이 있습니다. 다 한번 알아봅시다!!
아 그리고 보시기만 하면 안되고 하나하나 씩 따라해보시길 바랍니다!!
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를 이용하는게 더 빠르다고 합니다.
이렇게 주요 파이썬 연산자들을 알아보았습니다
작성하면서 저도 많은것을 배워가네요
꼭 모두 직접 작성하며 따라해보시기 바랍니다!!! 그래야 기억에 잘남아요