📌 파이썬 연습문제 [함수]
📋산술연산 계산기 프로그램
def add(n1, n2):
return print(f'{n1} + {n2} : {n1 + n2}')
def sub(n1, n2):
return print(f'{n1} - {n2} : {n1 - n2}')
def mul(n1, n2):
return print(f'{n1} * {n2} : {n1 * n2}')
def div(n1, n2):
return print(f'{n1} / {n2} : {n1 / n2}')
def mod(n1, n2):
return print(f'{n1} % {n2} : {n1 % n2}')
def flo(n1, n2):
return print(f'{n1} // {n2} : {n1 // n2}')
def exp(n1, n2):
return print(f'{n1} ** {n2} : {n1 ** n2}')
print('-' * 30)
while True:
operate = int(input('1.덧셈 \t 2.뺄셈 \t 3.곱셈 \t 4.나눗셈 \t 5.나머지 \t 6.몫 \t 7.제곱승 \t 8.종료 : '))
if operate == 8:
print('Bye~')
break
n1 = float(input('첫 번째 숫자 입력 : '))
n2 = float(input('두 번째 숫자 입력 : '))
if operate == 1:
add(n1, n2)
elif operate == 2:
sub(n1, n2)
elif operate == 3:
mul(n1, n2)
elif operate == 4:
div(n1, n2)
elif operate == 5:
mod(n1, n2)
elif operate == 6:
flo(n1, n2)
elif operate == 7:
exp(n1, n2)
else:
print('다시 입력해주세요')
📋이동거리와 이동시간을 반환하는 함수
import math
return s / 60 * m + s * h
s = float(input('속도(km/h) 입력 : '))
h = float(input('시간(h) 입력 : '))
m = float(input('시간(m) 입력 : '))
d = getDistance(s, h, m)
print(f'{s}(km/h) 속도로 {h}(h)시간 {m}(m)분 동안 이동한 거리 : {d}(km)')
📋이동거리 이동시간 반환 함수
def getTime(speed, distance):
time = distance / speed
hour = int(time)
min = (time - hour) * 60
times = [hour, min]
return times
s = float(input('속도(km/h) 입력 : '))
d = float(input('거리 입력 : '))
t = getTime(s, d)
print(f'{s}(km/h) 속도로 {d}(km) 이동한 시간 : {t[0]}시간 {math.trunc(t[1])}분')
📋 비행기 티켓 영수증 출력 함수
def printTicket(c, i, a, cd, id, ad):
cp = c * 18000
dcp = cd * 18000 * 0.5
ip = i * 25000
dip = id * 25000 * 0.5
ap = a * 50000
dap = ad * 50000 * 0.5
price = cp + dcp + ip + dip + ap + dap
print('=' * 30)
print(f'유아 {c}명 요금 : {int(cp)}')
print(f'유아 할인 대상 {cd}명 요금 : {int(dcp)}')
print(f'소아 {i}명 요금 : {int(ip)}')
print(f'소아 할인 대상 {id}명 요금 : {int(dip)}')
print(f'성인 {a}명 요금 : {int(ap)}')
print(f'성인 할인 대상 {ad}명 요금 : {int(dap)}')
print('=' * 30)
print(f'Total : {c + i + a + cd + id + ad}')
print(f'Total Price : {format(int(price), ",")}')
print('=' * 30)
return
childPrice = int(input('유아 입력 : '))
disChildPrice = int(input('할인 대상 유아 입력 : '))
infantPrice = int(input('소아 입력 : '))
disInfantPrice = int(input('할인 대상 소아 입력 : '))
adultPrice = int(input('성인 입력 : '))
disAdultPrice = int(input('할인 대상 성인 입력 : '))
printTicket(childPrice, infantPrice, adultPrice, disChildPrice, disInfantPrice, disAdultPrice)
📋 재귀함수를 이용한 팩토리얼
def factorial(n):
if n > 1:
return n * factorial(n - 1)
else:
return 1
n = int(input('input number : '))
print(f'factorial : {format(factorial(n),",")}')
📋 단리/월복리 계산기 함수
def singleRate(m, t, r):
yearRate = m * (r * 0.01)
total = yearRate * t + m
return format(int(total), ",")
def multiRate(m, t, r):
total = m
for i in range(12 * t):
total += total * (r / 12 * 0.01)
return format(int(total), ",")
money = int(input('예치금(월) : '))
term = int(input('기간(년) : '))
rate = int(input('연 이율(%) : '))
print('[단리 계산기]')
print('=' * 15)
print(f'예치금 : {format(money, ",")}')
print(f'예치기간 : {term}')
print(f'연 이율 : {rate}%')
print('-' * 15)
print(f'{term}년 후 총 수령액 : {singleRate(money, term, rate)}')
print('[월복리 계산기]')
print('=' * 15)
print(f'예치금 : {format(money, ",")}')
print(f'예치기간 : {term}')
print(f'연 이율 : {rate}%')
print('-' * 15)
print(f'{term}년 후 총 수령액 : {multiRate(money, term, rate)}')
📋 등차수열 함수
def sequenceFunc(first, step, last):
val = 0
sum = 0
for i in range(last):
val = first + (step * i)
sum += val
print(f'{i + 1}번째 항의 값 : {val}')
print(f'{i + 1}번째 항까지의 합 : {sum}')
return
first = int(input('a1 입력 : '))
step = int(input('공차 입력 : '))
last = int(input('n 입력 : '))
sequenceFunc(first, step, last)
📋 등차수열 함수
def sequenceFunc(first, step, last):
val = first
sum = 0
for i in range(last):
if i != 0:
val *= step
sum += val
print(f'{i + 1}번째 항의 값 : {val}')
print(f'{i + 1}번째 항까지의 합 : {sum}')
return
first = int(input('a1 입력 : '))
step = int(input('공차 입력 : '))
last = int(input('n 입력 : '))
sequenceFunc(first, step, last)
📌 파이썬 연습문제 [모듈]
📋 합격 여부 출력 프로그램
💡module
def getResultScore(scoreList):
total = 0
result = 'Final Pass'
for score in scoreList:
total += score
if score >= 40:
print(f'{score} : Pass')
else:
print(f'{score} : Fail')
result = 'Final Fail'
result = 'Final Fail' if total / len(scoreList) < 60 else result
print(f'총점 : {total}')
print(f'평균 : {round(total / len(scoreList), 2)}')
print(f'결과 : {result}')
-------------------------------------------------------
💡main
import CustomModule.printResult as pr
scoreList = []
for i in range(5):
score = int(input(f'과목{i + 1} 점수 입력 :'))
scoreList.append(score)
pr.getResultScore(scoreList)
📋 상품 구매 개수에 따른 할인율 적용 프로그램
💡module
def getDiscount(cnt):
discount = 0
if cnt >= 5:
discount = 25
elif cnt >= 4:
discount = 20
elif cnt >= 3:
discount = 15
elif cnt >= 2:
discount = 10
elif cnt >= 1:
discount = 5
else:
discount = 0
return discount
-------------------------------------------------------
💡main
import CustomModule.discount as dc
cnt = 0
sum = 0
while True:
select = int(input('상품을 구매 하시겠어요? [1] 구매 [2] 종료 : '))
if select == 2:
break
elif select == 1:
price = int(input('상품 가격 입력 : '))
sum += price
cnt += 1
else:
print(f'다시 입력하세요')
discount = dc.getDiscount(cnt)
total = sum * (1 - dc.getDiscount(cnt) * 0.01)
print(f'할인율 : {discount}%')
print(f'합계 : {format(int(total), ",")}원')
📋 로또 프로그램
💡module
def getLottoResult(numbers: list):
bonus = random.randint(1, 45)
lottos: list = []
lottos = list(random.sample(range(1, 46), 6))
finalList = lottos.copy()
finalList.append(numbers)
corrects = list(set(numbers) & set(lottos))
if len(corrects) == 6:
print('1등 당첨')
print(f'번호 : {corrects}')
elif len(corrects) == 5 and bonus in numbers:
print('2등 당첨')
print(f'번호 : {corrects} 보너스 : {bonus}')
elif len(corrects) == 5:
print('3등 당첨')
print(f'번호 : {corrects}')
elif len(corrects) == 4:
print('4등 당첨')
print(f'번호 : {corrects}')
elif len(corrects) == 3:
print('5등 당첨')
print(f'번호 : {corrects}')
else:
print('꽝!')
print(f'기계 번호 : {lottos}')
print(f'보너스 번호 : {bonus}')
print(f'선택 번호 : {numbers}')
print(f'일치 번호 : {corrects}')
return
-------------------------------------------------------
💡main
import random
import CustomModule.lotto as lt
numbers = []
for i in range(6):
n = int(input('번호(1~45) 입력 : '))
numbers.append(n)
lt.getLottoResult(numbers)
📋 순열 & 조합 계산 프로그램
💡module
from itertools import permutations
from itertools import combinations
def getPermutation(n, r, log=True):
result = 1
logs = []
for i in range(n, n - r, -1):
print(f'n : {i}')
result *= i
print(f'{n}P{r} : {result}')
if log:
for i in range(n):
logs.append(i + 1)
getPermutaionLog(logs, r)
return
def getPermutaionLog(logs, r):
logList = list(permutations(logs, r))
print(f'{len(logs)}P{r} 개수: {len(logList)}')
for n in logList:
print(n, end=', ')
print()
return
def getCombination(n, r, log=True):
resultP = 1
resultR = 1
resultC = 1
rnr = r
logs = []
for i in range(n, n - r, -1):
resultP *= i
resultR *= rnr
rnr -= 1
resultC = int(resultP / resultR)
print(f'resultP : {resultP}')
print(f'resultR : {resultR}')
print(f'resultC : {resultC}')
print(f'{n}C{r} : {resultC}')
if log:
for i in range(n):
logs.append(i + 1)
getCombinationLog(logs, r)
def getCombinationLog(logs, r):
logList = list(combinations(logs, r))
print(f'{len(logs)}P{r} 개수: {len(logList)}')
for n in logList:
print(n, end=', ')
print()
return
if __name__ == '__main__':
n = int(input('numN 입력 : '))
r = int(input('numR 입력 : '))
getPermutation(n, r)
getCombination(n, r)
-------------------------------------------------------
💡main
import CustomModule.calculation as cal
if __name__ == '__main__':
n = int(input('numN 입력 : '))
r = int(input('numR 입력 : '))
cal.getPermutation(n, r, False)
import CustomModule.calculation as cal
if __name__ == '__main__':
n = int(input('numN 입력 : '))
r = int(input('numR 입력 : '))
cal.getCombination(n, r, False)
📋 공과금 비율 프로그램
💡module
income = 0
water = 0
electric = 0
gas = 0
def setIncome(i):
global income
income = i
def getIncome():
return income
def setWater(w):
global water
water = w
def getWater():
return water
def setElectric(e):
global electric
electric = e
def getElectric():
return electric
def setGas(g):
global gas
gas = g
def getGas():
return gas
def getUtility():
bill = {}
utility = getWater() + getElectric() + getGas()
utilityPercent = round(utility / getIncome() * 100, 2)
bill.update({'utility': utility})
bill.update({'utilityPercent': utilityPercent})
return bill
-------------------------------------------------------
💡main
import CustomModule.bill as bill
i = int(input('수입 입력 : '))
bill.setIncome(i)
w = int(input('수도 요금 입력 : '))
bill.setWater(w)
e = int(input('전기 요금 입력 : '))
bill.setElectric(e)
g = int(input('가스 요금 입력 : '))
bill.setGas(g)
bill = bill.getUtility()
print(f'공과금 : {format(bill.get("utility"), ",")}원')
print(f'공과금 비율 : {bill.get("utilityPercent")}%')
📋 # 연산 계산기 + 넓이 구하기 프로그램
💡basic_operator
def add(n1, n2):
return n1 + n2
def sub(n1, n2):
return n1 - n2
def mul(n1, n2):
return n1 * n2
def div(n1, n2):
return round(n1 / n2, 2)
💡developer_operator
def mod(n1, n2):
return n1 % n2
def flo(n1, n2):
return n1 // n2
def exp(n1, n2):
return n1 ** n2
💡circle_area
def getCircleArea(radius):
return round(radius * radius * 3.14, 2)
💡triangle_square_area
def getTriangleArea(w, h):
return round(w * h / 2, 2)
def getSquareArea(w, h):
return w * h
-------------------------------------------------------
💡main
from arithmetic.basic_operator import *
from arithmetic.developer_operator import *
from shape.triangle_square_area import *
from shape.circle_area import *
n1 = float(input('숫자1 입력 : '))
n2 = float(input('숫자1 입력 : '))
print(f'{n1} + {n2} : {add(n1, n2)}')
print(f'{n1} - {n2} : {sub(n1, n2)}')
print(f'{n1} * {n2} : {mul(n1, n2)}')
print(f'{n1} / {n2} : {div(n1, n2)}')
print(f'{n1} % {n2} : {mod(n1, n2)}')
print(f'{n1} // {n2} : {flo(n1, n2)}')
print(f'{n1} ** {n2} : {exp(n1, n2)}')
w = float(input('가로 입력 : '))
h = float(input('세로 입력 : '))
print(f'삼각형 넓이 : {getTriangleArea(w, h)}')
print(f'사각형 넓이 : {getSquareArea(w, h)}')
r = float(input('반지름 입력 : '))
print(f'원의 넓이 : {getCircleArea(r)}')
후기
순열 & 조합 문제에서 파이썬에서 제공하는 라이브러리가 있는지 모르고 순열 로그를 프린트하는 함수를 구현 시도하다가 머리 깨질뻔했다.. 왠지 너무 어렵더라,, permutation, combination 모듈 외에도 파이썬에서는 여러 유용한 모듈들이 많은것같다. 유용한 모듈