모듈 연습문제1
모듈
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 getAverage():
avg=getTotal()/5
print(f'평균 : {avg}')
return avg
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 getAverage() >= passAvgScore:
if s1 >= limitScore and s2 >= limitScore and s3 >= limitScore and s4 >= limitScore \
and s5 >= limitScore:
print('Fianl Pass')
else:
print('Fianl Fail')
getAverage()
printPassorFail()
printFinalPassorFail()
실행
import practice7 as p7
if __name__=='__main__':
sub1 = int(input('과목1 점수 입력'))
sub2 = int(input('과목2 점수 입력'))
sub3 = int(input('과목3 점수 입력'))
sub4 = int(input('과목4 점수 입력'))
sub5 = int(input('과목5 점수 입력'))
p7.exampleResult(sub1,sub2,sub3,sub4,sub5)
모듈 연습문제2
def calculatorTotalPrice(gs):
if len(gs)<=0:
print('구매한 상품이 없습니다.')
return
rate = 25
totalPrice = 0
rates={1:5, 2:10, 3:15, 4:20} #{} 딕셔너리
if len(gs) in rates:
rate = rates[len(gs)]
for g in gs:
totalPrice += g * (1-rate * 0.01) #할인율 적용
return[rate,int(totalPrice)]
def formatedNumber(n):
return format(n,',')
실행
import practice8 as dc
if __name__ == '__main__':
flag = True
gs = []
while flag:
selectNumber = int(input('1.구매, 2.종료'))
if selectNumber == 1:
goods_price = int(input('상품 가격 입력 : '))
gs.append(goods_price)
elif selectNumber == 2:
result = dc.calculatorTotalPrice(gs)
flag = False
print(f'할인율: {result[0]}%')
print(f'합계: {result[1]}원')
모듈 연습문제3
로또번호 import random
userNums = []; randNums = []; collNums = []
randBonusNum = 0
def setUserNums(ns):
global userNums #userNums에 ns 대입되도록
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('1등 당첨')
print(f'번호 : {collNums}')
elif len(collNums) == 5 and (randBonusNum in userNums):
print('2등 당첨')
print(f'번호 : {collNums}, 보너스 번호 : {randBonusNum}')
elif len(collNums) == 5:
print('3등 당첨')
print(f'번호 : {collNums}')
elif len(collNums) == 4:
print('4등 당첨')
print(f'번호 : {collNums}')
elif len(collNums) == 3:
print('5등 당첨')
print(f'번호 : {collNums}')
else:
print('다음 기회에')
print(f'기계번호 : {randNums}')
print(f'보너스번호 : {randBonusNum}')
print(f'선택번호 : {userNums}')
print(f'일치번호 : {collNums}')
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()
> **모듈 연습문제4**
순열계산
def getPermutationCnt(n,r):
result = 1
for n in range(n,(n-r),-1):
result = result * n
return result
실행
import practice10 as pt
num1 = int(input('N 입력 : '))
num2 = int(input('R 입력 : '))
print(f'{num1}P{num2}: {pt.getPermutationCnt(num1,num2)}')
순열계산 다른방식 (
from itertools import permutations
def getPermutations(ns,r):
plist = list(permutations(ns,r))
print(f'{len(ns)}P{r} 개수: {len(plist)}')
for n in permutations(ns,r):
print(n, end='')
실행
import practice10 as pt
num1 = int(input('N 입력 : '))
num2 = int(input('R 입력 : '))
listVar =[1,2,3,4,5,6,7,8]
rVar = 3
pt.getPermutations(listVar,rVar)
> **모듈 연습문제5**
조합계산(순서가 중요치 않음)
def getCombinationCnt(n,r):
resultP = 1
resultR = 1
resultC = 1
for n in range(n,(n-r),-1):
resultP = resultP * n
for n in range(r, 0, -1):
resultR = resultR * n
resultC = int(resultP / resultR)
return resultC
실행
import practice11 as ct
numN = int(input('numN 입력: '))
numR = int(input('numR 입력: '))
print(f'{numN}C{numR} : {ct.getCombinationCnt(numN, numR)}')
> **모듈 연습문제6**
공과금 비중계산
income = 0
waterPrice = 0; elecPrice = 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 setElecPrice(ep):
global elecPrice #전역변수 변경세팅
elecPrice = ep
def getElecPrice():
return elecPrice
def setGasPrice(gp):
global gasPrice #전역변수 변경세팅
gasPrice = gp
def getGasPrice():
return gasPrice
def getUtilityBill():
result = waterPrice + gasPrice + elecPrice
return result
def getUtilityRate():
result = getUtilityBill()/getIncome() * 100
return result
실행
import practice12 as ub
income = int(input('수입 입력 : '))
ub.setIncome(income)
waterPrice = int(input('수도세 입력 : '))
ub.setWaterPrice(waterPrice)
elecPrice = int(input('전기세 입력 : '))
ub.setElecPrice(elecPrice)
gasPrice = int(input('가스비 입력 : '))
ub.setGasPrice(gasPrice)
print(f'공과금 합계 : {ub.getUtilityBill():,}원') #:, 쓰면 세자리마다 콤마 가능
print(f'수입대비 공과금 비율 : {ub.getUtilityRate()}%')
> **모듈 연습문제7**
모듈 패키징
모듈1
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)
모듈2
def mod(n1,n2):
return round(n1%n2,2)
def flo(n1,n2):
return round(n1//n2,2)
def exp(n1,n2):
return round(n1**n2,2)
모듈3
def calCircleArea(r):
return round(r*2 3.14, 2)
모듈4
def calTriangleArea(w,h):
return round(w*h/2,2)
def calsquareArea(w,h):
return round(w*h)
실행
from arithmetic import basic_operator as bo
from arithmetic import developer_operator as do
from shape import triangle_square_area as tsa
from shape import circle_area as ca
inputNum1 = float(input('숫자1 입력 : '))
inputNum2 = float(input('숫자2 입력 : '))
print(f'{inputNum1}+{inputNum2} = {bo.add(inputNum1,inputNum2)}')
print(f'{inputNum1}-{inputNum2} = {bo.sub(inputNum1,inputNum2)}')
print(f'{inputNum1}*{inputNum2} = {bo.mul(inputNum1,inputNum2)}')
print(f'{inputNum1}/{inputNum2} = {bo.div(inputNum1,inputNum2)}')
print(f'{inputNum1}%{inputNum2} = {do.mod(inputNum1,inputNum2)}')
print(f'{inputNum1}//{inputNum2} = {do.flo(inputNum1,inputNum2)}')
print(f'{inputNum1}**{inputNum2} = {do.exp(inputNum1,inputNum2)}')
inputwidth = float(input('가로 입력 : '))
inputheight = float(input('세로 입력 : '))
print(f'삼각형 넓이 : {tsa.calTriangleArea(inputwidth,inputheight)}')
print(f'사각형 넓이 : {tsa.calsquareArea(inputwidth,inputheight)}')
inputRadius = float(input('반지름 입력 : '))
print(f'원 넓이 : {ca.calCircleArea(inputRadius)}')