한 페이지가 될 수 있게

[코딩자율학습단 6기] :: 파이썬입문 - Day3 본문

클론코딩/코딩자율학습단

[코딩자율학습단 6기] :: 파이썬입문 - Day3

doryeoni 2024. 1. 14. 21:42

Day3 :  ~ 3.5 실습 문제 : 스터디 날짜 정하기 (종이책 p.69 - 92)


1. 연산자의 종류  

(1)산술연산자  : 수를 연산하는데 사용

연산자 의미
+ 더하기
- 빼기
* 곱하기
/ 나누기

이상하게 나누기 결과는 정수2가 아닌, 실수 2.0으로 표시되고 있다?

 

연산자 의미
a**b a를 b만큼 거듭제곱
a%b a를 b로 나눈 나머지
a//b a를 b로 나눈 몫 (나누고 정수구하기 좋음) 

 

(2)비교연산자 : 값의 크기를 비교할 때 사용 함 ( 값 계산하지 않고 값을 비교함 )

  * 값이 같은지 비교 : ==  / 다른지 비교 !=    

 

(3) 논리 연산자 : 수식, 조건 등이 참인지 거짓인지 판단할 때 사용

연산자 의미
A and B 연산자 A와 B가 모두 참이면 참
A or B  A와 B 하나라도 참이면 참
not 값이 참이면 거짓, 거짓이면 참

* 참고로  a > b > c 처럼 연산자를 연달아 사용 할 수도 있음 ( a  > b and b > c )

 

[1분퀴즈]

1. 다음 코드의 실행결과로 옳은 것은? 정답 : 8 

print( 3 + 5 )

2. 다음 코드의 실행결과로 올바른 것은?  2.0 ( /로 했기 때문에 정수형이 아닌, 실수형으로 출력된다! ) 

print ( 6/3)

3. 다음 코드의 실행결과로 올바른 것은? ( 5/3한 나머지! 2)

print ( 5 % 3 )

4. 다음 연산의 의미로 올바른 것은?  5가 3보다 작고 7이 3보다 작다 

(5<3) or (7<3)

 


2. 연산자의 우선순위

기본적인 사칙연산과 마찬가지로, 파이썬도 우선순위가 있다. 아래로 내려갈 수록 순위가 낮음

6. 표현식 — Python 3.12.1 문서


3. 변수로 연산하기

 

 


연산자 의미
a+=b a에 b를 더하고 a에 대입 a = a+2  -> a+=2
a-=b a에 b를 빼고 a에 대입 a = a-2  -> a-=2
a*=b a에 b를 곱하고 a에 대입 a = a*2  -> a*=2
a/=b a에 b를 나누고 a에 대입 a = a/2  -> a/=2
a**=b a를 b값으로 거듭제곱한 후 a값에 대입 a = a**2 -> a **=2
a//=b a를 b값으로 나눈 후, 몫을 a값에 대입 a = a//2 -> a//=2
a%=b a를 b값으로 나눈 후, 나머지를 a값에 대입 a = a%2 -> a%= 2

 


4. 함수로 연산하기

(1) 숫자처리 함수

함수 의미
abs(x) x의 절대값
pow(x,y) x를 y만큼 거듭제곱한 값
max() 가장 큰 값
min() 가장 작은 값
round(x,d) x를 반올림한 값, d는 표시할 소수점 이하 자릿수,  d가 없으면 소수점 이하 첫째자리에서 반올림한 정수 

 

 

(2) math 모듈

함수 의미
floor() 내림
ceil() 올림
sqrt() 제곱근
.🙋‍♀️모듈 : 어떤 기능을 하는 코드를 모아 놓은 파이썬 파일을 의미!
                만들어도 되고, 이미 만들어진거 갖고올 수 있음   -> 이 경우, 다음 형태의 구문 추가해야 함 
                 형식 :  from 모듈명 import 기능(여기에 *를 넣으면 모든기능을 가져다 쓰겠다는 말이됨)

만약에 모듈을 임포트 하지 않고, 쓴다면? floor이라는 이름이 낫 디파인드! 정의되지않았다고 에러를 띄워줌 ㅎㅎ

 

(3) random 모듈

random() : 무작위로 숫자를 뽑아주는 함수 ( 0이상 1미만 사이의 수를 출력함

모두 다른값을 랜덤으로 띄워줌!

* random 함수를 약간 조작해서 원하는 값이 나오도록 처리할 수 도 있다!

from random import *

print (random() * 10 )                # 0.0이상 ~ 10.0 미만에서 난수 생성
print (int(random()) * 10)            # 0이상 10미만 정수에서 난수 생성
print (int(random()) * 10   + 1  )    # 1이상 11미만 정수에서 난수 생성(+1)

 

[예제] 1부터 45까지 정수 범위 안에서 로또 번호 뽑기

print ( int(random() * 45 ) + 1)  #1이상 46미만인 정수에서 난수를 생성할 수 있음

 

random 모듈에는 원하는 범위안에서 난수를 뽑을 수 있는 함수들이 존재함 (감사 합니다...)

함수 의미
randrange(시작 숫자, 끝 숫자) 주어진 범위 안에서 정수인 난수 생성(끝 숫자 미포함)
randint ( 시작 숫자, 끝 숫자) 주어진 범위 안에서 정수인 난수 생성(끝 숫자 포함)

* 로또번호 6개를 추출하기 위해서 같은 문장을 6번 반복한다면 ? 중복번호가 발생할 수도 있음(각 문장은 독립사건이기 때문)

 


#실습문제

숫자 범위를 1,28일(28일 포함) 로 정한 다음, 1~3일은 안되므로 + 3 더해줌

# [실습문제] 스터디 날짜 정하기

# 코딩 스터디 모임을 만들었는데 월 4번 모이고 3번은 온라인, 1번은 오프라인으로 모임.
# 오프라인 모임 날짜를 정하는 프로그램을 작성하세요.

# [조건]
1. 날짜 무작위
2. 월별 일수가 다르므로 최소 일수인 28일 내로 정함
3. 매월 1-3일은 스터디를 준비해야해서 제외
4. 실행결과 참고


from random import *
from math import *


date = randint(1,28) + 3
print ( "오프라인 스터디 모임 날짜는 매월 " + str(date) + "일로 선정됐습니다.")