| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 |
Tags
- 기계학습
- Slicing
- matplotlib
- 통계학
- SQL
- Machine Learning
- INSERT
- 등차수열
- Folium
- 순열
- 문제풀이
- 파이썬
- pandas 메소드
- tree.fit
- DataFrame
- 자료구조
- maplotlib
- 리스트
- pandas
- numpy
- 조합
- plt
- 스터디노트
- 등비수열
- 머신러닝
- 재귀함수
- barh
- python
- MacOS
- pandas filter
Archives
- Today
- Total
코딩하는 타코야끼
[스터디 노트] Week2_3일차 [unit_40 ~ 52] 본문
728x90
반응형
1. 중급 문제풀이 1 ~2 [unit 40 ~ 48]
📍 [연습문제] 함수(01)
- 다음과 같이 출력 될 수 있도록 산술연산 계산기를 함수를 이용해서 만들어 보자.
def cal():
def add(n1, n2):
print(f"{n1} + {n2} = {n1 + n2}")
def sub(n1, n2):
print(f"{n1} - {n2} = {n1 - n2}")
def mul(n1, n2):
print(f"{n1} * {n2} = {n1 * n2}")
def div(n1, n2):
print(f"{n1} / {n2} = {n1 / n2}")
def rest(n1, n2):
print(f"{n1} % {n2} = {n1 % n2}")
def share(n1, n2):
print(f"{n1} // {n2} = {n1 // n2}")
def sqare(n1, n2):
print(f"{n1} ** {n2} = {n1 ** n2}")
cal = int(input("1.덧셈 2.뺄셈 3.곱셈 4.나눗셈 5.나머지 6.몫 7.제곱승 8.종료 "))
n1 = float(input("첫 번째 숫자 입력: "))
n2 = float(input("두 번째 숫자 입력: "))
if cal == 1:
add(n1, n2)
elif cal == 2:
sub(n1, n2)
elif cal == 3:
mul(n1, n2)
elif cal == 4:
div(n1, n2)
elif cal == 5:
rest(n1, n2)
elif cal == 6:
share(n1, n2)
elif cal == 7:
sqare(n1, n2)
elif cal == 8:
print("Bye~~")
cal()
>>>
1.덧셈 2.뺄셈 3.곱셈 4.나눗셈 5.나머지 6.몫 7.제곱승 8.종료 4
첫 번째 숫자 입력: 10
두 번째 숫자 입력: 3
10.0 / 3.0 = 3.3333333333333335
📍 [연습문제] 함수(02)
- 다음과 같이 출력 될 수 있도록 이동거리와 이동시간을 반환하는 함수를 만들어 보자.
def get_time(s, d):
result = d / s
h = int(result)
m = int((result - h) * 60)
l = [h, m]
return l
s = float(input("속도(km/h) 입력: "))
d = float(input("거리(km) 입력: "))
t = get_time(s, d)
print(f"{s}(km/h)속도로 {d}(km) 이동한 시간: {t[0]}(h)시간 {t[1]}(m)분")
>>>
속도(km/h) 입력: 90
거리(km) 입력: 247.5
90.0(km/h)속도로 247.5(km) 이동한 시간: 2(h)시간 45(m)분
📍 [연습문제] 함수(04)
- 다음과 같이 출력 될 수 있도록 재귀함수를 이용해서 팩토리얼 함수를 만들어보자.
def factorial(n):
if n <= 1:
return 1
else:
return n * factorial(n - 1)
factorial(10)
>>>
3628800
⚡️ 재귀함수란?
- 자신을 다시 호출하는 함수를 말합니다.
- 이는 문제를 더 작은 문제로 나누는 방법이며, 문제 해결에 사용되는 전략 중 하나입니다.
- 재귀 함수를 사용하면 코드가 간결해지고 이해하기 쉬워질 수 있습니다.
- 그러나 재귀가 너무 깊어지면(즉, 함수 호출이 너무 많아지면) 스택 오버플로우가 발생할 수 있으며, 이는 프로그램의 비정상 종료를 유발할 수 있습니다.
📍 [연습문제] 함수(05)
- 다음과 같이 출력 될 수 있도록 등차 수열의 n번째 값과 합을 출력하는 함수를 만들어보자
def cal(n1, d, n):
value_n = 0; sum_n = 0;
i = 1
while i <= n:
if i == 1:
value_n = n1
sum_n += value_n
print(f"{i}번째 항의 값: {value_n}")
print(f"{i}번째 항까지의의 핪: {sum_n}")
i += i
continue
value_n += d
sum_n += value_n
print(f"{i}번째 항의 값: {value_n}")
print(f"{i}번째 항까지의의 핪: {sum_n}")
i += 1
input_n1 = int(input("a1 입력: "))
input_d = int(input("공차 입력: "))
input_n = int(input("n 입력: "))
cal(input_n1, input_d, input_n)
>>>
a1 입력: 2
공차 입력: 3
n 입력: 7
1번째 항의 값: 2
1번째 항까지의의 핪: 2
2번째 항의 값: 5
2번째 항까지의의 핪: 7
3번째 항의 값: 8
3번째 항까지의의 핪: 15
4번째 항의 값: 11
4번째 항까지의의 핪: 26
5번째 항의 값: 14
5번째 항까지의의 핪: 40
6번째 항의 값: 17
6번째 항까지의의 핪: 57
7번째 항의 값: 20
7번째 항까지의의 핪: 77
📍 [연습문제] 함수(06)
- 다음과 같이 출력 될 수 있도록 등비 수열의 n번째 값과 합을 출력하는 함수를 만들어보자.
a, r, n = input().split()
a = int(a)
r = int(r)
n = int(n)
sum_n = a
print(f"1번째 항의 값: {a}")
print(f"1번째 항까지의 합: {sum_n}")
for i in range(1, n):
a *= r
sum_n += a
print(f"{i+1}번째 항의 값: {a}")
print(f"{i+1}번째 항까지의 합: {sum_n}")
>>>
2 3 5
1번째 항의 값: 2
1번째 항까지의 합: 2
2번째 항의 값: 6
2번째 항까지의 합: 8
3번째 항의 값: 18
3번째 항까지의 합: 26
4번째 항의 값: 54
4번째 항까지의 합: 80
5번째 항의 값: 162
5번째 항까지의 합: 242
⚡️ 등비수열과 등차수열
🌓 등차수열
- 이 수열에서 각 항은 그 이전 항에 일정한 차이(공차)를 더함으로써 얻어집니다.
- 예를 들어, 2, 4, 6, 8, 10은 공차가 2인 등차수열입니다.
- 이 경우 n번째 항은 첫 번째 항에 (n-1) * 공차를 더한 값으로 구할 수 있습니다.
🌓 등비수열
- 이 수열에서 각 항은 바로 앞 항에 일정한 비(공비)를 곱함으로써 얻어집니다.
- 예를 들어, 3, 6, 12, 24, 48은 공비가 2인 등비수열입니다.
- 이 경우 n번째 항은 첫 번째 항에 공비^(n-1)을 곱한 값으로 구할 수 있습니다.
2. 중급 문제풀이 3 [unit 49 ~ 52]
📍 [연습문제] 모듈(02)
- 상품 구매 개수에 따라 할인율이 결정되는 모듈을 만들고, 다음과 같이 계산 결과가 출력되는 프로그램을 만들어보자.

