(PassOrFail.py)
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('Final Pass!!')
else:
print('Final Fail!!')
else:
print('Final Fail!!')
getAverage()
printPassOrFail()
printFinalPassOrFail()
(ex.py)
import PassOrFail as pf
if __name__=='__main__':
sub1 = int(input('과목1 점수 입력: '))
sub2 = int(input('과목2 점수 입력: '))
sub3 = int(input('과목3 점수 입력: '))
sub4 = int(input('과목4 점수 입력: '))
sub5 = int(input('과목5 점수 입력: '))
pf.exampleResult(sub1, sub2, sub3, sub4, sub5)
(discount.py)
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, ',')
(ex.py)
import discount 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'합계: {dc.formatedNumber(result[1])}원')
사용자 입력값 userNums 와 난수 로또 번호 발생으로
당첨 여부를 확인할 수 있는 로또 머신 만들기
(lotto.py)
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,46)
if randBonusNum not in randNums:
break
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()
(ex.py)
import lotto as lt
lt.startLotto()
(permutaiton.py)
def getPermutaitonCnt(n,r,logPrint=True):
result = 1
for n in range(n, (n-r), -1):
if logPrint: print('n:{}'.format(n))
result = result * n
return result
import permutation as pt
numN = int(input('numN 입력: '))
numR = int(input('numR 입력: '))
print(f'{numN}P{numR}: {pt.getPermutaitonCnt(numN, numR, logPrint=False)}')
(combination.py)
def getCombinationCnt(n, r):
resultP = 1
resultR = 1
resultC = 1
for n in range(n, (n-r), -1):
resultP *= n
for n in range(r, 0, -1):
resultR *= n
resultC = int(resultP / resultR)
return resultC
(ex.py)
import combination as ct
numN = int(input('numN 입력: '))
numR = int(input('numR 입력: '))
ct.getCombinationCnt(numN, numR)
print(f'{numN}C{numR}: {ct.getCombinationCnt(numN,numR)}')
(utilityBill.py)
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 result
(ex.py)
import utilityBill as ub
inputIncome = int(input('수입 입력: '))
ub.setIncome(inputIncome)
inputWaterPrice = int(input('수도요금 입력: '))
ub.setWaterPrice(inputWaterPrice)
inputElectricPrice = int(input('전기요금 입력: '))
ub.setElectricPrice(inputElectricPrice)
inputGasPrice = int(input('가스요금 입력: '))
ub.setGasPrice(inputGasPrice)
print(f'공과금: {ub.getUtilityBill()}원')
print(f'수입 대비 공과금 비율: {ub.getUtilityBillRate()}%')
문제풀이지만 반복적인 setter, getter 등 설정하는 것이 뭐랄까... 조금은 지루하기도 했지만 이런 한땀 한땀이 모여 프로그램이 되는 거겠지. 열심히 해보자.