[파이썬] 중급 문제풀이 (2)

greta·2023년 5월 12일
0

1. 모듈 - 합격 여부 출력

(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)

2. 모듈 - 상품 구매

(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])}원')

3. 모듈 - 로또 머신

사용자 입력값 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()

4. 모듈 - 순열 계산 모듈

(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)}')

5. 모듈 - 조합 계산 모듈

(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)}')

6. 모듈 - 공과금 계산기

(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()}%')

7. 모듈 - 연산 패키지와 모듈

🎅오늘의 한마디

문제풀이지만 반복적인 setter, getter 등 설정하는 것이 뭐랄까... 조금은 지루하기도 했지만 이런 한땀 한땀이 모여 프로그램이 되는 거겠지. 열심히 해보자.

0개의 댓글