def distanceCal(speed,hour,min): distance = speed * (hour + min / 60) return distance s = float(input('속도(km/h)입력:')) h= float(input('시간(h)입력:')) m = float(input('시간(m)입력:')) d = distanceCal(s,h,m) print(f'{s}(km/h)속도로 {h}(h)시간 {m}(m)분 동안 이동한 거리: {d}(km)') #실행결과 속도(km/h)입력:90 시간(h)입력:2 시간(m)입력:45 90.0(km/h)속도로 2.0(h)시간 45.0(m)분 동안 이동한 거리: 247.5(km)
# 기본 값 입력 childPrice = 18000 infantPrice = 25000 adultPrice = 50000 # input으로 입력받음 childNum = int(input('유아 입력:')) d_childNum = int(input('할인 대상 유아 입력:')) infantNum = int(input('소아 입력:')) d_infantNum = int(input('할인 대상 소아 입력:')) adultNum = int(input('성인 입력:')) d_adultNum = int(input('할인 대상 성인 입력:')) # 함수 선언 def formated(n): return format(n,',') def airplaneReceipt(c1,c2,i1,i2,a1,a2): cp = int(childNum * childPrice) d_childPrice = int(cp * 0.5) print('='*50) print(f'유아{c1}명 요금: {formated(cp)}원') print(f'할인 대상 유아 {c2}명 요금: {formated(d_childPrice)}원') ip = infantNum * infantPrice d_infantPrice = int(ip * 0.5) print(f'소아{i1}명 요금: {formated(ip)}원') print(f'할인 대상 유아 {i2}명 요금: {formated(d_infantPrice)}원') ap = adultNum * adultPrice d_adultPrice = int(ap * 0.5) print(f'성인{a1}명 요금: {formated(ap)}원') print(f'할인 대상 성인 {a2}명 요금: {formated(d_adultPrice)}원') print('='*50) print(f'Total : {childNum + d_childNum + infantNum + d_infantNum + adultNum + d_adultNum}명') print(f'Total Price: {formated(cp + d_childPrice + ip + d_infantPrice + ap + d_adultPrice)}원') print('=' * 50) #함수 실행 airplaneReceipt(childNum,d_childNum,infantNum,d_infantNum,adultNum,d_adultNum)
#실행결과 유아 입력:1 할인 대상 유아 입력:1 소아 입력:1 할인 대상 소아 입력:1 성인 입력:1 할인 대상 성인 입력:1 ================================================== 유아1명 요금: 18,000원 할인 대상 유아 1명 요금: 9,000원 소아1명 요금: 25,000원 할인 대상 유아 1명 요금: 12,500원 성인1명 요금: 50,000원 할인 대상 성인 1명 요금: 25,000원 ================================================== Total : 6명 Total Price: 139,500원 ==================================================
def formated(n): return format(n,',')
def formated(n): return format(n,',') def basic_RateCalculator(m,y,r): #단리 계산기 rateMoney = 0 totalMoney = 0 for i in range(y): rateMoney += m * (r * 0.01) totalMoney = m + rateMoney return totalMoney def month_RateCalculator(m, y, r): #월복리 계산기 y = y * 12 month_rateMoney = (r / 12) * 0.01 totalMoney = m for i in range(y): totalMoney += totalMoney * month_rateMoney return totalMoney deposit = int(input(f'예치금(원):')) year = int(input(f'기간(년):')) rate = float(input(f'연 이율(%):')) print(f'[단리 계산기]') print('='*50) print(f'예치금: {deposit}원 ') print(f'예치기간 : {year}년') print(f'연 이율: {rate}%') print('-'*50) print(f'{year}년 후 총 수령액:{formated(int(basic_RateCalculator(deposit,year,rate)))}원') print('=' * 50) print(f'[월복리 계산기]') print('=' * 50) print(f'예치금: {deposit}원 ') print(f'예치기간 : {year}년') print(f'연 이율: {rate}%') print('-' * 50) print(f'3년 후 총 수령액:{formated(int(month_RateCalculator(deposit,year,rate)))}원') print('=' * 50)
#실행결과 예치금(원):10000000 기간(년):3 연 이율(%):3 [단리 계산기] ================================================== 예치금: 10000000원 예치기간 : 3년 연 이율: 3.0% -------------------------------------------------- 3년 후 총 수령액:10,900,000원 ================================================== [월복리 계산기] ================================================== 예치금: 10000000원 예치기간 : 3년 연 이율: 3.0% -------------------------------------------------- 3년 후 총 수령액:10,940,514원 ==================================================
모듈 만들기(모듈이름은 test)
def examResult(s1,s2,s3,s4,s5): avgScoreLimit = 60 limitScore = 40 def totalScore(): total = s1+s2+s3+s4+s5 print(f'총점: {total}') return total def avgScore(): avg = totalScore() / 5 print(f'평균: {avg}') return avg def sub_PassOrFail(): print(f'{s1} : Pass' if s1 >= limitScore else (f'{s1} : Fail')) print(f'{s2} : Pass' if s2 >= limitScore else (f'{s2} : Fail')) print(f'{s3} : Pass' if s3 >= limitScore else (f'{s3} : Fail')) print(f'{s4} : Pass' if s4 >= limitScore else (f'{s4} : Fail')) print(f'{s5} : Pass' if s5 >= limitScore else (f'{s5} : Fail')) def final_PassOrFail(): if avgScore() >= avgScoreLimit: if s1>=40 and s2>=40 and s3>=40 and s4>=40 and s5>=40: print('Final Pass!') else: print('Final Fail!') else: print('Final Fail') sub_PassOrFail() final_PassOrFail()
포인트: 모듈을 만들고 내용을 입력하면 함수부분에서 다뤘던것처럼 동일하게 함수부를 작성하고 맨아래 실행까지 완벽하게 작성한다.
실행부 만들기(test 모듈 실행하기)
import test as t if __name__ == '__main__': sub1 = int(input('과목1 점수 입력:')) sub2 = int(input('과목2 점수 입력:')) sub3 = int(input('과목3 점수 입력:')) sub4 = int(input('과목4 점수 입력:')) sub5 = int(input('과목5 점수 입력:')) t.examResult(sub1,sub2,sub3,sub4,sub5) #실행결과 과목1 점수 입력:100 과목2 점수 입력:100 과목3 점수 입력:80 과목4 점수 입력:90 과목5 점수 입력:70 100 : Pass 100 : Pass 80 : Pass 90 : Pass 70 : Pass 총점: 440 평균: 88.0 Final Pass!

