def sequenceCal(n1, r, n):
valueN = 0
sumN = 0
i = 1
while i <= inputN:
if i == 1:
valueN = n1
sumN += valueN
print('{}번째 항의 값: {}'.format(i, valueN))
print('{}번째 항까지의 합: {}'.format(i,sumN))
i += 1
continue
valueN *= r
sumN += valueN
print('{}번째 항의 값: {}'.format(i, valueN))
print('{}번째 항까지의 합: {}'.format(i, sumN))
i += 1
def sequenceCal01(n1, r, n):
valueN = n1 * (r ** (n-1))
print('{}번째 항의 값: {}'.format(n, valueN))
sumN = n1 * (1 - (r**n)) / (1 - r)
print('{}번째 항까지의 합: {}'.format(n, int(sumN)))
inputN1 = int(input('a1 입력: '))
inputR = int(input('공비 입력: '))
inputN = int(input('n 입력: '))
sequenceCal(inputN1, inputR, inputN)
===================================================
a1 입력: 2
공비 입력: 3
n 입력: 5
1번째 항의 값: 2
1번째 항까지의 합: 2
2번째 항의 값: 6
2번째 항까지의 합: 8
3번째 항의 값: 18
3번째 항까지의 합: 26
4번째 항의 값: 54
4번째 항까지의 합: 80
5번째 항의 값: 162
5번째 항까지의 합: 242
passOrFail.py
def examResult(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()
-------------------------------------------------------
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.examResult(sub1, sub2, sub3, sub4, sub5)
=======================================================
과목1 점수 입력: 30
과목2 점수 입력: 15
과목3 점수 입력: 100
과목4 점수 입력: 100
과목5 점수 입력: 100
총점: 345
평균: 69.0
30: Fail!
15: Fail!
100: Pass!
100: Pass!
100: Pass!
총점: 345
평균: 69.0
Final Fail!
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, ',')
--------------------------------------------------------
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) #구매한 상품의 가격을 리스트 gs에 추가
elif selectNumber == 2:
result = dc.calculatorTotalPrice(gs)
flag = False
print(f'할인율: {result[0]}%')
print(f'합계: {dc.formatedNumber(result[1])}원')
====================================================================
상품을 구매하시겠어요? 1.구매 2.종료 입력: 1
상품 가격 입력: 10000
상품을 구매하시겠어요? 1.구매 2.종료 입력: 1
상품 가격 입력: 1500
상품을 구매하시겠어요? 1.구매 2.종료 입력: 1
상품 가격 입력: 26000
상품을 구매하시겠어요? 1.구매 2.종료 입력: 1
상품 가격 입력: 9870
상품을 구매하시겠어요? 1.구매 2.종료 입력: 2
할인율: 20%
합계: 37,896원
lotto.py
import random
userNums = []; randNums = []; collNums = []
randBonuNum = 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 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:
if un in randNums:
collNums.append(un)
if len(collNums) == 6:
print(f'1등 담첨!!')
print(f'번호: {collNums}')
elif (len(collNums) == 5) and (randBonuNum in userNums):
print(f'2등 담첨!!')
print(f'번호: {collNums}, 보너스 번호: {randBonuNum}')
elif len(collNums) == 5:
print(f'3등 담첨!!')
print(f'번호: {collNums}')
elif len(collNums) == 4:
print(f'4등 담첨!!')
print(f'번호: {collNums}')
if len(collNums) == 3:
print(f'5등 담첨!!')
print(f'번호: {collNums}')
else:
print('아쉽습니다. 다음 기회에~')
print(f'기계 번호: {randNums}')
print(f'보너스 번호: {randBonuNum}')
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()
setBonuNum()
lottoResult()
--------------------------------------------------
import lotto as lt
lt.startLotto()
=======================
번호(1~45) 입력: 2
번호(1~45) 입력: 8
번호(1~45) 입력: 16
번호(1~45) 입력: 18
번호(1~45) 입력: 32
번호(1~45) 입력: 34
아쉽습니다. 다음 기회에~
기계 번호: [19, 29, 13, 36, 37, 1]
보너스 번호: 10
선택 번호: [2, 8, 16, 18, 32, 34]
일치 번호: []

permutaion.py
def getPermutaionCnt(n, r):
result = 1
for n in range(n, (n-r), -1):
result = result * n
return result
--------------------------------------------------------
import permutaion as pt
numN = int(input('numN 입력: '))
numR = int(input('numR 입력: '))
print(f'{numN}P{numR}: {pt.getPermutaionCnt(numN, numR)}')
=================================================================
numN 입력: 7
numR 입력: 5
7P5: 2520

