본문 바로가기
STUDY/Python

[2] 파이썬 기초 : 연산자, 계산하기

by secumark 2022. 2. 13.
728x90

산술 연산자

 

연산자 기호
더하기 +
빼기 -
곱하기 *
나누기 /
지수(제곱, power) **
나누기(몫) //
나머지 %
대입(할당) =

 

 

3의 3승 = 27

 

 

------------------------------

/는 나누기

//는 몫

%는 나머지

------------------------------

 

 

x, y 변수에 12와 3을 입력하고

 

 

 

x//y나머지x%y로 구했다.

 

 

 

30을 7로 나눴을 때, 몫은 4, 나머지가 2라는 것을 잘 계산했다.

 


 

초 단위의 시간을 받아 그 시간이 몇 분 몇 초로 계산되는지 알아보자.

 

예를 들어 888초가 주어졌을 때,

60초에 1분이니까 나머지가 0일 때 1분이 되어야 한다.

888초를 60초로 나눴을 때, 몫을 분으로, 나머지를 초로 하면 되겠다.

 

 

더 간편하게 계산하려면, p//60을 min이라는 변수에 넣어주면 되겠다. 그리고 sec이라는 변수엔 p%60이라는 연산을 넣어주면 됨.

 

p에 1000초를 입력했을 때

 

 

 

띄어쓰기가 너무 많이 돼서 플러스를 사용하려고 했는데, 오류가 떴다. 문자열이랑 숫자 사이에 +를 쓰면 오류가 생긴다. 문자열과 문자 사이에서만 쓸 수 있음! (숫자 끼리는 연산자 +가 되어버림)

 

 

 


 

복합 대입 연산자

 

이건.. 프로그래밍 언어 공부하면서 많이 썼기 때문에 그냥 가볍게 연습하고 넘어가보려고 한다.

 

초깃값이 10000일 때, x +=2, x-=2, x*=2, x/=2, x//=2, x%=2 이렇게 6개의 연산자를 사용해보았다.

 

 

이렇게 바로 print 함수에 넣어버리면 오류남.

 

x+=2

 

이렇게 x라는 변수를 만들어주고, 여기에 연산자를 사용해줘야 한다.

 

x-=2

x-=2는 x=x-2라는 말과 같으니까, 10000-2=9998이다.

 

 

 

 

x*=2

 

x*=2는 x=x*2라는 말과 같으니까, 10000*2=20000이다.

 

 

x/=2

 

x/=2는 x=x/2라는 말과 같으니까, 10000/2=5000이다.

이건 특이하게 소숫점 한자리까지 같이 출력됨.

 

 

 

 

x//=2는 x=x//2니까 10000/2의 몫인 5000이 출력 될 것이다!

몫이라 자연수 5000이 출력됨.

 

 

 

 

 

x%=2는 x=x%2니까 나머지 0이 출력된다.

 

 

 


연산자 우선순위

 

연산자 우선순위는 꼭 이걸 다 외울 필요는 없고, 하다보면 자연스럽게 익혀진다.

우선순위 연산자
높음





















낮음
** 지수 연산자 (2의 3승: 2**3)
~,+,- 단항 연산자
*,/,%,// 곱셈, 나눗셈, 나머지, 나눗셈(몫)
+,- 덧셈, 뺼셈(위에 단항 연산자랑 다른거임)
>>, << 비트 이동 연산자
& 비트 AND 연산자
^, | 비트 XOR 연산자, 비트 OR 연산자
<=, <, >, >= 비교 연산자
<>, ==, != 동등 연산자
=,%=, /=,//=,-=,+=,*=,**= 대입 연산자
is, is not 아이덴티티 연산자
in, not in 소속 연산자
and, or, not 논리 연산자

 

그리고 같은 연산 우선순위에 있는건 결합 방향이 정해져있는대로 하면 되고, 우선순위는 낮지만 먼저 계산 하고 싶을 땐 괄호(())를 써주면 된다.

 

 

시험 점수 3개를 입력 받아 평균을 내는 프로그램을 작성하는 문제

 

 

