[2일차] 파이썬 기초 5

하은·2023년 10월 10일
0

- 곱셈 연산자

  • 숫자(정수, 실수)를 이용한 곱셈
num1 = 10
num2 = 3
result = num1 / num2

print('result: {}'.format(result))
print('result: %.2f' % result)
  • 문자(열)을 이용한 곱셈
    특이사항 위주로 학습하기! 곱한 횟수만큼 반복해서 나열한다.
str = 'Hi '
result = str * 5

print('result : {}'.format(result))

- 나눗셈 연산자

- 정수로 나눠도, 나눗셈 결과는 항상 float(실수)다.

num1 = 20
num2 = 5
result = num1 / num2
print('result : {}'.format(result))
print('type of result : {}'.format(type(result)))

--> result : 4.0
  • 0을 나눗셈 하는 경우 = 결과는 항상 0
num1 = 0
num2 = 3
result = num1 / num2
print('result : {}'.format(result))

--> result : 0.0
  • 0으로 나누는 경우 = 0으로 나눌 수 없다
num1 = 3
num2 = 0
result = num1 / num2
print('result : {}'.format(result))

--> ZeroDivisionError: division by zero

- 나머지 연산자, 몫 연산자 : 수학시간에는 없었던, 프로그램에만 존재하는 연산자

  • % = 나눗셈 결과 중 나머지만 구하는 것
num1 = 10
num2 = 3

result = num1 % num2
print(result)

--> 1
  • // = 나눗셈 결과 중 몫만 구하는 것
num1 = 10
num2 = 3

result = num1 // num2
print(result)

--> 3

- 나머지와 몫을 한번에 구하기

  • divmod() 함수
    첫번째 데이터를 두번째 데이터로 나누는 것
num1 = 10
num2 = 3   

result = divmod(num1, num2)   # 10 / 3  #(3, 1)
print('result : {}'.format(result))

print('몫 : {}'.format(result[0]))
print('나머지 : {}'.format(result[1]))

(3, 1) = 튜플 이라는 자료구조
각각 [0] , [1] 값. 순차적으로 번호표가 주어지는데 0부터 시작함.

- 실습) 123개의 사과를 4개씩 직원들에게 나눠주려고 한다. 최대 나눠줄 수 있는 직원 수와 남는 사과 개수를 출력해보자.

employee = 123
apple = 4
result = divmod(employee, apple)

print('사과를 나눠줄 수 있는 최대 직원 수 : {}'.format(result[0]))
print('남는 사과 수 : {}'.format(result[1]))

--> 사과를 나눠줄 수 있는 최대 직원 수 : 30
남는 사과 수 : 3

- 거듭제곱 연산자

  • ** = 같은 수를 여러번 곱한 값을 구한다.

- 제곱근 구하기

  • n ** (1/m) = n의 m제곱근 공식

예) 2의 3제곱근 구하기(어떤 수를 3번 곱하면 2가 나온다는 뜻)

2 ** (1/3)

- math 모듈의 sqrt()와 pow()함수

라이브러리 안의 기능을 사용하는 것

- sqrt() = 제곱근(n의 2제곱근)만 얻을 수 있다. 예: 2의 제곱근, 3의 제곱근, 4의 제곱근 ...

  • 3제곱근, 4제곱근 ... 이상을 구하려면 공식을 써야한다
  • n ** (1/m) 을 외워둬야함!

- pow() = 거듭제곱을(**) 구하는 것

import math     #math 라이브러리를 사용할 수 있다
print(math.sqrt(2))     #2의 제곱근이기 때문에 매개변수가 1개만 필요

print(math.pow(2, 3))

--> 
1.4142135623730951
8.0

실습) 아들이 엄마한테 용돈을 받는데, 첫 달에는 200원을 받고 매월 이전 달의 2배씩 인상하기로 했다. 12개월 째 되는 달에는 얼마를 받을 수 있는지 계산해보자

firstMonthMoney = 200
after12Month = ((firstMonthMoney * 0.01) ** 12) * 100

print('12개월 후 용돈 : {}'.format(after12Month))

