[Python 중급 문제풀이]
모듈(01-07)
모듈01
과목별 점수를 입력하면 합격 여부를 출력하는 모듈을 만들어보자. (평균 60이상 합격, 과락 40으로 한다.)
def exampleResult(s1,s2,s3,s4,s5): passAvgscore=60 limitScore=40 def getTotal(): totalScore=s1+s2+s3+s4+s5 print(f'총점: {totalScore}') return totalScore def getAvgScore(): avgScore= getTotal()/5 print(f'평균: {avgScore}') return avgScore def printPassOrFail(): print(f'{s1} :Pass') if s1 >=limitScore else print(f'{s1} :Fail') print(f'{s2} :Pass') if s2 >=limitScore else print(f'{s2} :Fail') print(f'{s3} :Pass') if s3 >=limitScore else print(f'{s3} :Fail') print(f'{s4} :Pass') if s4 >=limitScore else print(f'{s4} :Fail') print(f'{s5} :Pass') if s5 >=limitScore else print(f'{s5} :Fail') def printFinalPassOrFail(): if getAvgScore() >=passAvgscore: if s1>=limitScore and s2>=limitScore and s3>=limitScore and s4>=limitScore and s5>=limitScore: print('Final pass!!') else: print('Final Fail!!') else: print('Final Faill!!') getAvgScore() printPassOrFail() printFinalPassOrFail() 과목 1 점수 입력:100 과목 2 점수 입력:35 과목 3 점수 입력:85 과목 4 점수 입력:45 과목 5 점수 입력:90 총점: 355 평균: 71.0 100 :Pass 35 :Fail 85 :Pass 45 :Pass 90 :Pass 총점: 355 평균: 71.0 Final Fail!!
모듈02
상품 구매 개수에 따라 할인율이 결정되는 모듈을 만들고, 다음과 같이 계산 결과가 출력되는 프로그램을 만들어보자.
def calculatorTotalPrice(gs): if len(gs) <=0: print('구매 상품이 없습니다.') return rate=25 totalPrice=0 rates={1:5, 2:10 , 3:15 , 4:20 , 5:25} if len(gs) in rates: rate= rates[len(gs)] for g in gs: totalPrice+= g*(1-rate*0.01) return[rate,totalPrice] def formatedNumvber(n): return format(int(n),',') import modtest as ca if __name__ == '__main__': flag=True gs=[] while flag: selectNumber=int(input('상품을 구매 하시겠어요? 1.구매 2.종료')) if selectNumber ==1: price=int(input('상품 가격 입력: ')) gs.append(price) elif selectNumber==2: result=ca.calculatorTotalPrice(gs) flag=False print(f'할인율 : {result[0]}') print(f'합계 : {ca.formatedNumvber(result[1])}원') 상품을 구매 하시겠어요? 1.구매 2.종료1 상품 가격 입력: 1000 상품을 구매 하시겠어요? 1.구매 2.종료2 할인율 : 5 합계 : 950원
모듈03
로또 모듈을 만들고 다음과 같이 로또 결과가 출력될 수 있도록 프로그램을 만들어보자.
import random userNums=[] ; randNums=[] ; collNums=[] randBonusNum=0 def setUserNums(ns): global userNums usernums=ns def getUserNums(): return userNums def setRandNums(): global randNums randNums=random.sample(range(1,46),6) def getRandNums(): return randNums def setBonusNum(): global randBonusNum while True: randBonusNum=random.randint(1,45) if randBonusNum not in randNums: break def getBonusNum(): return randBonusNum def lottoResult(): global userNums global randNums global collNums collNums=[] for un in userNums: if un in randNums: collNums.append(un) if len(collNums)==6: print(f'1등 당첨!!') print(f'번호 : {collNums}') elif len(collNums)==5 and (randBonusNum in userNums): print(f'2등 당첨!!') print(f'번호 : {collNums},보너스 번호 : {randBonusNum}') elif len(collNums) == 5: print(f'3등 당첨!!') print(f'번호 : {collNums}') elif len(collNums) == 4: print(f'4등 당첨!!') print(f'번호 : {collNums}') elif len(collNums) == 3: print(f'5등 당첨!!') print(f'번호 : {collNums}') else: print('아쉽습니다. 다음 기회에~') print(f' 기계 번호 : {randNums}') print(f' 보너스 번호 : {randBonusNum}') print(f' 선택 번호 : {randNums}') print(f' 일치 번호 : {randNums}') def startLotto(): n1=int(input('번호(1~45) 입력: ')) n2=int(input('번호(1~45) 입력: ')) n3=int(input('번호(1~45) 입력: ')) n4=int(input('번호(1~45) 입력: ')) n5=int(input('번호(1~45) 입력: ')) n6=int(input('번호(1~45) 입력: ')) selectNums=[n1,n2,n3,n4,n5,n6] setUserNums(selectNums) setRandNums() setBonusNum() lottoResult() 번호(1~45) 입력: 5 번호(1~45) 입력: 15 번호(1~45) 입력: 25 번호(1~45) 입력: 30 번호(1~45) 입력: 45 번호(1~45) 입력: 9 아쉽습니다. 다음 기회에~ 가게 번호 : [22, 27, 21, 15, 35, 36] 보너스 번호 : 34 선택 번호 : [22, 27, 21, 15, 35, 36] 일치 번호 : [22, 27, 21, 15, 35, 36]
모듈04
순열 계산 모듈을 만들고 다음 순열 계산 결과를 출력해 보자.
모듈05
조합 계산 모듈을 만들고 다음 조합 계산 결과를 출력해 보자.
def getCombinationCnt(n,r,logPrint=True): resultP=1 resultR=1 resultC=1 for n in range(n,(n-r),-1): resultP=resultP*n if logPrint:print(f'resultP: {resultP}') for n in range(r,0,-1): resultR=resultR*n if logPrint: print(f'resultR: {resultR}') resultC=int(resultP/resultR) if logPrint: print(f'resultC: {resultC}') return resultC from itertools import combinations def getCombinations(ns,r): cList=list(combinations(ns,r)) print(f'{len(ns)}C{r}개수 : {len(cList)}') for n in combinations(ns,r): print(n,end=', ') if __name__== '__main__': numN=int(input('numN입력:')) numR=int(input('numR입력:')) print(f'{numN}C{numR} : {getCombinationCnt(numN,numR,logPrint=False)}') ns=[1,2,3,4,5,6,7,8] getCombinations(ns,3) import modtest as ct numN=int(input('numN 입력:')) numR=int(input('numR 입력:')) print(f'{numN}C{numR}: {ct.getCombinationCnt(numN,numR,logPrint=False)}') listVar=[1,2,3,4,5,6,7,8] rVar=3 ct.getCombinations(listVar,rVar) numN 입력:8 numR 입력:3 8C3: 56 8C3개수 : 56 (1, 2, 3), (1, 2, 4), (1, 2, 5), (1, 2, 6), (1, 2, 7), (1, 2, 8), (1, 3, 4), (1, 3, 5), (1, 3, 6), (1, 3, 7), (1, 3, 8), (1, 4, 5), (1, 4, 6), (1, 4, 7), (1, 4, 8), (1, 5, 6), (1, 5, 7), (1, 5, 8), (1, 6, 7), (1, 6, 8), (1, 7, 8), (2, 3, 4), (2, 3, 5), (2, 3, 6), (2, 3, 7), (2, 3, 8), (2, 4, 5), (2, 4, 6), (2, 4, 7), (2, 4, 8), (2, 5, 6), (2, 5, 7), (2, 5, 8), (2, 6, 7), (2, 6, 8), (2, 7, 8), (3, 4, 5), (3, 4, 6), (3, 4, 7), (3, 4, 8), (3, 5, 6), (3, 5, 7), (3, 5, 8), (3, 6, 7), (3, 6, 8), (3, 7, 8), (4, 5, 6), (4, 5, 7), (4, 5, 8), (4, 6, 7), (4, 6, 8), (4, 7, 8), (5, 6, 7), (5, 6, 8), (5, 7, 8), (6, 7, 8),
모듈06
수입과 공과금을 입력하면 공과금 총액과 수입 대비 공과금 비율을 계산하는 모듈을 만들어보자.
Income=0 waterPrice=0;electricPrice=0;gasPrice=0 def setIncome(ic): global Income Income=ic def getIncome(): return Income def setWaterPrice(wp): global waterPrice waterPrice=wp def getWaterPrice(): return waterPrice def setElectricPrice(ep): global electricPrice electricPrice=ep def getElectricPrice(): return electricPrice def setGasPrice(gp): global gasPrice gasPrice=gp def getGasPrice(): return gasPrice def getUtilityBill(): result=waterPrice+electricPrice+gasPrice return result def getUtilityBillRate(): result= getUtilityBill() / getIncome()*100 return round(result,2) def formatedNumber(n): return format(n,',') import modtest as ut Income=int(input('수입 입력 :')) ut.setIncome(Income) waterPrice=int(input('수도요금 입력 :')) ut.setWaterPrice(waterPrice) electricPrice=int(input('전기요금 입력 :')) ut.setElectricPrice(electricPrice) gasPrice=int(input('가스요금 입력 :')) ut.setGasPrice(gasPrice) print(f'공과금: {ut.formatedNumber(ut.getUtilityBill())}원') print(f'공과금: {ut.formatedNumber(ut.getUtilityBillRate())}%') 수입 입력 :3000000 수도요금 입력 :15000 전기요금 입력 :17500 가스요금 입력 :125000 공과금: 157,500원 공과금: 5.25%
모듈07
다음과 같이 패키지와 모듈을 만들고 연산 결과를 출력해 보자.
#basic_operator.py def add(n1,n2): return round(n1+n2,2) def sub(n1,n2): return round(n1-n2,2) def mul(n1,n2): return round(n1*n2,2) def div(n1,n2): return round(n1/n2,2) #develpoer_operator.py def mod(n1,n2): return round(n1%n2,2) def flordiv(n1,n2): return round(n1 //n2,2) def pow(n1,n2): return round(n1**n2,2) #circle_area.py def squarArea(r): return round(r**2 *3.14,2) #trianlge_square_area.py def triangleArea(w,h): return round(w*h /2,2) def spuareArea(w,h): return round( w*h,2 ) from arithmetic import basic_operator as bo from arithmetic import developer_operator as do from shape import circle_area as ca from shape import triangle_square_area as tsa num1=float(input('숫자1 입력 :')) num2=float(input('숫자2 입력: ')) print(f'{num1} + {num2} = {bo.add(num1,num2)}') print(f'{num1} - {num2} = {bo.sub(num1,num2)}') print(f'{num1} * {num2} = {bo.mul(num1,num2)}') print(f'{num1} / {num2} = {bo.div(num1,num2)}') print(f'{num1} % {num2} = {do.mod(num1,num2)}') print(f'{num1} // {num2} = {do.flordiv(num1,num2)}') print(f'{num1} ** {num2} = {do.pow(num1,num2)}') width=float(input('가로 길이 입력: ')) height=float(input('세로 길이 입력: ')) print(f'삼각형 넓이 : {tsa.triangleArea(num1,num2)}') print(f'사각형 넓이 : {tsa.spuareArea(num1,num2)}') r=float(input('반지름 입력 :')) print(f'원의 넓이 : {ca.squarArea(r)}')