모듈 만들기(모듈 이름은 test)
def totalGoodsPrice(bags): if len(bags) < 0: #장바구니에 담긴 상품이 하나도 없다면 print('구매상품이 없습니다') #구매 상품 없다고 출력 return #return 의 또다른 기능은 문장의 '종료' 기능 rate = 25 #최대 할인률은 25% totalPrice = 0 #장바구니에 담긴 합계 가격을 우선 0 으로 기준 잡음 rates = {1:5,2:10,3:15,4:20} if len(bags) in rates: #위 할인율 튜플에서 장바구니안 상품의 갯수가 있다면 rate = rates[len(bags)] # 할인율을 결정하자 for goods in bags: #장바구니안의 상품을 하나씩 꺼내어 totalPrice += goods * (1- rate * 0.01) #상품의 할인가를 구해 for문을 돌려 계속 더해주자. return(rate, int(totalPrice)) #할인율과 상품합계가격을 반환함
실행부 만들기
import test as t if __name__ == '__main__': #전역변수 실행 flag = True bags = [] # 장바구니 비워두기 while flag: selectNum = int(input('상품을 구매 하시겠어요? 1.구매 2.종료:')) if selectNum == 1: goodsPrice = int(input('상품 가격을 입력하세요:')) bags.append(goodsPrice) # 입력한 상품 가격을 장바구니에 집어넣기 elif selectNum == 2: result = t.totalGoodsPrice(bags) flag = False print(f'할인율:{result[0]}') print(f'합계:{result[1]}')
위 문제에서 아직 배우지 못한 튜플이라는 것이 등장하는데 할인률(rates)를 튜플에 담아 그 안에 있는 요소를 꺼내서 사용하였다. 아직 튜플을 제대로 배우지 못했지만 요소를 꺼내는 방법을 조금은 알것 같았다.
그리고 장바구니의 상품의 갯수가 5개가 넘어가면 할인률이 25%로 고정이라서 rate = 25라고 기준을 세워두웠고 문장안에서 if len(bags) in rates:라고 명시하여 상품의 갯수가 튜플(rates)에 있을 때에만 할인률이 달라질 수 있게 하였다.
(강의를 보고 배운거지만 이것을 어떻게 고민해서 생각해낼수 있을까ㄷㄷ 뇌가 조금더 말랑말랑 해져야 할 것 같다...)
오늘도 다양한 파이썬 문제들을 풀었는데 우선 교수님의 풀이강의를 듣기전 문제만 보고 스스로 풀어보는 시간을 가졌다. 아직은 문제만 보고 어떻게 풀지를 노트에 정리해도 완벽하게 정리하기가 어려웠고 실제로 코드로 작성하기에도 시간이 걸렸다.
실제로 교수님 풀이강의를 들어봐도 이해가 안되는 부분이 계속해서 나타났는데,, 그때마다 그냥 코드 한줄한줄 어떤 의미인지 한글로 주석처리를 하며 배운 하루였다.
오늘의 정리!
1) 파이썬에서 들여쓰기란 정말 중요한 것이였다.....
2) input이 많아야 output이 많다. 문제가 안풀려도 그냥 계속 풀자. 언젠가 문제만 보고도 감이 올때가 있겠지

(출처:Designed and sold by Angel Angelov)