choice_cnt = 0
sum_price = 0
while True:
choice = int(input("상품을 구매 하시겠어요? 1.구매 2.종료"))
if choice == 1:
price = int(input("상품 가격 입력: "))
sum_price += price
choice_cnt += 1
elif choice == 2:
break
discount = min(choice_cnt * 5, 25)
total = sum_price - int(sum_price * (discount / 100))
print(f"할인율: {discount}%")
print(f"합계: {total:,}원")
>>>
상품을 구매 하시겠어요? 1.구매 2.종료1
상품 가격 입력: 1000
상품을 구매 하시겠어요? 1.구매 2.종료1
상품 가격 입력: 1500
상품을 구매 하시겠어요? 1.구매 2.종료1
상품 가격 입력: 500
상품을 구매 하시겠어요? 1.구매 2.종료1
상품 가격 입력: 2250
상품을 구매 하시겠어요? 1.구매 2.종료2
할인율: 20%
합계: 4,200원
📍 [연습문제] 모듈(03)
- 로또 모듈을 만들고 다음과 같이 로또 결과가 출력될 수 있도록 프로그램을 만들어보자.

import random
# 사용자로부터 6개의 번호를 입력받음
chosen_numbers = [int(input(f"번호(1 ~ 45) 입력: ")) for _ in range(6)]
# 로또 번호 6개와 보너스 번호 1개를 무작위로 생성
lotto_numbers = random.sample(range(1, 46), 7)
# 보너스 번호를 설정하고 로또 번호에서 제거
bonus_number = lotto_numbers.pop()
# 선택한 번호와 로또 번호를 비교하여 일치하는 번호를 찾음
matching_numbers = [num for num in chosen_numbers if num in lotto_numbers]
print("아쉽습니다. 다음 기회에~")
print(f"기계 번호: {sorted(lotto_numbers)}")
print(f"보너스 번호: {bonus_number}")
print(f"선택 번호: {sorted(chosen_numbers)}")
print(f"일치 번호: {sorted(matching_numbers)}")
>>>
번호(1 ~ 45) 입력: 5
번호(1 ~ 45) 입력: 15
번호(1 ~ 45) 입력: 25
번호(1 ~ 45) 입력: 30
번호(1 ~ 45) 입력: 45
번호(1 ~ 45) 입력: 9
아쉽습니다. 다음 기회에~
기계 번호: [6, 13, 23, 30, 37, 42]
보너스 번호: 20
선택 번호: [5, 9, 15, 25, 30, 45]
일치 번호: [30]
📍 [연습문제] 모듈(06)
- 수입과 공과금을 입력하면 공과금 총액과 수입 대비 공과금 비율을 계산하는 모듈을 만들어보자.

income = int(input("수입 입력: "))
w_bill = int(input("수도요금 입력: "))
e_bill = int(input("전기요금 입력: "))
g_bill = int(input("가스요금 입력: "))
u_bill = w_bill + e_bill + g_bill
percent = round((u_bill / income) * 100, 2)
print(f"공과금: {u_bill:,}")
print(f"공과금 비율: {percent}%")
>>>
수입 입력: 3000000
수도요금 입력: 15000
전기요금 입력: 17500
가스요금 입력: 125000
공과금: 157,500
공과금 비율: 5.25%
⚡️실습 코드 파일⚡️
반응형
'zero-base 데이터 취업 스쿨 > 스터디 노트' 카테고리의 다른 글
| [스터디 노트] Week2_5일차 [unit1 ~ 14] - 기초수학 (0) | 2023.07.19 |
|---|---|
| [스터디 노트] Week2_4일차 [unit53 ~ 65] (0) | 2023.07.15 |
| [스터디 노트] Week2_2일차[unit20 ~ 39] (0) | 2023.07.14 |
| [스터디 노트] Week2_1일차[unit1 ~ 19] (0) | 2023.07.11 |
| [스터디 노트] Week1_4일차[unit51 ~ 64] (0) | 2023.07.09 |