x,y,z를 모두 더한 수식을 소괄호로 묶어주고 (연산 순위가 낮으니까) 3으로 나눠주면 된다.

 

 

 


문제 출처: 시간 순삭 파이썬 책

 

 

 

문제 1번

x=-1, y=3일 때 (-y)3승+2x제곱y의 값을 계산해 출력하는 프로그램을 작성하라

 

일단 변수 x랑 y를 만들어주고, 다항식을 만들어주면 되겠다.

이 문제가 왜 나온거냐면, 2x제곱y 이런 식은 사실 2*x*x*y 이렇게 곱셈이 생략되어있는 식이니까 프로그램에 입력할 때는 연산자를 포함해주어야 하는 것이다.

 

 

정답은 -21, 정확한 계산식은 (2*(x**2)) 이렇게 괄호를 써줘야 함.

 

 

도전과제

x=-1, y=3일 때 값을 구하는 프로그램 만들기

(1) x-4y

(2) -3/x+9/y

(3) x2+6xy

(4) (x+y)/2xy

 

 

각 정답은 result1,2,3,4에 넣었다.

print(result4)는 갑자기 왜 오류났는지 모르겠음 

 


 

문제 2번

 

화씨온도를 입력받아서 섭씨온도로 바꾸는 프로그램 작성하기

섭씨온도 100은 화씨온도 212라고 한다.

 

섭씨온도 구하는 공식 = 화씨온도 - 32 * (5/9)

 

 

 

 


 

문제 3번

 

사용자로부터 두 점의 좌표를 입력 받아 그 두 점 사이의 거리를 계산하는 프로그램을 만들어보자.


(x1,y1), (x2,y2) 이렇게 되어 있으면

두 점의 거리를 구하는 공식은 x좌표는 x좌표끼리, y좌표는 y좌표끼리 빼서 각각 제곱 해서 더해준 후 제곱근을 계산하면 된다.

 

(x2-x1)2+(y2-y1)2 값을 제곱근해서 계산하면 되는데, 제곱근은 1/2승으로 계산하면 된다. 

예를들어 x의 제곱근은 x**1/2

 

 

 


 

문제 4번

 

파이썬의 time() 함수를 이용해서 그리니치 표준시를 이용해 한국 표준시를 구하는 프로그램을 작성한다.

지금 그리니치 시간은 오후 1:18분, 그리고 한국의 시간은 오후 10:18분이다. 우리나라가 9시간 빠른셈! 그러니까 그리니치 시간을 기준으로 9시간 더해주면 된다.

 

time()을 사용하려면 일단 import를 해야 한단다.

 

 

그런데 이 그리니치 표준시가 표기되는 방법은 1970년 1월 1일 이후 그리니치 전체 시간을 초 단위로 나타낸 것이다.

일단 이걸 60으로 나누면 분이 되고, 또 60으로 나누면 시간이 된다. 이 나머지가 바로 현재 시간의 분 단위가 됨. (예를 들어서 지금이 1970년 1월 1일 오전 1시 10분이면 총 70분이 지난거니까, 여기서 60을 나눈 값의 나머지가 10이 되고, 현재 시간의 분 단위는 10이 된다는 뜻)

그 시간을 24로 나누면 현재 시간이 언제인지 알 수 있다. 그 현재 시간이 그리니치 표준시이기 때문에 거기에 9만 더해주면 한국 시간이 된다.

 

현재 시간 분은 49분..

 

이거 틀림

 

3시..

 

 

 

아니 이렇게 소수점 나오는게 맞습니까?

 

아니었음 ㅠ 몫을 구해야되는데 그냥 나누기만 해버린거였다... 그리고 위에 식 잘못 적었다. 왜 24가 두번이나 나왔니

 

 

현재 분 19분

 

 

현재 시간 13시

 

 

이건 그리니치 시간 기준

 

 

 

 

한국 시간은 오후 10시 19분!

 

그런데 소수점 하나도 안 나오게 하는 방법은 없을까?

 

728x90

댓글