0416 파이썬 중급 6일차(~52)

박영선·2023년 4월 16일
0

모듈 연습문제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)}')

profile
데이터분석 공부 시작했습니다

0개의 댓글