- 과목별 점수를 입력하면 합격 여부를 출력하는 모듈을 만들어보자.'
(평균 60이상 합격, 과락 40으로 한다.)
# 실행파일
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)
# 모듈파일
def exampleResult(s1, s2, s3, s4, s5): # *s 로 사용자가 몇개를 입력해도 계산할 수 있도록 해보기
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()
*s 로 사용자가 몇개를 입력해도 계산할 수 있도록 해보기!!
- 상품 구매 개수에 따라 할인율이 결정되는 모듈을 만들고, 다음과 같이 계산 결과가 출력되는 프로그램을 만들어보자.
구매 개수 1개 2개 3개 4개 5개이상
할인율(%) 5 10 15 20 25
실행파일
import discount as dc
if __name__ == '__main__':
flag = True
gs = []
while flag:
selectNumber = int(input('1.구매, 2.종료'))
if selectNumber == 1:
goodsPirce = int(input('상품 가격 입력 : '))
gs.append(goodsPirce)
elif selectNumber == 2:
result = dc.calculatorTotalPrice(gs)
flag = False
print(f'할인율 : {result[0]}%')
print(f'합계 : {dc.formatNumber(result[1])}원')
모듈파일
def calculatorTotalPrice(gs):
if len(gs) <= 0:
print('구매 상품이 없습니다.')
return
rate = 25 # 할인율 최대값 5개 이상은 모두 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 formatNumber(n):
return format(n, ',')
꼭 복습해볼 것 아직 오류 남
- 로또 모듈을 만들고 다음과 같이 로또 결과가 출력될 수 있도록 프로그램을 만들어보자.
실행파일
import lotto as lt
lt.startlotto() # starlotto를 실행하면 모두 실행된다
모듈파일
# 난수로 7개 뽑기 (보너스 숫자 포함)
import random
userNums = []
randNums = []
collNums = [] # 사용자와 기계가 몇개 맞는지 숫자 넣는 곳
def setUserNums(ns): # userNums에 숫자 담는 함수
global userNums
userNums = ns
def getUserNums():
return userNums
def setRandNums():
global randNums
randNums = random.sample(range(1, 46), 6) # 1~45 숫자중 6개 뽑아냄
def setBonuNum(): # 보너스 숫자
global randBonuNum
while True:
randBonuNum = random.randint(1, 45)
if randBonuNum not in randNums:
break
def getBonuNum():
return randBonuNum
def lottoResult():
global userNums
global randNums
global collNums
collNums = []
for un in userNums: # userNums에서 숫자를 꺼내와서
if un in randNums: # un이 randNums에 있으면
collNums.append(un) # collNums에 넣어줌
if len(collNums) == 6: # 일치하는 번호가 6개면
print('1등 당첨!!')
print(f'번호 : {collNums}')
elif (len(collNums) == 5) and (randBonuNum in userNums): # 2등
print('2등 당첨!!')
print(f'번호 : {collNums}, 보너스 번호 : {randBonuNum}')
elif len(collNums) == 5: # 2등과 조건 다른것 잘 확인!!
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'보너스 번호 : {randBonuNum}')
print(f'선택 번호 : {userNums}')
print(f'일치 번호 : {collNums}')
def startlotto():
n1 = input('번호(1~45) 입력 : ')
n2 = input('번호(1~45) 입력 : ')
n3 = input('번호(1~45) 입력 : ')
n4 = input('번호(1~45) 입력 : ')
n5 = input('번호(1~45) 입력 : ')
n6 = input('번호(1~45) 입력 : ')
selectNums = [n1, n2, n3, n4, n5, n6]
setUserNums(selectNums)
setRandNums()
setBonuNum()
lottoResult()
- 순열 계산 모듈을 만들고 다음 순열 계산 결과를 출력해 보자.
실행파일
import permu as pt
# numN = int(input('numN 입력 : '))
# numR = int(input('numR 입력 : '))
# print(f'{numN}P{numR} : {pt.getPermutationCnt(numN, numR, logPrint = False)}')
listVar = [1, 2, 3, 4, 5, 6, 7, 8]
rVar = 3
pt.getPermutations(listVar, rVar)
모듈파일
# def getPermutationCnt(n, r, logPrint = True):
# 수학적 공식을 사용한 방법
# result = 1
# for n in range(n, (n-r), -1): # n에서 n-r까지
# if logPrint : print('n:{}'.format(n))
# result = result * n
#
# return result
# 모듈을 사용한 방법
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 =', ')
이 글은 제로베이스 데이터 취업 스쿨의 강의자료 일부를 발췌하여 작성되었습니다.