3.1 연산자의 종류
3.1.1 산술 연산자
print(1+1) #2
print(3-2) #1
print(5*2) #10
print(6/3) #2.0
print(6/3)의 결과는 정수 2가 아닌 실수 2.0으로 표시된다.
정수와 정수의 나누기 결과로 정수가 나오기를 바란다면 6//3 와 같이 //연산자를 사용해야 한다.
print(2**3) #8
print(10%3) #1
print(10//3) #3
첫 번째 연산자 **는 거듭제곱
두 번째 연산자 %는 나머지
세 번째 연산자 //는 몫
3.1.2 비교 연산자
print(10>3) #True
print(4>=7) #False
print(10<3) #False
print(5<=5) #True
비교 연산자(>, <, >=, <=)는 산술 연산자와 달리 값을 계산하지 않고 값을 '비교'한다.
결과값은 True 또는 False로 출력된다.
print(3==3) #True
print(4==2) #False
print(3+4==7) #True
print(1!=3) #True
' == ' 은 같다
' != ' 는 다르다
이 두 연산자도 값이 같은지 다른지 비교하는 비교 연산자이다.
3.1.3 논리 연산자
논리 연산자는 수식, 조건 등이 참인지 거짓인지 판단할 때 사용한다.
비교 연산자와 마찬가지로 판단 결과에 따라 True 또는 False를 출력한다.
print((3>0) and (3>5)) #False
print((3>0) or (3>5)) #True
print(not(1!=3)) #False
* 단축 평가
논리 연산자에서 and와 or는 앞의 연산 결과에 따라 뒤의 연산이 수행되지 않을 수도 있는데, 이를 단축 평가라고 한다.
and연산자 : 앞뒤 연산이 모두 참일 때 True가 된다. 그래서 앞의 연산이 이미 False라면 뒤의 연산은 수행하지 않는다.
or연산자 : 앞뒤 연산 중 하나라도 참일 때 True가 된다. 앞의 연산이 이미 True라면 뒤의 연산을 수행하지 않는다.
3.2 연산자의 우선순위
<위쪽일수록 우선순위 높음>
[], {}, () : 리스트, 딕셔너리, 세트, 튜플
** : 거듭제곱
*, /, //, % : 곱셈, 나눗셈, 정수 나눗셈, 나머지
+, - : 덧셈, 뺄셈
not, in, <, <=, >, >=, !=, == : 부정, 비교 연산자
and, or : 논리 연산자
= : 대입 연산자
<아래쪽일수록 우선순위 낮음>
3.3 변수로 연산하기
복합 대입 연산자 : 대입 연산자와 산술 연산자를 합친 것
number = 2+3*4
print(number) #14
number += 2
print(number) #16
number -= 2
print(number) #14
number *= 2
print(number) #28
number /= 2
print(number) #14.0
number **= 2
print(number) #196.0
number //= 2
print(number) #98.0
number %= 2
print(number) #0.0
정수로 나누기 연산( / )을 하면 결과는 소수점을 포함한 실수 형태로 나온다.
따라서 number /= 2 이후부터는 결과가 14.0, 196.0과 같이 실수 형태로 출력된다.
3.4 함수로 연산하기
3.4.1 숫자 처리 함수
print(abs(-5)) #-5의 절댓값 = 5
print(pow(4,2)) #4를 제곱한 값 = 16
print(max(5,12)) #5와 12 중 큰 값 = 12
print(min(5,12)) #5와 12 중 작은 값 = 5
print(round(3.14)) #3.14를 소수점 이하 첫째 자리에서 반올림한 값 = 3
print(round(4.678,2)) #2는 반올림 결과로 표시할 소수점 이하 자릿수. 따라서 4.68
3.4.2 math 모듈
모듈은 어떤 기능을 하는 코드를 모아놓은 파이썬 파일을 의미한다.
직접 만들 수도 있고, 파이썬에 이미 만들어져 있는 모듈을 가져와서 사용할 수도 있다.
프로그램에 모듈의 기능을 가져다 쓰려면 사용하기 전에 다음 형태의 구문을 추가해야 한다.
형식 : from 모듈명 import 기능
기능 부분에 *를 넣으면 모듈 안의 모든 기능을 가져다 쓰겠다는 의미가 된다.
from math import *
#math 모듈의 모든 기능을 가져다 쓰겠다는 의미
result = floor(4.99)
print(result) #4.99의 내림 = 4
result = ceil(3.14)
print(result) #3.14의 올림 = 4
result = sqrt(16)
print(result) #16의 제곱근 = 4.0
모듈의 기능을 가져다 쓸 때 구문을 다음과 같이 작성해도 된다.
형식 : import 모듈명
단, 이 방법을 사용할 때는 기능 앞에 기능이 속한 모듈명을 점(.)으로 연결해서 적어야 한다.
import math
#math 모듈의 기능을 가져다 쓰겠다는 의미
result = math.floor(4.99)
print(result) #4.99의 내림 = 4
result = math.ceil(3.14)
print(result) #3.14의 올림 = 4
result = math.sqrt(16)
print(result) #16의 제곱근 = 4.0
모듈에 관해서는 11장 모듈과 패키지에서 자세히 공부하므로 지금은 사용법 정도만 알고 넘어가면 된다.
3.4.3 random 모듈
무작위로 숫자를 뽑아주는 random()함수는 random모듈에 속한다.
from random import *
#random모듈의 모든 기능을 가져다 쓰겠다는 의미
print(random()) #0.9260347326833952
print(random()) #0.04112215704419675
print(random()) #0.035406397061927275
실행 결과를 보면 모두 0 이상 1 미만의 수를 출력한다.
이처럼 random() 함수는 0 이상 1 미만(1은 포함하지 않음)에서 난수를 뽑는 기능을 한다.
from random import *
#random모듈의 모든 기능을 가져다 쓰겠다는 의미
print(random()*10) #9.573163174863538
# 0.0이상 10.0 미만에서 난수 생성
print(int(random()*10)) #7
#0이상 10미만 정수에서 난수 생성
print(int(random()*10)+1) #4
#1이상 11미만 정수에서 난수 생성
예를 들어 1부터 45까지 정수 범위 안에서 로또 번호를 뽑으려면 다음처럼 작성한다.
random()함수로 생성한 난수에 45를 곱해 0.0이상 45.0미만인 난수를 생성한다.
그리고 이를 int()로 감싸서 정수로 변환하고, 여기에 1을 더한다.
그러면 1 이상 46 미만인 정수에서 난수를 생성할 수 있다.
from random import *
print(int(random()*45)+1) # 1부터 45까지의 정수 중 랜덤으로 하나 뽑기
하지만 범위를 매번 계산하려면 머리가 좀 아프겠다..
그래서 random모듈 안에는 원하는 범위 안에서 난수를 뽑을 수 있는 함수들이 존재한다.
randrange(시작숫자, 끝숫자) : 주어진 범위 안에서 정수인 난수 생성(끝 숫자 포함 X) -> 이상/미만
randint(시작숫자, 끝숫자) : 주어진 범위 안에서 정수인 난수 생성(끝 숫자 포함 O) -> 이상/이하
from random import *
print(randrange(1,46)) #1이상 46미만에서 난수 생성
print(randint(1,45)) #1이상 45이하에서 난수 생성
로또 번호 6개를 추첨하기 위해 위의 문장을 6번 반복한다면?
운이 좋으면 어쩌다 서로 다른 수 6개가 나올 수도 있지만, 중복된 번호가 나올 수도 있다.
따라서 이럴 때는 random 모듈에서 제공하는 sample()이라는 함수를 이용하면 된다.
이 부분은 제어문을 배운 후에 5.6 실습문제 : 당첨자 뽑기에서 다시 살펴보겠다.
3.5 실습문제
스터디 날짜 정하기
from random import randint
date = randint(4,28)
print("오프라인 스터디 모임 날짜는 매월 " + str(date) + "일로 선정됐습니다.")
주의 : 문자열과 숫자를 함께 출력해야하므로 date 변수는 str()으로 감싸서 문자열로 형변환 해야한다.
셀프체크
연산자를 이용해 온도 단위를 변환하는 프로그램
#섭씨 온도를 저장하기 위한 변수 생성
#섭씨를 화씨로 변환하고 새로운 변수에 저장
T = 30
F = (T*9/5)+32
print("섭씨 온도 : " + str(T))
print("화씨 온도 : " + str(F))
여기도 주의!! print할 때 문자열과 숫자가 나란히 올 수 없으므로 숫자변수는 꼭 str()으로 감싸서 형변환 해주기.
'Python' 카테고리의 다른 글
나도코딩 파이썬 6장 - 제어문 (0) | 2023.03.20 |
---|---|
나도코딩 파이썬 5장 - 자료구조 (0) | 2023.03.19 |
나도코딩 파이썬 4장 - 문자열 다루기 (0) | 2023.03.16 |
나도코딩 파이썬 2장 - 자료형과 변수 (0) | 2023.03.11 |
나도코딩 파이썬 1장 - Hello, 파이썬! (0) | 2023.03.11 |