combination.py
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 combination as ct
numN = int(input('numN 입력: '))
numR = int(input('numR 입력: '))
print(f'{numN}C{numR}: {ct.getCombinationCnt(numN, numR)}')
setIncome(ic) 함수:
이 함수는 매개변수 ic를 받아서 전역 변수 income에 해당 값을 할당하는 역할
예를 들어, setIncome(50000)을 호출하면 전역 변수 income은 50000으로 설정됨
getIncome() 함수:
이 함수는 전역 변수 income의 값을 반환하는 역할
예를 들어, getIncome()을 호출하면 전역 변수 income의 현재 값이 반환
[예]
setIncome(50000) # income 변수에 50000을 설정
print(getIncome()) # 50000을 출력
utilityBill.py
income = 0
waterPrice = 0; electricPrice = 0; gasPrice = 0
def setIncome(ic):
global income #global은 전역변수라 함수외에서도 유효! > 전역변수 강의 다시보기
income = ic
def getIncome():
return income
def setWaterPrice(wp):
global waterPrice
waterPrice = wp
def setElectricPrice(ep):
global electricPrice
electricPrice = ep
def setGasPrice(gp):
global gasPrice
gasPrice = gp
def getUtilityBill():
result = waterPrice + electricPrice + gasPrice
return result
def getUtilityBillRate():
result = getUtilityBill() / getIncome() * 100
return round(result, 2)
def formatedNumber(n):
return format(n, ',')
----------------------------------------------------------
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.formatedNumber(ub.getUtilityBill())}원')
print(f'수입 대비 공과금 비율: {ub.getUtilityBillRate()}%')
==================================================================
수입 입력: 3000000
수도요금 입력: 15000
전기요금 입력: 17500
가스요금 입력: 125000
공과금: 157,500원
수입 대비 공과금 비율: 5.25%

basic_operator.py
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)
--------------------------------
developer_operator.py
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)
--------------------------------
circle_area.py
def calCircleArea(r):
return round(r ** 2 * 3.14, 2)
-------------------------------------
triangle_square_area.py
def calTriangleArea(w, h):
return round(w * h / 2, 2)
def calSquareArea(w, h):
return round(w * h, 2)
-----------------------------------------
from arithmetic import basic_operator as bo #arithmetic 패키지에서 불러왕
from arithmetic import developer_oerator as do
from shape import triangle_square_area as tsa #shape 패키지에서 불러왕
from shape import circle_area as ca
inputNumber1 = float(input('숫자1 입력: '))
inputNumber2 = float(input('숫자2 입력: '))
print(f'{inputNumber1} + {inputNumber2} = {bo.add(inputNumber1, inputNumber2)}')
print(f'{inputNumber1} - {inputNumber2} = {bo.sub(inputNumber1, inputNumber2)}')
print(f'{inputNumber1} * {inputNumber2} = {bo.mul(inputNumber1, inputNumber2)}')
print(f'{inputNumber1} / {inputNumber2} = {bo.div(inputNumber1, inputNumber2)}')
print(f'{inputNumber1} % {inputNumber2} = {do.mod(inputNumber1, inputNumber2)}')
print(f'{inputNumber1} // {inputNumber2} = {do.flo(inputNumber1, inputNumber2)}')
print(f'{inputNumber1} ** {inputNumber2} = {do.exp(inputNumber1, inputNumber2)}')
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)}')
====================================================================
from arithmetic import basic_operator as bo
from arithmetic import developer_oerator as do
from shape import triangle_square_area as tsa
from shape import circle_area as ca
inputNumber1 = float(input('숫자1 입력: '))
inputNumber2 = float(input('숫자2 입력: '))
print(f'{inputNumber1} + {inputNumber2} = {bo.add(inputNumber1, inputNumber2)}')
print(f'{inputNumber1} - {inputNumber2} = {bo.sub(inputNumber1, inputNumber2)}')
print(f'{inputNumber1} * {inputNumber2} = {bo.mul(inputNumber1, inputNumber2)}')
print(f'{inputNumber1} / {inputNumber2} = {bo.div(inputNumber1, inputNumber2)}')
print(f'{inputNumber1} % {inputNumber2} = {do.mod(inputNumber1, inputNumber2)}')
print(f'{inputNumber1} // {inputNumber2} = {do.flo(inputNumber1, inputNumber2)}')
print(f'{inputNumber1} ** {inputNumber2} = {do.exp(inputNumber1, inputNumber2)}')
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)}')
이 글은 제로베이스 데이터 분석 스쿨의 강의 자료 일부를 발췌하여 작성되었습니다.
연습문제를 따라하기 어려워서 따라만하다 이제야 조금씩 코드한줄, 한줄의 의미를 이해해간다..!
문제만 보고 바로 코드를 생각해내진 못하지만 해설의 의미도 모르다가 조금씩 해석이 되니 점점 재밌어진다. 아직도 어려운게 많지만 이론으로 접하던 개념을 문제를 풀며 해석하니 앞선 수업 내용관 연결되어 재밌어지는것같다. 앞으로 남은건 문제를 보자마자 어떤 코드로 풀어봐야될지 바로 떠오를 수 있게 연습하자!
한 문제당 시간이 많이 걸리지만 익숙해지면 빨라질거야..!💡