after12Month = int(after12Month)  # 실수값을 정수값으로 바꿔줌
strResult = format(after12Month, ',')  #세자리 단위로 , 를 찍어주겠다. 찍어주면 문자값으로 바뀜
print(strResult, '원')

--> 
12개월 후 용돈 : 409600.0
409,600 원

- 복합 연산자(산술연산자 응용ver. = 2개이상을 복합적으로 사용하는 연산자)

- 할당(대입) 연산자 ' = '

: 오른쪽의 값을 왼쪽에 할당(대입)

num1 = 10     # 10을 num1에 할당한다
num2 = 20
result = num1 + num2   # 덧셈의 연산 결과값이 왼쪽으로 할당된다

- 복합 연산자

  • += 덧셈 연산 후 할당
예) 
num1 = num1 + 5    ==     num1 += 5
  • -= 뺄셈 연산 후 할당
    *= 곱셈 연산 후 할당
    /= 나눗셈 연산 후 할당
    %= 나머지 연산 후 할당
    //= 몫 연산 후 할당
    **= 거듭제곱 연산 후 할당
num = 10
num += 3 # num = num + 3
print('num : {}'.format(num))

num = 10
num -= 3 # num = num - 3
print('num : {}'.format(num))

num = 10
num *= 3 # num = num * 3
print('num : {}'.format(num))

num = 10
num /= 3 # num = num / 3
print('num : {}'.format(num))

num = 10
num %= 3 # num = num % 3
print('num : {}'.format(num))

num = 10
num //= 3 # num = num // 3
print('num : {}'.format(num))

num = 10
num **= 3 # num = num ** 3
print('num : {}'.format(num))

실습) 연간 누적 강수량, 평균 강수량 계산

rainAvgAmount = 0
totalRainAmount = 0

totalRainAmount += 30
print('1월 누적 강수량 : {}mm'.format(totalRainAmount))

totalRainAmount += 45
print('2월 누적 강수량 : {}mm'.format(totalRainAmount))

totalRainAmount += 47
print('3월 누적 강수량 : {}mm'.format(totalRainAmount))

totalRainAmount += 55
print('4월 누적 강수량 : {}mm'.format(totalRainAmount))

totalRainAmount += 65
print('5월 누적 강수량 : {}mm'.format(totalRainAmount))

totalRainAmount += 100
print('6월 누적 강수량 : {}mm'.format(totalRainAmount))

totalRainAmount += 128
print('7월 누적 강수량 : {}mm'.format(totalRainAmount))

totalRainAmount += 209
print('8월 누적 강수량 : {}mm'.format(totalRainAmount))

totalRainAmount += 204
print('9월 누적 강수량 : {}mm'.format(totalRainAmount))

totalRainAmount += 186
print('10월 누적 강수량 : {}mm'.format(totalRainAmount))

totalRainAmount += 67
print('11월 누적 강수량 : {}mm'.format(totalRainAmount))

totalRainAmount += 25
print('12월 누적 강수량 : {}mm'.format(format(totalRainAmount, ',')))

rainAvgAmount = totalRainAmount / 12
print('-' * 30) #문자를 곱하면 곱한 만큼 반복된다
print('연간 누적 강수량 : {}mm'.format(totalRainAmount))
print('연간 평균 강수량 : {}mm'.format(rainAvgAmount))
print('-' * 30) #문자를 곱하면 곱한 만큼 반복된다


--> 
1월 누적 강수량 : 30mm
2월 누적 강수량 : 75mm
3월 누적 강수량 : 122mm
4월 누적 강수량 : 177mm
5월 누적 강수량 : 242mm
6월 누적 강수량 : 342mm
7월 누적 강수량 : 470mm
8월 누적 강수량 : 679mm
9월 누적 강수량 : 883mm
10월 누적 강수량 : 1069mm
11월 누적 강수량 : 1136mm
12월 누적 강수량 : 1,161mm
------------------------------
연간 누적 강수량 : 1161mm
연간 평균 강수량 : 96.75mm
------------------------------

0개의 댓글